L1 Cache平均访存时间AMAT计算及参数使用疑问
计算结果校验与错误说明
(a) 指令Cache AMAT计算
你的(a)计算结果正确。
指令Cache为只读存储,不存在脏块写回问题,直接套用AMAT标准公式即可:AMAT = 命中时间 + 缺失率 × 缺失代价
代入参数计算:2ns + 0.01 × 40ns = 2.4ns,结果无误。
(b) 数据Cache AMAT计算
你的(b)计算存在两处错误,结果不对:
- 第一处是概念混淆:数据Cache的AMAT统计的是**单次数据访问(即单次load/store操作触发的Cache访问)**的平均耗时,不需要乘load/store指令占总指令的20%比例。这个20%的参数是用来计算整程序单指令平均访存开销、或者实际运行CPI的,不属于数据Cache本身AMAT的计算参数。
- 第二处是遗漏了写回策略的脏块开销:题目明确L1是写回策略,给出的40ns是单次主存读写的耗时。当Cache发生缺失需要替换块时,如果被替换的是脏块,必须先花40ns把脏块写回主存,再花40ns把需要的块从主存读入Cache,这类场景的缺失总耗时是80ns;如果替换的是干净块,只需要花40ns读入新块即可。
结合题目给的40%脏块占比,先算数据Cache的平均缺失代价:平均缺失代价 = (1-0.4)*40ns + 0.4*(40ns+40ns) = 56ns
再代入AMAT公式计算:数据Cache AMAT = 2ns + 0.05 * 56ns = 4.8ns
未使用参数说明
你提到的参数里,500MHz时钟频率、Base CPI=1确实不需要在本题使用,不属于遗漏:这两个参数是用来计算程序总执行时间、实际运行CPI的,本题只需要计算以ns为单位的AMAT,不需要做时间和时钟周期的换算,也不需要结合基础指令执行效率计算,因此用不上。
而脏块占比参数你确实漏用了,它直接影响写回策略下的平均缺失代价,是计算数据Cache AMAT的必要参数。
内容的提问来源于stack exchange,提问作者smrmaak
相关产品推荐
相关产品推荐

