如何计算三级缓存的有效CPI

5
我被一道作业问题难住了,希望能得到更好的理解和帮助。以下是题目内容:
  1. CPU基准CPI = 2,时钟频率 = 2GHz
  2. 一级缓存,指令缺失率=7%
  3. L-2缓存访问时间=15ns
  4. L-2缓存,本地缺失率/指令=30%
  5. L-3缓存访问时间=30ns
  6. 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级缓存的跨越,让我困惑了。


1
相关讨论:http://stackoverflow.com/questions/20483999/calculating-actual-effective-cpi-for-3-level-cache/20617511 - chus
6个回答

1

如果是这样的情况:

对于两级缓存,有效CPI为:

CPI = 普通CPI + L1缺失率 x L2缺失惩罚 + 全局缺失率 x 总缺失惩罚

那么对于三级缓存,它可能是这样的:

CPI = CPI + L1缺失率 x L2缺失惩罚 + (L2缺失率 / L1缺失率) x (L1缺失惩罚 + L2缺失惩罚) + 全局缺失率 x (L1缺失惩罚 + L2缺失惩罚 + L3缺失惩罚)

CPI = 2 + 7% x 60 + (7% / 30%) x (60 + 30) + 3% x (300 + 60 + 90)...


0

从另一个角度思考可能会有所帮助。如果我们假设要执行1,000,000条指令,根据您的一级高速缓存命中率,其中93%会命中并且只需要2CPI。7%或70,000个将需要命中较低的缓存级别。其中70%(49,000个)将在L2中命中,并需要15ns(或30CPI)。那就剩下21,000个需要来自L3或更低级别的数据。其中97%(20,370个)将在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个时钟,总共92个时钟在L2缺失上?也许这就是本地/全局之间的区别?


首先,感谢您的回复。我一开始做了与您建议类似的事情。再次与我的教授交谈后,他说我的公式是正确的。我认为我的问题在于错失惩罚。如果我正确地阅读了您的帖子,那就是您也试图展示的内容。现在回到计算一些数字。 - user2990107

0
  • 大家好,我也在242,我不知道这是否正确,但这是我得到的结果。

    主要的失效惩罚= 150纳秒/(1/2)= 300个周期。L2失效= 15纳秒/(1/2)= 30个周期。L3失效= 30纳秒/(1/2)= 60个周期。

    所以CPI = 2 +(.07 * 300)+(.07 * .3 * 30)+(.03 * 60)= 25.43


0

嘿,所以我给他发了电子邮件询问这个解决方案

有效CPI = 2.0 + .07 x 30 + .30 x 60 + .03 x 300 = 31.1

他的回答是L1和L3是正确的,但是我还要考虑L2的本地缺失率。还不太清楚这是什么意思,但希望这些小信息能有所帮助


-1

WCU问题,对吧?我上了同样的课。

请检查D2L。提供的完整第5章PDF文件的第18-20页。所需的教材《计算机组成与设计》详细介绍了这些类型的问题。从快速浏览中,我认为您可能执行了一些不正确的操作。数字是正确的...但操作错误了。我正在解决这个问题。如果我找到答案,我会在这里发布。


-1
和教授交谈后,他说这个公式是正确的,但告诉我他不能告诉我答案是否正确。他似乎在暗示它是正确的,但这可能只是语言障碍的误解。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接