Gene Amdahl,计算机领域的早期先锋之一,对提升系统某一部分性能所带来的效果做出来简单却有见地的观察。这个观察被称为 Amdahl 定律(Amdahl’s law)。该定律的主要思想是,当我们对系统的某个部分加速时,起对系统整体性能的影响取决于该部分的重要性和加速程度。
若系统执行某应用持续需要的时间为
T
o
l
d
T_{old}
Told。
假设系统某部分所需执行时间与该时间的比例为
α
\alpha
α,而该部分性能提升比例为
k
k
k。
即该部分该部分初始所需时间为
α
T
o
l
d
\alpha T_{old}
αTold,现在所需时间为
α
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
举个例子:
考虑这样一种情况,系统某个部分初始耗时比例为
60
%
(
α
=
0.6
)
60\% (\alpha = 0.6)
60%(α=0.6),其加速比例因子为3(
k
=
3
k=3
k=3)。则我们可以获得的加速比为
1
/
[
0.4
+
0.6
/
3
]
=
1.67
1/[0.4 + 0.6/3] = 1.67
1/[0.4+0.6/3]=1.67倍。虽然我们对系统的一个主要部分做出来重大改进,但是获得即系统加速比却明显小于这部分的加速比。
这就是 Amdahl 定律的主要观点:要想显著加速整个系统,必须提升全系统中相当大的部分的速度。