数字电子技术

超前进位:给加法提速

10 分钟

行波进位:最慢的加法器

第一章的 32 位加法器是把全加器首尾相连:进位像接力棒,从最低位一格格传到最高位。每一位都要等上一位的进位到了才算数,32 位的加法要等 32 级延迟串起来。对几纳秒必争的 CPU 来说,这条路太慢了——它就是典型的「关键路径」。

换个思路:进位能不能提前算出来?

观察两个输入 A、B:如果两位都是 1,无论低位进位来不来,这一位必然产生进位(叫「生成」G = A·B);如果恰好一个 1,低位进位来了就传上去(叫「传播」P = A + B)。于是第 2 位的进位可以一口气写成 C1 = G0 + P0·C0——只跟输入和最初进位有关,不用干等第 1 位。层层展开,所有进位都能用两三级门的延迟同时算出来,这就是超前进位加法器。

天下没有免费的午餐

并行的代价是门数暴涨:位数翻倍,进位逻辑的扇入(一个门要接的输入数)迅速膨胀,工程上通常 4 位一组做超前、组与组之间再串联。真实 CPU 里的加法器是各种提速技巧的组合拳,但核心思想都是这条:用更多的门,换更短的等待。

常见误区:超前进位不是改变算法,算的还是同一个加法,只是把「等」变成了「算」。

练一练:A=1、B=1 和 A=1、B=0 两种情况下,这一位对进位分别是「生成」还是「传播」?各说一句白话。

小纸条

用「接力赛」和「提前算好」对比行波进位与超前进位。

登录 后可看答案