(a)您将获得一个具有两级缓存(L1和L2)的内存系统。以下是规格:
给定具有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缓存。请考虑以下事项:
对于相同的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的未命中罚款,但我不确定。
答案 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访问,可以是命中或未命中。尝试自己完成练习。