use*_*107 5 architecture hit caching cpu-architecture cpu-cache
我绝望地陷入了家庭作业问题,我希望能帮助你更好地理解它.这是我给的:
什么是有效的CPI?
据我所知,我需要计算每个缓存级别的未命中罚分.
现在我需要计算有效CPI.这是我有点困惑的地方.
我相信公式应该是:
CPI = BaseCPI +(%L1 MR/Instr*L1 Miss Misalty)+(%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会让我感到困惑.
从不同的方向思考可能会有所帮助。如果我们假设要执行 1,000,000 条指令,考虑到主缓存命中率,其中 93% 会命中,并且只需要 2CPI。7% 或 70,000 需要达到较低的缓存级别。在这 70,000 个中,70% (49,000) 将在 L2 中命中并需要 15ns(或 30CPI)。剩下 21,000 个需要来自 L3 或更低级别。97% (20370) 将达到 L3 并需要 60CPI。其余 630 个需要以 300CPI 进行内存访问。
因此,整个堆的总时钟为 930,000 * 2 + 49,000 * 30 + 20370 * 60 + 630 * 300,总共 4,741,200,在指令数为 1,000,000 的情况下,有效 CPI 为 4.7412。
这可能仍然不正确,因为我不完全确定在这个特定问题中全局/局部失误率之间的区别是什么,以及如何在这里应用它,但这至少显示了一种不同的方法来帮助理解这个问题。例如,它还假设 L2 中 60 个时钟的未命中惩罚是全部惩罚 - 换句话说,在主和 L2 中未命中并且必须从 L3 获取的访问是否只需要 60 个时钟,或者是否需要 60 个时钟时钟将其从 L3 获取到 L2,然后额外的 30 个时钟将其从 L2 获取到主时钟,然后是通常的 2 个时钟,在 L2 未命中时总共需要 92 个时钟?也许这就是本地/全球之间的区别?
归档时间: |
|
查看次数: |
9371 次 |
最近记录: |