3

在计算机体系结构中,阿姆达尔定律给出了在固定工作负载下执行任务的延迟的理论加速,这是资源得到改善的系统所期望的。

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

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

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

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

这都是理论上的,它让我思考,什么时候不适用。估计 CPU 性能的准确度如何?

4

1 回答 1

3

通常,当您想要调整程序的某些部分时,您会制作一个微基准测试来单独测试它。

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

例如,如果您发现sin(x)计算成本很高,并用查找表替换它们,这可能会在微基准测试中获胜,因为足够小的表在背靠背调用时会在缓存中保持热状态,而两者之间没有其他工作。类似地,微基准测试在使用分支预测的情况下测量性能,并且没有代码缓存压力(这可以使循环展开看起来比实际更好)。

但这只是意味着您对s作为整个程序一部分的函数的估计是错误的,并不是说阿姆达尔定律不准确。那只是使用错误的情况。


但是,这确实可以真正回答您的问题:

以导致程序其他部分出现更多缓存或 TLB 未命中、分支错误预测等的方式加速程序的某个部分确实违反了阿姆达尔定律。

于 2016-11-25T22:56:19.580 回答