如何根据给定的基本CPI,L1和L2高速缓存的未命中率%以及L1,L2和内存的访问时间来计算L1和L2高速缓存对处理器总体CPI的影响
要查找L1缓存的CPI,您可以使用:
CPI = BaseCPI + (% of L1 Miss x Memory Access Time)
所以我想,对于L2,它会是这样的:
CPI = BaseCPI + (% of L1 Miss x L2 Access Time) + ( % which I am confused about x Memory Access time)
如何才能找到第二个百分比?
我知道这与L2的未命中率%有关,但有必要乘以L1 Miss Rate%,因为L2 Miss只会在L1未命中后发生吗?
答案 0 :(得分:1)
是的,L2的未命中率表示总L2访问中未命中的百分比。 L2访问总数是内存访问总数* L1的未命中率。
所以,你的计算应该是 -
CPI = BaseCPI + (% of L1 Miss x L2 Access Time) + ( %L1 miss rate x % L2 miss rate x Memory Access time)
或更方便:
CPI = BaseCPI + (% of L1 Miss x (L2 Access Time + (%L2 miss rate x Memory Access time)))
这也不是很准确 - 你没有指定内存操作的速率,上面假设每条指令都要查找缓存,这有点夸张。如果你在程序中有加载/存储率,你也必须考虑它。
顺便说一句,在现实世界中,您还需要将以下内容添加到L2访问总数中:
但是这些通常在简单的计算中被忽略(因为你不知道修改行的百分比,所以你不能推断出你有多少回写)。
还有一个注意事项 - 它不是The CPI of the cache
,缓存本身不执行指令或关心其时序。适当的术语是 - The effect of the cache (or any other feature) on the overall CPI of the processor
。
答案 1 :(得分:0)
我认为您没有考虑每条指令的平均内存访问次数(AMAPI)。
例如,如果有30%的加载/存储指令,则该数字为1.3(一次访问获取指令,0.3由于存储器访问指令)
所以
CPI = BaseCPI + (AMAT - ideal memory access time) x AMAPI
将AMAT作为平均内存访问时间。对于两级层次结构:
AMAT = L1_hit_latency + L1_miss_rate x (L2_hit_latency + L2_miss_rate x Main_Memory_latency)