- CPU基准CPI = 2,时钟频率 = 2GHz
- 一级缓存,指令缺失率=7%
- L-2缓存访问时间=15ns
- L-2缓存,本地缺失率/指令=30%
- L-3缓存访问时间=30ns
- L-3缓存,全局缺失率/指令=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缺失惩罚) + (%L1 MR/Instr * %L2 MR/Instr * L2缺失惩罚) + (%全局MR/Instr * L3缺失惩罚)
如果我这样做,得到的结果是
CPI = 2.0 + (0.07 * 30) + (0.07 * 0.3 * 60) + (0.03 * 300) = 14.36
在给我的教练发了电子邮件之后,因为班上没有人理解全局和本地的1-2分钟解释,我被告知我的答案接近但是不正确。如果有人能提供一些见解,或者甚至指向一个好的教程,我将感激不尽。我能理解如何计算1级和2级缓存的有效CPI。但是对于3级缓存的跨越,让我困惑了。