【发布时间】:2015-05-22 17:16:01
【问题描述】:
这不是家庭作业。我正在利用自己的时间参加计算机体系结构 MOOC。有一个问题我无法弄清楚,也许有人可以帮助我。 这里是:
内存操作目前占用 30% 的执行时间。
- 称为“缓存”的新小部件将 80% 的内存操作速度提高了 4 倍。
- 称为“L2 缓存”的第二个新 widger 将剩余 20% 的 1/2 速度提高了 2 倍。
总加速比是多少?
这是用于计算加速比的公式:
加速 = 1 / [(1 - 非加速部分) + (加速部分 1)/speedup1 + (加速部分 2)/speedup2 + ...]
我是这样计算的:
Speedup = 1 / [0.7 + 0.3*0.8/4 + 0.3*0.2*0.5/2 + 0.3*0.2*0.5] = 1.2422
但答案是错误的,这表明我的推理是错误的,但我不知道哪里错了。有人可以帮帮我吗?
谢谢。
【问题讨论】:
-
我的猜测是,相对于未优化的新运行时是通过以下方式计算的:
0.8 * 0.25 + 0.2 * 0.5 = 0.3所以你的代码以原始时间的 30% 运行。 -
@BitTickler 你能详细说明一下吗,我不太清楚你想说什么。
-
对于未优化的代码,我的模型公式将为 1.0(100% 的代码)* 1.0(100% 的速度)。将其拆分为 80/20 如下所示:
0.8 * 1.0 + 0.2 * 1.0 = 1.0。现在你只需要 0.8 部分的 1/4 和 0.2 部分的 1/2 时间,你就得到了我上面的公式。 -
@BitTickler 我已经尝试过这种方法。它告诉我这是一个错误的答案。
-
根据您发布的答案,我已投票决定将此作为离题关闭,因为它无法复制或者是错字。 (在这种情况下,只是小数位数过多导致的错误。)
标签: performance computer-architecture