【发布时间】:2013-09-08 17:05:00
【问题描述】:
我正在阅读“计算机体系结构:定量方法第 5 版”,并试图掌握阿姆达尔定律,当涉及到加速系统的某些部分时,即将系统的某个百分比加速某个百分比。当您谈论通过某个因素(例如)加速系统时,很容易理解。一个快 10 倍的系统。
举个具体的例子:
您有一个系统,其中某个子系统占执行时间的 70%,您希望开发一个加速器,将这个子系统的延迟降低 50%。
从书中,阿姆达尔定律被列为:
SpeedupOverall = 1/((1-FractionEnhanced)+(FractionEnhanced/SpeedupEnhanced))
我从分数增强(“原始计算机中可以转换为利用增强的计算时间的分数”)的解释中得出:FractionEnhanced = 70% 或 0.7。
我的问题是如何反映加速。书中将其列为“增强执行模式所获得的改进,即如果将增强模式用于整个程序,任务将运行多快”。书上说这将是原始模式超过改进时间的时间;在这种情况下为 70/50,或 1.4。然而,我的困惑在于这个website,通过检查java小程序代码,似乎加速增强将是1 +加速百分比,或1.5。也许我也想多了,但我也在想它怎么可能是 .7/(0.7 - 0.7*0.5) 或 2(因为,就实际而言,70%*50% 是实际的延迟减少子系统,对吧?)。
通过数学运算,我们得到以下答案:
对于 SpeedupEnhanced = 70/50 = 1.4:SpeedupOverall = 1/((1-0.7)+ .7/1.4) = 1.25
对于 SpeedupEnhanced = 1+0.5 = 1.5:SpeedupOverall = 1/((1-0.7)+ .7/1.5) = 1.3043
对于 SpeedupEnhanced = 0.7/(0.7-0.7*0.5) = 2:SpeedupOverall = 1/((1-0.7)+.7/2) = 1.54
这里哪一个是正确的加速?第二个对我来说似乎很有意义,但是这本书似乎暗示第一个是正确的。任何关于如何掌握这种加速的参考或解释的帮助将不胜感激。
【问题讨论】:
标签: performance math computer-science computer-architecture parallelism-amdahl