1

在给定基本 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 未命中率 %,因为 L2 未命中只会在 L1 未命中后发生?

4

2 回答 2

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. 硬件预取

但是这些通常在简单的计算中被忽略(并且您不知道修改行的百分比,因此您无法推断出您将拥有多少回写)。

还有一点需要注意——这不是真的The CPI of the cache,缓存本身不执行指令或关心它们的时序。正确的术语是 - The effect of the cache (or any other feature) on the overall CPI of the processor

于 2013-11-12T00:01:06.760 回答
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)
于 2013-12-16T18:53:03.167 回答