阿达尔定律有多准确?

在计算机体系结构中,Amdahl定律给出了在资源得到改善的系统中可以预期的固定工作负载下执行任务的等待时间的理论加速。

延迟是整个任务执行延迟的理论加速;

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

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

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

这是全部的理论,它让我思考什么时候不适用。 估计CPU性能有多准确?

通常当你想调整某个程序的某个部分时,你需要制定一个微观基准来进行单独测试。

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

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

但这只是意味着你对这个功能的估计是错误的,而不是Amdahl的定律是不准确的。 这只是一个错误的使用情况。


但是,这确实会导致对您的问题的真实答案:

在程序的其他部分加速某个程序的某个部分,导致更多的缓存或TLB未命中,分支预测错误等等,这确实违反了Amdahl的法律。