【问题标题】:How to calculate effective CPI for a 3 level cache如何计算 3 级缓存的有效 CPI
【发布时间】:2013-12-10 14:17:46
【问题描述】:

我在作业问题上无可救药地陷入困境,我希望得到一些帮助以更好地理解它。这是我得到的:

  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 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 让我感到困惑。

【问题讨论】:

标签: caching architecture cpu-architecture cpu-cache hit


【解决方案1】:

如果是这样的话: 对于二级缓存,有效的 CPI 为:

CPi= CPI(正常)+MissRAteL1*MissPenaltyL2+GlobalMissRAte*TotalMissPenalty

那么对于三级缓存它可能是:

CPI=CPI+MissRateL1*MissPenaltyL2+(MISSRATEL2/MissRateL1)(MissPEnaltyL1+MissPEnaltyL2)+GlobalMissRate(MissPEnaltyL1+MissPEnaltyL2+MissPEnaltyL3)

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

【讨论】:

    【解决方案2】:

    从不同的方向考虑可能会有所帮助。如果我们假设我们要执行 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 个时钟?也许这就是本地/全球之间的区别?

    【讨论】:

    • 首先,感谢您的回复。我做了一些类似于你最初建议的事情。再次和我的教授交谈后,他说我的公式是正确的。我认为我的问题在于未命中的处罚。如果我正确地阅读了您的帖子,那也是您想要展示的内容。回到处理一些数字。
    【解决方案3】:
    • 大家好,我也在 242,我也不知道这是否正确,但是 这就是我得到的..

      主要未命中惩罚 = 150ns/(1/2) = 300 个周期。 L2 未命中 = 15 ns/(1/2) = 30 个周期。 L3 未命中 = 30 ns/(1/2)= 60 个周期。

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

    【讨论】:

      【解决方案4】:

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

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

      他的回答是 L1 和 L3 是正确的,但我必须考虑 L2 的本地未命中率。还不知道这意味着什么,但希望这些小信息对您有所帮助

      【讨论】:

        【解决方案5】:

        WCU 问题,对吧?我有同样的班级。

        检查 D2L。提供的完整第 5 章 pdf 第 18-20 页。所需的教科书计算机组织与设计对这类问题进行了非常详细的介绍。乍一看,我认为您可能正在执行一些不正确的操作。正确的数字...错误的操作。我自己正在解决这个问题。如果我找到答案,我会在这里发帖

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 2013-12-27
            • 2020-04-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-02-25
            • 2013-11-20
            相关资源
            最近更新 更多