Amdhl定理描述:系统中某部件由于采用某种方式使系统性能改进后,整个系统性能的提高与该方式的使用频率或占总的执行时间的比例有关。
主要应用:改善“系统瓶颈”性能。
Amdahl定律定义了加速比:
加速比=采用改进措施后性能/未采用改进措施前的性能=未采用改进措施前执行某任务时间/采用改进措施后执行某任务的时间
n个处理器加速因子S=n/[1+(n-1)f]:f为非平行百分比,n越大,S不能超过1/f
阿姆达尔定律 不可并行计算的存在是很重要的,因为它将限制并行化的潜在好处。阿姆达尔定律指明如果一个计算的1/S本质上是顺序的,那么最大的性能改进将受限于因数S。其论证如下,一个并行计算的执行时间TP将是顺序部分计算时间和可并行化部分计算时间两者的和。如果该计算顺序地执行需要花费的时间是TS,则当有P个处理器时,TP可表示为S=n/[1+(n-1)f]
假想P值非常大,使得可并行化部分的执行时间可以忽略不计,则最大可改进的性能将是因数S。也就是说,顺序执行代码在计算中所占的比例决定了使用并行手段所能改进性能的潜力。
阿姆达尔定律是由IBM公司的计算机体系结构师吉恩·阿姆达尔在1967年发表的论文中提出的。这一定律与供求定律(Low of Supply and Demand)具有同样的意义:如前面的方程式所示,它描述了程序执行时间中两部分的关系。两个定律均是解释重要现象行为的有力工具,且两个定律都将影响该行为的其他参量视为常数。特别地,阿姆达尔定律适用于单程序场合。
实际的情况可能比阿姆达尔定律暗示的更坏。一个明摆着的问题是计算的可并行化部分可能无法改进到极致(即只要增加仍可继续改进性能的处理器数总有一个上限),因此并行执行时间不大可能消失。此外,如在上一节所提到的,一个并行实现经常会比顺序求解需要执行更多的总指令数,导致低估(1-1/S)·TS值。
包括阿姆达尔在内的许多人对该定律的解释表明使用大量的处理器求解问题只能获得有限的成功,但这似乎与大量的并行计算机能显著改进计算性能的报道相冲突。
阿姆达尔定律描述的一个关键事实是它只适用于计算的一种场合,即施行并行化后计算中的顺序部分将占据执行时间的主要部分。阿姆达尔定律是在固定应用规模的前提下考虑并行性增长的影响。但大多数并行计算则是固定并行性而扩展应用的规模。在这种情况下,随着所考虑规模的增加,顺序代码所占的比例就越来越小。所以,将问题规模翻倍后,顺序部分的增长几乎可以忽略,从而使得求解问题有更多的部分可以并行执行。
概括地讲,阿姆达尔定律并不否定并行计算的价值。相反,它提醒我们要想达到并行性能就必须考虑整个程序。
随着技术的发展,多核心处理器已成为现今处理器发展的潮流。提高处理器性能的方法有许多,其中主要有提高频率与增加核心数量等。提高频率在现有条件下已经比较困难且不经济,增加核心数量之路又能走多远。加速比是衡量系统性能提升的一个重要指标,Amdahl定律便是其中之一。在Amdahl定律的范围内(且不考虑包括通讯开销等在内的并行开销),通过对单一核心提高频率和增加核心数量两个方面的讨论可以得出:在可并行执行部分的执行时间占总执行时间的比例f=0.5时,提高单一核心频率与增加核心所得加速比相同;当f0.5时,提高单一核心频率可比增加核心数量获得更大加速比;当f0.5时,增加核心数量获得的加速比更大些。因此,在核心数量增加到一定程度时,通过提高单一核心的频率可获得更高加速比,也可能是更经济有效的方案。