计算缓存对处理器总体CPI的影响

时间:2013-11-11 23:47:02

标签: performance caching

如何根据给定的基本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未命中后发生吗?

2 个答案:

答案 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访问总数中:

  1. L1回写
  2. 代码读取,如果来自单独的指令L1
  3. HW预取
  4. 但是这些通常在简单的计算中被忽略(因为你不知道修改行的百分比,所以你不能推断出你有多少回写)。

    还有一个注意事项 - 它不是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)