设某计算机采用指令和数据合一的Cache结构,Cache的访问时间为20ns,主存访问时间为100ns。Cache的指令命中率为98%,数据命中率为95%。在程序执行过程中,平均每5条指令中有1条需要访问一次数据。假设系统采用非阻塞流水线,不考虑写操作的延迟,问设置Cache后,平均访问时间约为(__)。
Cache平均访问时间是评估Cache性能的核心指标,计算核心为不同访问场景的时间加权求和。对于指令数据合一的Cache,需分别计算指令流与数据流的平均访问时间,再结合程序中每条指令的平均数据访问占比得到总时间;若为指令数据分离的哈佛结构Cache,则分别计算指令、数据Cache的平均时间后组合。命中时仅消耗Cache访问时间,未命中场景需区分架构:非阻塞架构且忽略回填延迟时直接取主存访问时间,阻塞架构一般需累加Cache与主存访问时间。命中率是关键影响因子,指令、数据命中率受Cache容量、相联度、程序访问局部性等因素影响,命中率越高,平均访问时间越接近Cache的低延迟,缓解存储墙的效果越显著,实际系统中可通过优化Cache结构、增强程序访问局部性等方式提升命中率,进一步降低整体访问延迟。
本题考察的是Cache 平均访问时间(Effective Access Time,EAT)的计算。
命中时,访问完全发生在 Cache 中,用时 20 ns;未命中时,处理器直接到主存读取,用时 100 ns(忽略回填/写回带来的额外 20 ns,因此 miss 不再累加 Cache 时间)。
取数指令既要考虑指令命中,又要考虑数据命中。
据此:
指令流平均取指时间(纯指令+取数指令)=0.98 × 20 + 0.02 × 100 = 21.6 ns
数据流平均取数时间=0.95 × 20 + 0.05 × 100 = 24 ns
每条指令只有 20 % 需要一次数据访问,所以其平均数据代价是 0.2 × 24 = 4.8 ns。
将两部分相加得到总平均访问时间:21.6(指令平均访问时间) + 4.8(数据平均访问时间) = 26.4 ns,对应选项 A。
