我无可救药地陷入了家庭作业问题,我希望得到一些帮助以更好地理解它。这是我得到的:
- CPU 基础 CPI = 2,时钟频率 = 2GHz
- 主缓存,未命中率/指令 = 7%
- L-2 缓存访问时间 = 15ns
- L-2 缓存,本地未命中率/指令 = 30%
- L-3 缓存访问时间 = 30ns
- L-3 Cache,全局未命中率/指令 = 3%,主存访问时间 = 150ns
什么是有效CPI?
据我了解,我需要计算每个缓存级别的未命中惩罚。
- L1 未命中惩罚 = L2 的访问时间 = 15ns / (1ns/2cc) = 30 个时钟周期
- L2 未命中惩罚 = L3 的访问时间 = 30ns / (1ns/2cc) = 60 个时钟周期
- L3 未命中惩罚 = MM 的访问时间 = 150ns / (1ns/2cc) = 300 个时钟周期
现在我需要计算有效的CPI。这是我有点困惑的地方。
我认为公式应该是:
CPI = BaseCPI + (%L1 MR/Instr * L1 Miss Penalty) + (%L1 MR/Instr * %L2 MR/Instr * L2 Miss Penalty) + (%Global MR/Instr * L3 Miss Penalty)
如果我这样做,我会得到
CPI = 2.0 + (0.07 * 30) + (0.07 * 0.3 * 60) + (0.03 * 300) = 14.36
在给我的导师发电子邮件后,因为班上没有人理解全球和本地的 1-2 分钟解释,我被告知我的答案很接近,但错误。如果有人可以提供一些见解,甚至可以为我提供一个好的教程,我将不胜感激。我可以理解如何计算 1 级和 2 级缓存的有效CPI。跳到 3 让我感到困惑。