3

在计算机体系结构中,Amdahl定律给出了在固定工作负载下执行任务所需的等待时间的理论加速,这可以期待系统的资源得到改善。amdahl法则有多准确?

Slatency是在整个任务的执行的等待时间的理论加速;

s是从系统资源的改进中受益的部分任务的执行延迟的加速;

p是整个任务在改进之前从系统资源的改进中受益的部分的执行时间的百分比。

Slatency = 1/[(1-p) + (p/s)]

这是所有的理论,它迫使我思考,当是不适用的。估计CPU性能有多准确?

回答

3

通常,当您想调整某个程序的某个部分时,您需要创建一个微基准测试来独立测试。

这并不总是反映它作为完整程序的一部分运行时的行为方式。 (即在执行调音的部分之间执行其他工作,而不是在紧密循环中)。

例如,如果您发现sin(x)的计算结果很昂贵,并将它们替换为查找表,那么可能会赢得一个微基准,因为当连续调用没有其他工作时,足够小的表在缓存中保持热度。类似地,微基准测试使用分支预测启动,并且没有代码缓存压力(这可以使循环展开看起来比现在好)测量性能。

但这只是意味着你对s的估计是错误的作为整个程序的一部分,而不是Amdahl的法则是不准确的。这只是一个错误的使用情况。


然而,这确实导致了一个真正的回答你的问题:

加快程序的一个部分,导致更多的缓存的方式或TLB缺失,分支预测失败等, 其他部分程序确实违反了Amdahl法律。

+0

谢谢队友。不知道估计's'是如此棘手。但它是有道理的。 –

+2

Amdalh定律是一种简单的数学关系,从这个意义上说它是可靠的 - 但它假设的底层性能模型(或者通常在教科书应用中假设)太简单了:程序可以平均分为两部分:一部分受到一些“资源提升”(可能同样是资源减少)和另一部分不受影响。在一个像现代主机这样一个非常复杂的系统中,通常没有这样的清晰分工:一个部分的变化会对其他部分产生任意的连锁效应,正如Peter解释的那样。 – BeeOnRope