Amdahl定律
Gene Amdahl,计算领域的早期先锋之一,对提升系统某一部分性能所带来的效果做出简单却有见地的观察。这一观察被称为Amdahl定律(Amdahl’s law)。
当我们对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度。
假设系统执行某应用程序原本需要时间
T
o
l
d
T_{old}
Told。若系统某部分所需执行时间与该应用程序整体执行时间(
T
o
l
d
T_{old}
Told)的比例为
α
\alpha
α,即为
α
T
o
l
d
\alpha T_{old}
αTold,而该部分性能提升比例为
k
k
k。则,该部分性能提升后,所需运行时间为:
(
α
T
o
l
d
)
/
k
(\alpha T_{old})/k
(αTold)/k
性能提升后,该系统执行上述同一应用程序的总执行时间:
T
n
e
w
=
(
1
−
α
)
T
o
l
d
+
(
α
T
o
l
d
/
k
)
=
T
o
l
d
[
(
1
−
α
)
+
α
/
k
]
T_{new}=(1-\alpha)T_{old}+(\alpha T_{old}/k)=T_{old}[(1-\alpha)+\alpha /k]
Tnew=(1−α)Told+(αTold/k)=Told[(1−α)+α/k]
由此,可以计算加速比
S
=
T
o
l
d
/
T
n
e
w
S=T_{old}/T_{new}
S=Told/Tnew为:
S
=
1
(
1
−
α
)
+
α
/
k
S=\frac{1}{(1-\alpha )+\alpha /k}
S=(1−α)+α/k1
该式不难发现,虽然可能对系统重要部分做出了重大改进,但是获得的系统加速比却会明显小于该部分(性能提升的重要部分)的加速比。
因此,Amdahl定律的重要观点——要想显著加速整个系统,必须提升全系统中相当大的部分的速度。
References:
[1]Randal E. Bryant and David R. O’Hallaron. 2010. Computer Systems: A Programmer’s Perspective (2nd. ed.). Addison-Wesley Publishing Company, USA.