Amdahl 定律
定律的内容
引入
Amdahl 定律用来考量提升系统的某一部分对提升整个系统的影响。换句话说,提升了系统中某个模块的效率后,整个系统的效率提升了多少呢?这就可以用 Amdahl 定律计算。
推导
下面要输入一堆数学公式。
考虑,如果我们提升了系统中的一个模块。不妨具体点,提升了这个模块的运行速度。这个模块占整个系统的比例是 $\alpha$,提升的效果是原来的 $k$ 倍。那么,新系统的运行时间可以这样计算
$$
T_{new} = (1 - \alpha)T_{old} + (\alpha T_{old}) / k
= T_{old}[(1 - \alpha) + \alpha / k]
$$
解释一下,$T_{new}$ 的构成是,$(1 - \alpha)$ 的部分没有修改,还是原来的时间;$\alpha$ 部分的时间减少为原来的 $\frac{1}{k}$。
这样,用 $S = T_{old} / T_{new}$ 来表示加速比,得到
$$
S = \frac{1}{(1 - \alpha) + \alpha / k}
$$
例题 1
假如你是一个卡车司机,从相距 2,500km 的 A 地到 B 地运货,平均速度是 100 km/h,需要 25 小时完成运输。
- 现在 A B 之间长度为 1,500km 的区段 X 解除限速,卡车最快时速是 150km/h,问整体运输所需时间的提升是?
- 第 1 问的条件不变。你想换一辆卡车。在区段 X 开多快才能让全程的速度提升到 $1.67\times$?
这里,提升的指标是时间。所有和倍数相关的量都是时间。
先解决第一问。代入公式计算一下,在 X 段的时间提升是
$$
k = \frac{15h}{10h} = 1.5
$$
S 段占全程的比例 $\alpha = 1500 / 2500 = 0.6$。代入 Amdahl 定律
$$
S = \frac{1}{(1 - 0.6) + 0.6 / 1.5} = 1.25 \times
$$
求解第二问。再次代入 Amdahl 定律的公式,计算一下 k。
$$
1.67\times = \frac{1}{(1 - 0.6) + 0.6 / k}
$$
解得 $k = 3$。
前面讲了,这里所有和倍率有关的量都是时间。$k = 3$ 表示 $T_{old} / T_{new} = 3$。
原来需要的时间是 $15$ 小时,现在变成 $5$ 小时。这要求卡车的时速是 $\frac{1500}{5} = 300 \text{km/h}$。
例题 2
Amdahl 定律不仅应用在系统领域。也可以指导制造商生产产品,或者学生卷 GPA。
面对刚入学新生的提问,一位久经沙场的学长说
你把体育从及格卷到优秀,对总绩点的提升可能只是 0.01!和高数没法比。
学长说的正确吗?假如大一学生一学期的学分是 30 分,体育占 1.5 学分。在 5 分制绩点中,及格对应 2,优秀对应 5。
分析一下,体育在整个学分的占比是 $\alpha = 1.5 / 30 = 0.05$。体育从及格到优秀的提升是 $k = 5 / 2 = 2.5\times$。看着很大!如果原来绩点是 4,翻 2.5 倍就爆表了!
现实很骨感
$$
S = \frac{1}{(1 - 0.05) + 0.05 / 2.5} = 1.03\times
$$
也就是说,如果你原来的绩点是 4,卷体育得到的提升是 4 -> 4.12。学长说的虽然有些夸张,但道理是正确的。
这里我们采用的比例是 $new / old$,和定义略有不同,不过只要保持一致,则在不会出问题的同时更有利于理解。
再看看把高数从良提升到优呢?(毕竟从及格到优有些不现实)
高数 6 学分,$\alpha = 6 / 30 = 0.2$。从良提升到优,相当于从 4 到 5,$k = 5 / 4 = 1.25\times$,看着没有体育那么剧烈。
$$
S = \frac{1}{(1 - 0.2) + 0.2 / 1.25} \approx 1.042\times
$$
把高数从良提升到优对 GPA 的贡献居然和把体育从及格提升到优的贡献差不多。看来高数重要的多。
不过这个例子是错误的。因为体育从 2 到 5,带来的是固定的 $(5 - 2) * 0.05 = 0.15$ 绩点提升,不是固定的比例。思考一下为什么这里无法应用 Amdahl 定律呢?
考虑 Amdahl 定律的推导过程。$Grade_{new} = (1 - \alpha)Grade_{old} + \alpha Grade_{old} / k$ 成立吗?
