计算3级缓存的实际/有效CPI

时间:2013-12-10 00:53:45

标签: caching cpu-architecture cpu-cache

(a)您将获得一个具有两级缓存(L1和L2)的内存系统。以下是规格:

  • L1缓存的命中时间:2个时钟周期
  • L1缓存的命中率:92%
  • 对L2缓存的惩罚(L2的命中时间):8个时钟周期
  • 二级缓存命中率:86%
  • 小姐对主内存的处罚:37个时钟周期
  • 假设主存的命中率为100%。

给定具有37%数据传输指令(加载/存储)的2000指令程序,计算此场景的CPI(每指令的时钟周期)。

For this part, I calculated it like this (am I doing this right?):

(m1: miss rate of L1, m2: miss rate of L2)

AMAT = HitTime_L1 + m1*(HitTime_L2 + m2*MissPenalty_L2)
CPI(actual) = CPI(ideal) + (AMAT - CPI(ideal))*AverageMemoryAccess

(b)现在让我们添加另一级缓存,即L2缓存和主内存之间的L3缓存。请考虑以下事项:

  • 错过对L3缓存的惩罚(L3缓存的命中时间):13个时钟周期
  • L3缓存的命中率:81%
  • 小姐对主内存的处罚:37个时钟周期
  • 其他规格仍为(a)部分

对于相同的2000指令程序(具有37%的数据传输指令),计算CPI。

(m1: miss rate of L1, m2: miss rate of L2, m3: miss rate of L3)

AMAT = HitTime_L1 
         + m1*(HitTime_L2 + m2*MissPenalty_L2)
           + m2*(HitTime_L3 + m3*MissPenalty_L3)

此公式是否正确?在此公式中,我在何处将未命中罚分添加到主内存中? 它应该加上L3的未命中罚款,但我不确定。

1 个答案:

答案 0 :(得分:-1)

(a)如果您注意到MissPenalty_L2参数是您对主内存的惩罚,则AMAT计算是正确的。

CPI有点困难。 首先,我们假设CPU没有流水线(顺序处理器)。

每条指令有1.37个存储器访问(一次访问获取指令,0.37由于数据传输指令)。理想情况是所有内存加入都在L1缓存中命中。 所以,知道:

CPI(ideal) = CPI(computation) + CPI(mem) = 
             CPI(computation) + Memory_Accesses_per_Instruction*HitTime_L1 =
             CPI(computation) + 1.37*HitTime_L1

对于实内存,平均内存访问时间为AMAT,因此:

CPI(actual) = CPI(computation) + Memory_Accesses_per_Instruction*AMAT =
              CPI(ideal) + Memory_Accesses_per_Instruction*(AMAT - HitTime_L1) =
              CPI(ideal) + 1.37*(AMAT - HitTime_L1)

(b)您的AMAT计算错误。在L2错过之后,它会跟随L3访问,可以是命中或未命中。尝试自己完成练习。