REVIEW.137945.XYZ · INTERACTIVE COURSE REVIEW OBSERVATORY
◈ review.137945.xyz 三院课程总馆MIT 18.065 矩阵方法清华 · 张颢《概率论》复旦 · 叶凡《数字集成电路》
CMOS硅基与时序FUDAN / DIGITAL IC DESIGN返回 12 讲全景图
LECTURE 12 · P44–P46 原课总长 1:13:06 · B 站 BV1KyMg6aEkF

第 12 讲 · 算术运算单元(Ⅱ):进位选择加法器、对数延时加法器与其他运算单元

Square-Root Carry-Select, Logarithmic Prefix Tree Adders, Multipliers & Shifters

P44–P46 · 第五章 5.5–5.7 节:从双链预计算、平方根进位选择 (√2N)、黑圆点算子与三大对数前缀树 (KS / Sklansky / BK) 到预计算低功耗比较器、CSA 乘法器与桶形移位器

原课分片 (点击跳转 B 站对应分P播放):

本讲主线与问题意识 · LECTURE NARRATIVE ARC

本讲涵盖 P44–P46 (5.5 进位选择加法器 · 5.6 对数延时加法器 · 5.7 其他运算单元:乘法器与移位器)(共 3 个视频分片 P44–P46,总时长 1:13:06)。已完成全量 FFmpeg 声学 VAD 切分与 SenseVoice 字幕校准(共 149 条精确字幕),并配备专属交互实验「交互实验:黑圆点前缀算子 (G, P) 结合律与 O(log₂ N) 对数延时加法树(Kogge-Stone / Brent-Kung)对比器」。

本讲核心攻克目标(对标复旦 881 考纲):
  • 完整掌握 P44–P46 (5.5 进位选择加法器 · 5.6 对数延时加法器 · 5.7 其他运算单元:乘法器与移位器) 的物理机理、一阶等效模型与闭式解析公式。

  • 通过配套交互实验(交互实验:黑圆点前缀算子 (G, P) 结合律与 O(log₂ N) 对数延时加法树(Kogge-Stone / Brent-Kung)对比器)直观验证设计参数折中与复旦 881 高频母题。

CORE FORMULAS & DEVICE MODELS · 本讲核心公式与器件模型速查

进位选择加法器(Linear vs Square-Root CSLA)

Ci=Cin,k⋅Ci(1)+Cin,k‾⋅Ci(0),Si=Pi⊕Ci−1C_i = C_{\text{in},k} \cdot C_i^{(1)} + \overline{C_{\text{in},k}} \cdot C_i^{(0)}, \qquad S_i = P_i \oplus C_{i-1}

黑圆点前缀算子与对数延时加法器根基

(Gi:k,Pi:k)∙(Gk−1:j,Pk−1:j)=(Gi:k+Pi:kGk−1:j,  Pi:kPk−1:j)  ⟹  Ci=Gi:0(G_{i:k}, P_{i:k}) \bullet (G_{k-1:j}, P_{k-1:j}) = (G_{i:k} + P_{i:k}G_{k-1:j},\; P_{i:k}P_{k-1:j}) \implies C_i = G_{i:0}

Kogge-Stone、Sklansky 与 Brent-Kung 树对比

Pr⁡(AN−1≠BN−1)=50%  ⟹  EN=0 锁死后级输入,动态功耗直降 50%\Pr(A_{N-1} \ne B_{N-1}) = 50\% \implies \text{EN} = 0 \text{ 锁死后级输入,动态功耗直降 } 50\%

加减法器、低功耗比较器、乘法器与移位器

Ci=Cin,k⋅Ci(1)+Cin,k‾⋅Ci(0),Si=Pi⊕Ci−1C_i = C_{\text{in},k} \cdot C_i^{(1)} + \overline{C_{\text{in},k}} \cdot C_i^{(0)}, \qquad S_i = P_i \oplus C_{i-1}

进位选择加法器(Carry-Select Adder, CSLA)

为了克服进位跳转加法器的静态时序分析(STA)伪路径缺陷并进一步压缩最坏延时,本节引入“空间换时间”的预计算(Precomputation)思想——在每一分组内并行配置假定前级进位为 0 和为 1 的两套进位链,待真实进位到达后仅经一级 2-to-1 多路器瞬间选出结果。我们严格证明等宽进位选择加法器因省去末组行波而将延时降至 2√N(比进位跳转快 30%),并进一步通过逐组递增 1 位宽的“平方根进位选择加法器(Square-Root CSLA, 2-2-3-4-5)”彻底消除高位组的空闲等待时间,将延时再压缩 30% 至 √(2N)。

CLASSROOM CIRCUIT & SLIDE VECTOR RECONSTRUCTION · 课堂电路/特性原图与红笔批注矢量化复原

课堂原图复原 1:预计算双进位链模块、等宽 CSLA (4-4-4-4) 空闲等待圈与平方根 CSLA (2-2-3-4-5) 时空对齐()

复原第 5.5 节课件核心板书:左图为共享 PG 与 Sum 的双进位链预计算模块;中图为等宽线性 CSLA 的 2√N 极值与蓝色空闲等待圈;右图为组宽逐级递增消除等待圈的平方根 CSLA (√2N)。
1. 预计算双进位链结构 (P44 02:00) 仅翻倍中间进位链 (Cin=0 与 Cin=1),PG 与 Sum 共用 ① 共享 Setup 级 (1 套): Pi = Ai ⊕ Bi , Gi = Ai·Bi ②a 进位链 0 (假定 Cin=0): 预计算 C1(0)..C4(0) ②b 进位链 1 (假定 Cin=1): 预计算 C1(1)..C4(1) ③ M+1 个 2:1 MUX (由真实前级进位 Cin,k 选择) 瞬间选出真实组内进位 C1..C3 与组输出进位 Cout,k ④ 共享 Sum 级 (1 套): Si = Pi ⊕ Ci-1,selected 硬件与 STA 优势 (P44 04:20 / 10:07): 面积仅增 ~45% (非 100%);彻底消除伪路径 (DesignWare 标配) 2. 等宽进位选择 (4-4-4-4, P44 06:15) 末组无需再行波 M-1 位! 延时 2√N 比进位跳转快 30% G1(4b) G2(4b) G3(4b) G4(4b) t=5 ↑ 蓝色空闲等待圈 (组内早算完,干等前级 MUX) t=6 t=7 t=8 t=9 等宽 CSLA 关键路径与极值 (P44 08:12): tp = tsetup + M·tcarry + (N/M)·tmux + tsum M* = √(N·tmux / tcarry) ⇒ tp,min ≈ 2√(N·tc·tm) • 省去末组 (M-1)tcarry,系数从 2√2≈2.83 降至 2 (-30%) • 缺陷:高位组在蓝色圈内空闲等待,算力被浪费! 3. 平方根进位选择 (2-2-3-4-5, P44 12:02) 组宽逐级 +1 消除等待圈,延时再降 30% 至 √(2N) G1(2) G2(2) G3(3) G4(4) G5(5) t=3 t=3 t=4 t=5 t=6 M1 t=4 t=5 t=6 t=7! 零空闲等待:组内双链进位与前级 MUX 选择信号同时到达! 等差求和导出 √(2N) 标度律 (P44 13:55): N = 2 + 2 + 3 + … + (K+1) ≈ K(K+1)/2 ≈ K²/2 K ≈ √(2N) ⇒ tp,sqrt ≈ √(2N)·tmux (16位: t=8 vs 10) • 四代演进: N (RCA) → 2√(2N) → 2√N → √(2N) • 工程代价: 高位组 MUX 选择线扇出递增 (G5 推 6 个 MUX)

等宽进位选择加法器关键路径与最优分组():tp=tsetup+Mtcarry+NMtmux+tsum,M∗=N tmuxtcarry  ⟹  tp,min⁡≈2N tcarry tmuxt_p = t_{\text{setup}} + M t_{\text{carry}} + \frac{N}{M}t_{\text{mux}} + t_{\text{sum}}, \quad M^* = \sqrt{\frac{N\,t_{\text{mux}}}{t_{\text{carry}}}} \implies t_{p,\min} \approx 2\sqrt{N\,t_{\text{carry}}\,t_{\text{mux}}}

平方根进位选择加法器等差求和关系():N=∑k=1KMk≈K(K+1)2≈K22  ⟹  K≈2N,tp,sqrt≈2N tcarry tmuxN = \sum_{k=1}^{K} M_k \approx \frac{K(K+1)}{2} \approx \frac{K^2}{2} \implies K \approx \sqrt{2N}, \quad t_{p,\text{sqrt}} \approx \sqrt{2N\,t_{\text{carry}}\,t_{\text{mux}}}

四类加法器主项系数对比():RCA: N  ≫  Carry-Bypass: 22N  (≈2.83N)  >  Linear CSLA: 2N  >  Sqrt CSLA: 2N  (≈1.41N)\text{RCA: } N \;\gg\; \text{Carry-Bypass: } 2\sqrt{2N}\;(\approx 2.83\sqrt{N}) \;>\; \text{Linear CSLA: } 2\sqrt{N} \;>\; \text{Sqrt CSLA: } \sqrt{2N}\;(\approx 1.41\sqrt{N})

1. 预计算(Precomputation)思想与双进位链模块结构

在上一讲的第 5.3 节中,进位跳转加法器虽然把中间各组的进位延时压缩成了 1 级 MUX,但存在两大硬伤:① 最坏路径在第 1 组和最后 1 组各要老老实实走完 MM 位和 (M−1)(M-1) 位串行行波(系数为 2M−12M-1);② 存在令静态时序分析(STA)工具报错的跨组伪路径。

老师在 提出了破局之道——预计算(Precomputation):

  • 为什么最后一组要串行行波? 因为它不知道前一组传过来的进位 Cin,kC_{\text{in},k} 究竟是 00 还是 11,只能干等。
  • 双进位链并行预演():既然单比特进位 Cin,k∈{0,1}C_{\text{in},k} \in \{0, 1\} 只有两种可能,我们在每个 MM 位小组内部:
    1. 共享第 1 步(Setup 级):用 1 套电路并行算出本组各比特的 Pi=Ai⊕BiP_i = A_i \oplus B_i 与 Gi=AiBiG_i = A_i B_i;
    2. 双路第 2 步(Dual Carry Chains):上方放一条假定组输入进位 Cin=0C_{\text{in}}=0 的 MM 位进位链,算出候选进位 C1(0),C2(0),…,CM(0)C_1^{(0)}, C_2^{(0)}, \dots, C_M^{(0)};下方放一条假定组输入进位 Cin=1C_{\text{in}}=1 的 MM 位进位链,同时算出候选进位 C1(1),C2(1),…,CM(1)C_1^{(1)}, C_2^{(1)}, \dots, C_M^{(1)};
    3. 多路器瞬时裁决(MUX Array):当来自低位组的真实进位 Cin,kC_{\text{in},k} 终于到达本组时,直接作为 (M+1)(M+1) 个 2-to-1 MUX 的公共选择信号(Select),在 1 个 tmuxt_{\text{mux}} 延时内瞬间选出真实的组输出进位 Cout,kC_{\text{out},k} 以及本组内部每一位的真实进位 C1,…,CM−1C_1, \dots, C_{M-1};
    4. 共享第 3 步(Sum 级):用 1 套异或门算出最终本位和 Si=Pi⊕Ci−1S_i = P_i \oplus C_{i-1}。

2. 等宽线性进位选择加法器(Linear CSLA)的 2N2\sqrt{N} 延时推导

将 NN 位加法器等分为 K=N/MK = N/M 组(每组 MM 位,课件 以 N=16,M=4,K=4N=16, M=4, K=4 为例,设定 tsetup=tcarry=tmux=tsum=1t_{\text{setup}} = t_{\text{carry}} = t_{\text{mux}} = t_{\text{sum}} = 1):

  1. 逐时刻追踪 16 位等宽 CSLA(4-4-4-4)时空进程()

    • t=1t = 1:全部 16 位的 Pi,GiP_i, G_i 同时产生完毕(耗时 tsetup=1t_{\text{setup}} = 1);
    • t=1→5t = 1 \to 5:第 1、2、3、4 组内部的 Cin=0C_{\text{in}}=0 和 Cin=1C_{\text{in}}=1 双进位链全部同时并行跑完 4 级进位(耗时 4tcarry=44 t_{\text{carry}} = 4,在 t=5t=5 时刻全部就绪);
    • t=5→9t = 5 \to 9:外部真实进位 Cin,0C_{\text{in},0} 穿过第 1 组的 MUX 在 t=6t=6 产生 C4C_4 →\to 穿过第 2 组 MUX 在 t=7t=7 产生 C8C_8 →\to 穿过第 3 组 MUX 在 t=8t=8 产生 C12C_{12} →\to 穿过第 4 组 MUX 在 t=9t=9 选出第 4 组内部全部真实进位;
    • t=9→10t = 9 \to 10:第 4 组经最后 1 级异或门算出最高位和 S13∼S16S_{13}\sim S_{16}(总耗时 1010 单位)。
  2. 关键路径闭合式与均值不等式求极值()
    一般地,对于位宽 NN、每组 MM 位的等宽进位选择加法器,其最坏关键路径为: tp(M)=tsetup+M tcarry+(NM)tmux+tsumt_p(M) = t_{\text{setup}} + M\,t_{\text{carry}} + \left(\frac{N}{M}\right)t_{\text{mux}} + t_{\text{sum}} 对比第 5.3 节进位跳转加法器的公式 tbypass_adder=tsetup+(2M−1)tcarry+(N/M−1)tbypass+tsumt_{\text{bypass\_adder}} = t_{\text{setup}} + (2M-1)t_{\text{carry}} + (N/M-1)t_{\text{bypass}} + t_{\text{sum}},由于最后一组无需再串行行波 (M−1)(M-1) 位,含 MM 的线性项系数从 2M2M 直接减半为 MM!由均值不等式: M tcarry+NM tmux≥2N tcarry tmux,当且仅当 M∗=N tmuxtcarry 时取等号M\,t_{\text{carry}} + \frac{N}{M}\,t_{\text{mux}} \ge 2\sqrt{N\,t_{\text{carry}}\,t_{\text{mux}}}, \qquad \text{当且仅当 } M^* = \sqrt{\frac{N\,t_{\text{mux}}}{t_{\text{carry}}}} \text{ 时取等号} 因此,等宽 CSLA 的主项延时为 2N2\sqrt{N},比进位跳转加法器的 22N2\sqrt{2N} 快了 1−12≈29.3%1 - \frac{1}{\sqrt{2}} \approx 29.3\%(约 30%30\%)!


3. 不等宽平方根进位选择加法器(Square-Root CSLA):消除空闲等待圈

老师在 指出了等宽 CSLA 时空图中的一个巨大浪费:

  • 在 4-4-4-4 等宽分组中,第 2、3、4 组内部的进位链在 t=5t=5 就早早算完了,但前级传来的 MUX 选择信号分别要到 t=6,7,8t=6, 7, 8 才到达!这导致第 2 组白白干等了 1 个单位时间,第 3 组干等了 2 个单位时间,第 4 组干等了 3 个单位时间(课件上用蓝色小圆圈标出的空闲等待期)。
  • 核心洞察():既然第 kk 组的 MUX 选择信号比第 k−1k-1 组晚到 1 个单位时间(tmux=1t_{\text{mux}} = 1),为什么不让第 kk 组比第 k−1k-1 组多包含 1 个比特(即多算 1 级内部进位 tcarry=1t_{\text{carry}} = 1),从而让组内双进位链算完的时刻恰好等于前级 MUX 选择信号到达的时刻?
组号 kk 组位宽 MkM_k(16位:2-2-3-4-5) 组内双进位链完成时刻 tinternal=1+Mkt_{\text{internal}} = 1 + M_k 前级进位到达 MUX 选择端时刻 tselectt_{\text{select}} 本组 MUX 输出时刻 toutt_{\text{out}}
第 1 组 M1=2 bitM_1 = 2\text{ bit} 1+2=31 + 2 = 3 Cin,0C_{\text{in},0} 在 t=0t=0 已就绪 t=3+1=4t = 3 + 1 = 4
第 2 组 M2=2 bitM_2 = 2\text{ bit} 1+2=31 + 2 = 3(微等 1 拍或恰好对齐) C2C_2 在 t=4t = 4 到达 t=4+1=5t = 4 + 1 = 5
第 3 组 M3=3 bitM_3 = 3\text{ bit} 1+3=41 + 3 = 4(与 t=5t=5 完美衔接) C4C_4 在 t=5t = 5 到达 t=5+1=6t = 5 + 1 = 6
第 4 组 M4=4 bitM_4 = 4\text{ bit} 1+4=51 + 4 = 5(与 t=6t=6 完美衔接) C7C_7 在 t=6t = 6 到达 t=6+1=7t = 6 + 1 = 7
第 5 组 M5=5 bitM_5 = 5\text{ bit} 1+5=61 + 5 = 6(与 t=7t=7 完美衔接) C11C_{11} 在 t=7t = 7 到达 t=7+1(Sum)=8t = 7 + 1(\text{Sum}) = \mathbf{8}
  1. 等差数列求和导出 2N\sqrt{2N} 标度律()
    设共有 KK 组,各组位宽按等差数列递增 11:N=M1+(M1+1)+(M1+2)+⋯+(M1+K−1)N = M_1 + (M_1+1) + (M_1+2) + \cdots + (M_1+K-1)。当 NN 较大且首组 M1≈1∼2M_1 \approx 1\sim 2 时: N≈∑k=1Kk=K(K+1)2≈12K2  ⟹  K≈2NN \approx \sum_{k=1}^{K} k = \frac{K(K+1)}{2} \approx \frac{1}{2}K^2 \implies K \approx \sqrt{2N} 由于每一组内部进位均被前级 MUX 链完美掩盖,总关键路径仅取决于首组进位加 KK 级 MUX 传播: tp,sqrt=tsetup+M1tcarry+K tmux+tsum≈2N tcarry tmuxt_{p,\text{sqrt}} = t_{\text{setup}} + M_1 t_{\text{carry}} + K\,t_{\text{mux}} + t_{\text{sum}} \approx \sqrt{2N\,t_{\text{carry}}\,t_{\text{mux}}} 对比等宽 CSLA 的 2N=4N2\sqrt{N} = \sqrt{4N},递增位宽的平方根进位选择加法器(Square-Root CSLA)将主项延时从 2N2\sqrt{N} 进一步压缩至 2N\sqrt{2N},又快了 1−22≈30%1 - \frac{\sqrt{2}}{2} \approx 30\%!

  2. 四代加法器延时阶梯总览()
    N⏟行波进位 RCA→旁路跳转22N⏟进位跳转 Carry-Bypass→−30%双链预计算2N⏟等宽进位选择 Linear CSLA→−30%递增组宽 2,2,3,4,5…2N⏟平方根进位选择 Sqrt-CSLA\underbrace{N}_{\text{行波进位 RCA}} \xrightarrow{\text{旁路跳转}} \underbrace{2\sqrt{2N}}_{\text{进位跳转 Carry-Bypass}} \xrightarrow[-30\%]{\text{双链预计算}} \underbrace{2\sqrt{N}}_{\text{等宽进位选择 Linear CSLA}} \xrightarrow[-30\%]{\text{递增组宽 } 2,2,3,4,5\dots} \underbrace{\sqrt{2N}}_{\text{平方根进位选择 Sqrt-CSLA}}

LAB 5.5 · LINEAR vs SQUARE-ROOT CARRY-SELECT ADDER

等宽线性进位选择 O(N) vs 2-2-3-4-5 平方根不等宽进位选择加法器 O(√2N) 对齐沙盘

进位选择加法器(CSLA)每组内部并行配置两套进位链(分别预设 C_in=0 与 C_in=1 提前算出结果)!验证为什么等宽分组(4-4-4-4)会让高位组白白空等真实进位,而采用 2-2-3-4-5 递增分组能将总延时压缩至 √(2N)!

16 位加法器关键路径总延迟 (门级)10 级 (平方根递增共 6 组)对比:纯行波 RCA 需 18 级 · 平方根 CSLA 提速 1.8 倍!
为什么 2-2-3-4-5 平方根分组能消除等待气泡?真实进位每多穿 1 级 MUX (+1τ),下一组恰好多算 1 位 (+1τ)!令 Δt_wait = 0:组内预计算完成时刻与进位到达 MUX 时刻在全芯片严丝合缝对齐!
1. 位宽 N 增长时平方根 O(√2N) vs 线性 O(N/M) 延时由 N = M + (M+1) + ··· + (M+P-1) ≈ P²/2 解出组数 P ≈ √(2N)
平方根进位选择最优延时 (10 级)拖动上方滑块或点击预设按钮实时重算工作点
2. 平方根进位选择加法器数学推导 (复旦 881 高频计算题)16-bit 黄金序列:2 + 2 + 3 + 4 + 5 = 16 bits (共 P=5 组)
双轨预计算代价每组配 C=0 与 C=1 两套进位链时序对齐条件t_carry ≈ t_mux ⇒ 每组递增 1 位算术级数求和N ≈ P(P+1)/2 ⇒ P ≈ √(2N)当前组间等待气泡0 ps (完美齐步到达!)复旦 881 物理因果链与核心判据:• 等宽痛点:第 k 组早早算完 M 位预计算,却要干等真实进位穿过前 k-1 级 MUX• 递增破局:既然进位每过一组晚到 1 个 MUX 延时,就把下一组加宽 1 位,用时间换省组数!• 渐近复杂度:N = ∑(M + i) ≈ P²/2 ⇒ P = √(2N),总延时 t_add = O(√(2N))
STEP-BY-STEP CIRCUIT & FORMULA DERIVATION · 课堂电路状态机与公式分步推演
Step ①并行配置 Cin=0C_{\text{in}}=0 与 Cin=1C_{\text{in}}=1 双进位链消除末组行波延时
Ci=Cin,k⋅Ci(1)+Cin,k‾⋅Ci(0),Si=Pi⊕Ci−1C_i = C_{\text{in},k} \cdot C_i^{(1)} + \overline{C_{\text{in},k}} \cdot C_i^{(0)}, \qquad S_i = P_i \oplus C_{i-1}

对应 :PG 级与 Sum 级无需复制,仅复制中间进位链并加 MUX,面积增加约 45%45\% 且彻底消除 STA 伪路径。

Step ②推导等宽 CSLA 关键路径并用均值不等式证得 2N2\sqrt{N} 延时
tp(M)=tsetup+Mtcarry+NMtmux+tsum≥tsetup+2Ntcarrytmux+tsumt_p(M) = t_{\text{setup}} + M t_{\text{carry}} + \frac{N}{M}t_{\text{mux}} + t_{\text{sum}} \ge t_{\text{setup}} + 2\sqrt{N t_{\text{carry}} t_{\text{mux}}} + t_{\text{sum}}

对应 :相比进位跳转省去了最末组 (M−1)tcarry(M-1)t_{\text{carry}},延时缩短 1−1/2≈30%1 - 1/\sqrt{2} \approx 30\%。

Step ③令组宽按等差数列逐级 +1+1(2,2,3,4,5…2,2,3,4,5\dots)实现 2N\sqrt{2N} 平方根延时
Mk=Mk−1+1  ⟹  N≈12K2  ⟹  tp,sqrt≈2N tmuxM_k = M_{k-1} + 1 \implies N \approx \frac{1}{2}K^2 \implies t_{p,\text{sqrt}} \approx \sqrt{2N}\,t_{\text{mux}}

对应 :使第 kk 组内部进位完成时刻与第 k−1k-1 组 MUX 输出到达时刻厳格对齐,消灭蓝色空闲等待圈。

PPA 工程折中与复旦 881 高频母题思辨 (CRITICAL INSIGHT & 881 PITFALL)

【复旦 881 综合思辨】课堂 的两个工程深水区追问:在平方根进位选择加法器(如 64 位分成 2,2,3,4,5,6,7,8,9,10,82, 2, 3, 4, 5, 6, 7, 8, 9, 10, 8)中,既然每个部分都刚好没有等待时间,那岂不是电路里处处都是关键路径?而且越往高位组宽越大,会带来什么物理电路瓶颈? 老师在 对这两个问题给出了极其透彻的解答:

  1. “处处皆关键路径”反而证明架构达到了理论最优压榨极限():在普通等宽加法器里,只有第 1 组是紧绷的关键路径,后面第 2,3,42, 3, 4 组全在空闲摸鱼(有Timing Slack);平方根加法器通过削减低位组宽度、增加高位组宽度,让所有组的内部进位路径与外部 MUX 链在同一时刻到达终点——这意味着没有任何一组的算力被闲置!
  2. 高位组 MUX 选择线的“扇出递增(Fan-out Growing)”物理瓶颈():在课堂简化公式中,我们假设每一组的 MUX 延时 tmuxt_{\text{mux}} 都是常数 11。但在真实物理电路中,第 kk 组传过来的进位信号 Cin,kC_{\text{in},k} 需要同时驱动第 kk 组内部全部 (Mk+1)(M_k + 1) 个 2-to-1 MUX 的选择端!在 64 位平方根加法器中,第 1 组只需驱动 3 个 MUX,而第 10 组(组宽 M10=10M_{10}=10)的选择线需要同时驱动 11 个 MUX(大电容负载)!如果不插入缓冲器(Buffer),高位组的 tmuxt_{\text{mux}} 会随组宽线性变慢。
本节方法论与考题要点沉淀 · KEY TAKEAWAYS
  • 双链预计算机制:组内并行计算假定 Cin=0C_{\text{in}}=0 与 Cin=1C_{\text{in}}=1 的两套进位,PG 与 Sum 级共用,面积仅增约 45%45\% 且无任何 STA 伪路径。

  • 等宽 CSLA 提速 30%:省去末组 (M−1)(M-1) 位行波,关键路径主项从进位跳转的 22N2\sqrt{2N} 降至 2N2\sqrt{N}(M∗=Ntmux/tcarryM^* = \sqrt{N t_{\text{mux}}/t_{\text{carry}}})。

  • 平方根 CSLA 再提速 30%:组宽按 2,2,3,4,5…2, 2, 3, 4, 5\dots 逐级递增 11 位消除空闲等待圈,由 N≈K2/2N \approx K^2/2 将主项延时压缩至 2N\sqrt{2N}。

对数延时加法器(Logarithmic / Parallel Prefix Adder)

平方根进位选择加法器将延时降至 O(√N),但这是否已经是组合逻辑加法器的理论极限?本节从 N 输入与门的二叉树归约出发,通过将进位递推公式展开并引入 4 输入 2 输出的“黑圆点前缀算子(Dot Operator •)”,严格证明该算子满足结合律(Associativity),从而将串行进位传播转化为 O(log₂ N) 层的并行前缀二叉树。我们深入剖析 Kogge-Stone(最小扇出、连线最复杂)、Sklansky(节点复用、N/2 大扇出瓶颈)与 Brent-Kung(正向归约树 + 反向分发树,2log₂N - 1 层、最小面积)三种经典树形加法器的三角折中。

CLASSROOM CIRCUIT & SLIDE VECTOR RECONSTRUCTION · 课堂电路/特性原图与红笔批注矢量化复原

课堂原图复原 2:黑圆点算子 (•) 电路与结合律、Kogge-Stone vs Sklansky 扇出对比及 Brent-Kung 正反向树()

复原第 5.6 节课件核心板书:左图为 4 输入 2 输出黑圆点算子与结合律;中图为 Kogge-Stone 密集跨线与 Sklansky N/2 大扇出对比;右图为 Brent-Kung 正反向树与三角折中。
1. 黑圆点算子 (•) 与结合律 (P45 11:26) 4 输入 2 输出前缀合并单元:将进位转化为二叉树归约 • Gi:k, Pi:k Gk-1:j, Pk-1:j Gi:j , Pi:j 算子定义 (1 个 AO21 + 1 个 AND2): Gi:j = Gi:k + Pi:k · Gk-1:j Pi:j = Pi:k · Pk-1:j 特例: G0 = Cin,0 , P0 = 0 前缀终点: Ci = Gi:0 (直接得进位!) 代数性质与对数树根基 (P45 08:50): ✔ 结合律: [(G3,P3)•(G2,P2)] • [(G1,P1)•(G0,P0)] ⇒ 允许任意拆分括号,把串行 O(N) 化为 log2(N) 层二叉树! ✘ 不满足交换律: (Gi,Pi) • (Gj,Pj) ≠ (Gj,Pj) • (Gi,Pi) ⇒ 高位组与低位组绝不可颠倒顺序! ✔ 区间重叠幂等性: Gi:k • Gm:j = Gi:j (当 m ≥ k-1) 2. Kogge-Stone vs Sklansky 树 (P45 13:21) 同为 log2(N) 层极限速度:用连线复杂度换取扇出改善 A. Kogge-Stone 树 (每比特平移独立二叉树, P45 14:10) • 层数 log2(N)=4(16位),扇出 ≤ 2;但跨距连线极度拥塞! B. Sklansky 树 (最大化复用中间节点, P45 17:03) G7:0 扇出=8! • 层数 log2(N),连线最简;但复用节点扇出高达 N/2 (16位推8)! 3. Brent-Kung 树与三角折中 (P45 20:28) 正向归约树 + 反向分发树:彻底消除大扇出与连线拥塞 C. Brent-Kung 正向树 + 反向树 (8-bit 示意, P45 20:45) 正向树 (log2 N) 反向树 (log2 N - 1) • 扇出 ≤ 2,面积最小;代价是逻辑层数翻倍为 2·log2(N)-1 (16位7层) 16-bit 对数树三大维度权衡 (P45 23:00–26:44): 拓扑类型 逻辑层数 最大扇出 连线与单元数 Kogge-Stone 4 (最少) 2 (最小) 跨距连线最复杂 Sklansky 4 (最少) 8 (N/2!) 连线简单单元少 Brent-Kung 7 (2logN-1) 2 (最小) 连线最简面积最小 ★ N=4,16,64 延时比: 线性 1:4:16 vs √N 1:2:4 vs 对数 1:2:3

黑圆点前缀算子定义():(Gi:j,Pi:j)=(Gi:k,Pi:k)∙(Gk−1:j,Pk−1:j)=(Gi:k+Pi:kGk−1:j,  Pi:kPk−1:j),Ci=Gi:0(G_{i:j}, P_{i:j}) = (G_{i:k}, P_{i:k}) \bullet (G_{k-1:j}, P_{k-1:j}) = (G_{i:k} + P_{i:k} G_{k-1:j},\; P_{i:k} P_{k-1:j}), \quad C_i = G_{i:0}

三种 16 位前缀树核心指标对比():KS: (L=log⁡2N,FO=2,Wire=O(Nlog⁡N));Sklansky: (L=log⁡2N,FO=N/2);BK: (L=2log⁡2N−1,FO=2)\text{KS: } (L=\log_2 N, \text{FO}=2, \text{Wire}=O(N\log N)); \quad \text{Sklansky: } (L=\log_2 N, \text{FO}=N/2); \quad \text{BK: } (L=2\log_2 N-1, \text{FO}=2)

位宽扩展延时标度律():N=4→16→64 时:tRCA∝1:4:16,tCSLA∝1:2:4,tTree∝1:2:3N = 4 \to 16 \to 64 \text{ 时}: \quad t_{\text{RCA}} \propto 1:4:16, \quad t_{\text{CSLA}} \propto 1:2:4, \quad t_{\text{Tree}} \propto 1:2:3

1. 从进位递推展开到黑圆点前缀算子(Dot Operator ∙\bullet)

为什么说加法器的全部瓶颈都在于进位?老师在 将三步式全加器的进位递推方程 Ci=Gi+PiCi−1C_i = G_i + P_i C_{i-1} 进行了彻底的代数重构:

  1. 统一边界表示与递归展开()
    为了把最低位外部输入进位 Cin,0C_{\text{in},0} 也纳入统一记号,我们增设第 00 位虚拟信号: G0=Cin,0,P0=0  ⟹  C0=G0+P0C−1=G0G_0 = C_{\text{in},0}, \qquad P_0 = 0 \implies C_0 = G_0 + P_0 C_{-1} = G_0 于是 4 位进位可以逐级展开为: C1=G1+P1C0=G1+P1G0C2=G2+P2C1=G2+P2(G1+P1G0)=(G2+P2G1)+(P2P1)G0C3=G3+P3C2=[G3+P3(G2+P2G1)]+(P3P2P1)G0\begin{aligned} C_1 &= G_1 + P_1 C_0 = G_1 + P_1 G_0 \\ C_2 &= G_2 + P_2 C_1 = G_2 + P_2(G_1 + P_1 G_0) = (G_2 + P_2 G_1) + (P_2 P_1) G_0 \\ C_3 &= G_3 + P_3 C_2 = \big[G_3 + P_3(G_2 + P_2 G_1)\big] + (P_3 P_2 P_1) G_0 \end{aligned} 观察 C3=G3+P3(G2+P2(G1+P1G0))C_3 = G_3 + P_3(G_2 + P_2(G_1 + P_1 G_0)):如果从最内层括号往外一层层串行算,这就是 O(N)O(N) 的行波进位;但如果换一种括号结合方式,写成: C3=(G3+P3G2)+(P3P2)(G1+P1G0)C_3 = (G_3 + P_3 G_2) + (P_3 P_2)(G_1 + P_1 G_0) 你会震惊地发现:高两位的合并项 (G3:2,P3:2)=(G3+P3G2,  P3P2)(G_{3:2}, P_{3:2}) = (G_3 + P_3 G_2,\; P_3 P_2) 与低两位的合并项 (G1:0,P1:0)=(G1+P1G0,  P1P0)(G_{1:0}, P_{1:0}) = (G_1 + P_1 G_0,\; P_1 P_0) 完全可以在第 1 层同时并行算出,然后在第 2 层只需再做一次同样形式的合并即可得到 C3C_3!

  2. 黑圆点算子(∙\bullet)的严格定义与电路实现()
    将上述两区间合并规律抽象为二元算子 ∙\bullet:对于高位区间 [i:k][i:k] 与低位区间 [k−1:j][k-1:j](i≥k>j≥0i \ge k > j \ge 0), (Gi:j,  Pi:j)=(Gi:k,  Pi:k)∙(Gk−1:j,  Pk−1:j)=(Gi:k+Pi:kGk−1:j⏟Gi:j,    Pi:kPk−1:j⏟Pi:j)(G_{i:j},\; P_{i:j}) = (G_{i:k},\; P_{i:k}) \bullet (G_{k-1:j},\; P_{k-1:j}) = \big(\underbrace{G_{i:k} + P_{i:k} G_{k-1:j}}_{G_{i:j}},\;\; \underbrace{P_{i:k} P_{k-1:j}}_{P_{i:j}}\big)

    • 物理意义:区间 [i:j][i:j] 产生进位(Gi:j=1G_{i:j}=1),当且仅当高半区间 [i:k][i:k] 自己产生进位(Gi:k=1G_{i:k}=1),或者低半区间 [k−1:j][k-1:j] 产生进位(Gk−1:j=1G_{k-1:j}=1)且高半区间全体处于传播态(Pi:k=1P_{i:k}=1)。
    • 前缀终点恒等式:因为 P0=0P_0 = 0,所以 Gi:0=Gi:1+Pi:1G0=Gi:1+Pi:1C0=CiG_{i:0} = G_{i:1} + P_{i:1} G_0 = G_{i:1} + P_{i:1} C_0 = C_i。算出每一位的全前缀 Gi:0G_{i:0},就等于算出了该位的进位输出 CiC_i!

2. 三大经典对数前缀树:Kogge-Stone、Sklansky 与 Brent-Kung

  • 既然 ∙\bullet 满足结合律,我们只需用 log⁡2N\log_2 N 层二叉树就能算出最高位进位 GN:0G_{N:0}。
  • 但加法器不是只求最高位,而是要同时求出所有位 G1:0,G2:0,…,GN:0G_{1:0}, G_{2:0}, \dots, G_{N:0}!老师在 详细拆解了三种不同的建树哲学(以 16 位加法器为例):
树形加法器拓扑 核心建树思想 逻辑层数(N=16N=16) 节点最大扇出(Fan-out) 水平跨距连线与面积 适用场景
Kogge-Stone (KS) () 每比特拥有独立平移二叉树(利用区间重叠性质) 最少:log⁡2N=4\log_2 N = 4 层 最小:≤2\le 2 最复杂:第 kk 层跨距 2k−12^{k-1} 交叉线极密,面积最大 追求极致主频的 64 位高端 CPU ALU
Sklansky () 极致复用低半区已算完的公共前缀根节点 最少:log⁡2N=4\log_2 N = 4 层 恶劣:高达 N/2=8N/2 = 8(64位达 32!) 简单:无交叉长线,黑圆点单元数比 KS 少近一半 需插大缓冲器,较少直接裸用
Brent-Kung (BK) () log⁡2N\log_2 N 层正向归约树 + (log⁡2N−1)(\log_2 N-1) 层反向分发树 翻倍:2log⁡2N−1=72\log_2 N - 1 = 7 层 最小:≤2\le 2 最简单、面积最小:完全消除大扇出与交叉连线 面积、功耗与布线受限的中高速设计
  • 树形加法器的“不可能三角”():老师总结道,在并行前缀树设计中,① 逻辑层数最少(log⁡2N\log_2 N)、② 节点扇出最小(≤2\le 2)、③ 连线简单且单元面积最小 这三个理想目标不可能同时达到!Kogge-Stone 选了 ①+②(牺牲 ③ 连线复杂度),Sklansky 选了 ①+③(牺牲 ② 产生大扇出),Brent-Kung 选了 ②+③(牺牲 ① 逻辑层数翻倍)。现代综合器还支持介于三者之间的混合树(如 Han-Carlson 树、Knowles 树),在该三角空间内按需微调。
5.5–5.6 节核心实验 · 直观验证位宽从 4 位扩至 64 位时的标度律跨越

交互实验:行波进位 O(N)、进位跳转/选择 O(√N) 与对数前缀树 O(log₂ N) 延时对比

从三步式信号 Gi = AiBi、Pi = Ai⊕Bi 出发,对比行波进位、进位跳转( )、平方根进位选择( )与黑圆点算子 (Gh,Ph)•(Gl,Pl) 对数前缀树( )。

RCA O(N) vs Carry-Skip 延时32 vs 13.6 门级进位跳转最优分组 M* = √(N·t_skip/2t_c) ≈ 3
平方根选择 vs 对数树 O(log₂N)13 vs 10 门级64位下 Kogge-Stone 比 RCA 快 3.2 倍
1. 四大加法器架构关键路径门级数对比 (N=16)从线性 O(N) → 平方根 O(√N) → 对数 O(log₂N) 的跨越
32级RCA O(N)14级Carry-Skip13级√N Select10级Log₂ Tree黑圆点结合律:(G_h,P_h)•(G_l,P_l) = (G_h + P_h·G_l, P_h·P_l)
2. 8位 (Gi, Pi) 比特状态与三层并行前缀归约红 G=1 (产生) · 蓝 P=1 (传播) · 灰 D=1 (消灭)
位级状态 (Bit 7 → Bit 0) 与前缀进位树:b7PC=b6PC=b5GC=b4PC=b3PC=b2PC=b1PC=b0GC=仅经 log₂(8)=3 层黑圆点归约即并行算出全部 8 位进位 C_0..C_7
STEP-BY-STEP CIRCUIT & FORMULA DERIVATION · 课堂电路状态机与公式分步推演
Step ①定义满足结合律的黑圆点前缀合并算子 ∙\bullet 将进位链化为前缀问题
(Gi:k,Pi:k)∙(Gk−1:j,Pk−1:j)=(Gi:k+Pi:kGk−1:j,  Pi:kPk−1:j)  ⟹  Ci=Gi:0(G_{i:k}, P_{i:k}) \bullet (G_{k-1:j}, P_{k-1:j}) = (G_{i:k} + P_{i:k}G_{k-1:j},\; P_{i:k}P_{k-1:j}) \implies C_i = G_{i:0}

对应 :每个黑圆点单元仅含 1 个 AO21 与 1 个 AND2,结合律允许将串行括号拆分为二叉树。

Step ②对比 log⁡2N\log_2 N 层级的 Kogge-Stone 平移树(连线拥塞)与 Sklansky 复用树(N/2N/2 大扇出)
LKS=LSklansky=log⁡2N,FanoutKS=2   vs   FanoutSklansky=N2L_{\text{KS}} = L_{\text{Sklansky}} = \log_2 N, \qquad \text{Fanout}_{\text{KS}} = 2 \;\text{ vs }\; \text{Fanout}_{\text{Sklansky}} = \frac{N}{2}

对应 :Sklansky 树通过复用 G7:0G_{7:0} 等中间节点省去大量水平交叉线,但根节点电容负载随位宽剧增。

Step ③级联 (log⁡2N−1)(\log_2 N - 1) 层反向树构造 Brent-Kung 加法器消除大扇出与长连线
LBK=log⁡2N⏟正向归约树+(log⁡2N−1)⏟反向分发树=2log⁡2N−1,FanoutBK≤2L_{\text{BK}} = \underbrace{\log_2 N}_{\text{正向归约树}} + \underbrace{(\log_2 N - 1)}_{\text{反向分发树}} = 2\log_2 N - 1, \qquad \text{Fanout}_{\text{BK}} \le 2

对应 :用逻辑级数翻倍换取极简布线、最小面积与严格受限的扇出。

PPA 工程折中与复旦 881 高频母题思辨 (CRITICAL INSIGHT & 881 PITFALL)

【复旦 881 综合思辨】课堂 深度追问:在 Kogge-Stone 树的第 2、3、4 层中,为了给每一比特都凑齐平移二叉树,经常会出现把两个“区间存在重叠”的节点合并在一起(例如用 [7:4][7:4] 与 [5:0][5:0] 合并出 [7:0][7:0],其中第 4,54, 5 位被算了两次!)。这种区间重叠合并在布尔逻辑上为什么不会算错? 这正是黑圆点算子 ∙\bullet 除结合律之外的第二条神奇代数性质——区间重叠幂等性(Idempotency,)! 我们来严格验证单比特的自合并 (Gk,Pk)∙(Gk,Pk)(G_k, P_k) \bullet (G_k, P_k): Gk:k+Pk:kGk:k=Gk(1+Pk)=GkPk:k⋅Pk:k=Pk⋅Pk=Pk\begin{aligned} G_{k:k} + P_{k:k} G_{k:k} &= G_k(1 + P_k) = G_k \\ P_{k:k} \cdot P_{k:k} &= P_k \cdot P_k = P_k \end{aligned} 由于布尔代数满足吸收律 Gk+PkGk=GkG_k + P_k G_k = G_k 与幂等律 PkPk=PkP_k P_k = P_k,因此任意两个相邻或互相重叠的区间 [i:k][i:k] 与 [m:j][m:j](只要满足 m≥k−1m \ge k - 1,不留空隙),直接做 ∙\bullet 运算的结果恒等于完整区间 [i:j][i:j]: (Gi:k,Pi:k)∙(Gm:j,Pm:j)≡(Gi:j,Pi:j)(∀m≥k−1)(G_{i:k}, P_{i:k}) \bullet (G_{m:j}, P_{m:j}) \equiv (G_{i:j}, P_{i:j}) \quad (\forall m \ge k-1) 正是这一性质,赋予了 Kogge-Stone 树直接把前一层相邻跨距节点拉过来合并而不必担心中间位重复计算的数学合法性!

本节方法论与考题要点沉淀 · KEY TAKEAWAYS
  • 黑圆点算子与结合律:(Gi:k,Pi:k)∙(Gk−1:j,Pk−1:j)=(Gi:k+Pi:kGk−1:j,  Pi:kPk−1:j)(G_{i:k}, P_{i:k}) \bullet (G_{k-1:j}, P_{k-1:j}) = (G_{i:k} + P_{i:k}G_{k-1:j},\; P_{i:k}P_{k-1:j}) 满足结合律与重叠幂等性,但不满足交换律。

  • 三大前缀树核心特征:Kogge-Stone(log⁡2N\log_2 N 层、扇出 2、连线最密);Sklansky(log⁡2N\log_2 N 层、连线简、扇出高达 N/2N/2);Brent-Kung(2log⁡2N−12\log_2 N - 1 层正反向树、扇出 2、面积最小)。

  • 对数标度优势:当位宽 NN 按 4→16→644 \to 16 \to 64 增长时,对数加法器主项延时仅按 1:2:31 : 2 : 3 缓增,是 32/64 位高速数据通路的首选。

其他算术运算单元:加减法器、低功耗比较器、乘法器与移位器

以加法器为基石,本节拓展至完整的微处理器算术逻辑单元(ALU)组件:首先通过异或门与进位补 1 构建加减法统一架构;接着剖析数字比较器的“最高位预计算门控(Precomputation Gating)”低功耗技术(仅以极小代价立省 50%~75% 动态功耗);随后引入进位保留加法器(CSA / 3:2 压缩器),将阵列乘法器的关键路径从 3N 压缩至 2N,并介绍带符号补码符号扩展、Booth 编码与 Wallace 树形乘法器;最后对比阵列移位器与无需译码器的 O(log₂ N) 级对数桶形移位器(Barrel Shifter)。

CLASSROOM CIRCUIT & SLIDE VECTOR RECONSTRUCTION · 课堂电路/特性原图与红笔批注矢量化复原

课堂原图复原 3:最高位预计算低功耗比较器、阵列乘法器 (3N) vs 进位保留乘法器 (2N) 及对数桶形移位器()

复原第 5.7 节课件核心板书:左图为补码加减器与立省 50% 动态功耗的最高位预计算门控比较器;中图为 CSA 3:2 压缩器及阵列乘法器关键路径从 3N 到 2N 的跃升;右图为 Wallace 树与对数桶形移位器。
1. 补码加减与预计算比较器 (P46 00:00) 最高位预计算门控 (Precomputation):立省 50% 动态功耗 A. 补码加减统一架构 (P46 00:35): A - B = A + Bbar + 1 ⇒ Bi' = Bi ⊕ Sub , Cin,0 = Sub • Sub=0 时做加法 (Bi⊕0=Bi, C0=0);Sub=1 时按位取反加 1 B. 最高位预计算门控比较器 (P46 04:36–09:54): Step 1: 先单独比较最高位 EN = AN-1 ⊙ BN-1 • 50% 概率 AN-1 ≠ BN-1 (EN=0): 直接由 AN-1 判定大小! Step 2: 门控锁死低 N-1 位输入 (Ai·EN , Bi·EN) • 当 EN=0 时,后级 N-1 位减法器输入全锁死为 0,零翻转! Pdyn 节省: 预看 1 位省 50%,预看 2 位省 75% (1 - 2-k) • 功耗-延时折中: 预看位数 k 越多越省电,但门控级数延时增加; 当 k=N 时退化为从高位到低位逐位串行比较 (最省电但最慢)。 2. 进位保留与阵列乘法器 (P46 10:22) 将进位改为 45° 斜向跨行传递:关键路径从 3N 压缩至 2N 进位保留加法器 (CSA / 3:2 压缩器, P46 10:35): X + Y + Z = S + 2·C (本级内部水平方向零进位传播!) • 进位向量 C 不向本行高位传,而是左移 1 位直接送入下一行全加器 A. 常规行波阵列乘法器 (P46 14:10): tp = (N - 1)·tsum + (2N - 3)·tcarry ≈ 3N • 进位在每一行水平行波,求和沿垂直列传递,关键路径长达 ~3N • 优化方向: tsum 占 1/3 权重,tcarry 占 2/3 权重 (P46 15:34) B. 进位保留阵列乘法器 (Carry-Save, P46 16:29): tp = (N - 1)·tcarry,CSA + (N - 1)·tVMA ≈ 2N • 前 N-1 行采用 CSA 斜向 45° 传递进位 (每行仅 1 级 FA 延时) • 最末行接 1 个矢量合并加法器 (VMA),总延时缩短 1/3 至 ~2N! 3. 树形乘法器与桶形移位器 (P46 20:37) Booth 减半部分积 + Wallace 对数压缩 + log2(N) 级移位 A. 补码乘法、Booth 编码与 Wallace 树 (P46 20:37): • 带符号补码乘法: 负数部分积必须做符号位扩展 (Sign Extension) • Radix-4 Booth 编码: 每次观察相邻 2~3 位,将部分积行数减半 (N/2) Wallace Tree: 用 3:2 CSA 树将 N 行部分积按 (3/2)k 压缩 • 延时从 O(N) 降至 O(log1.5(N)),但树形跨层连线高度不规则 • 末级接高速对数前缀加法器 (如 Kogge-Stone) 完成最终合并 B. 多位移位器: 阵列式 vs 对数桶形 (P46 23:45): 1. 阵列移位器 (Crossbar/Array): 译码器选通 1 行传输管 信号仅穿过 1 级传输管,但需要 2K 条控制线与 O(N2) 面积 + 译码器 2. 对数桶形移位器 (Logarithmic Barrel Shifter): 移位量 Sh = (sK-1 … s1 s0)2 直接控制 K = log2(N) 级 MUX 第 m 级决定是否移位 2m 位:无需译码器,面积 O(N·log2 N)!

最高位预计算比较器动态功耗节省率():EN=AMSB⊙BMSB,Psaved(k bits)=1−12k    (k=1 省 50%,  k=2 省 75%)\text{EN} = A_{\text{MSB}} \odot B_{\text{MSB}}, \quad P_{\text{saved}}(k\text{ bits}) = 1 - \frac{1}{2^k} \;\;(k=1 \text{ 省 } 50\%,\; k=2 \text{ 省 } 75\%)

常规阵列乘法器 vs 进位保留乘法器关键路径():tp,ripple_mult=(N−1)tsum+(2N−3)tcarry≈3N→CSA 斜向传递tp,CSA_mult≈2Nt_{p,\text{ripple\_mult}} = (N-1)t_{\text{sum}} + (2N-3)t_{\text{carry}} \approx 3N \quad \xrightarrow{\text{CSA 斜向传递}} \quad t_{p,\text{CSA\_mult}} \approx 2N

对数级联桶形移位器级数():Sh=∑m=0log⁡2N−1sm2m  ⟹  Lshifter=log⁡2N 级 2:1 MUX(无需译码器,面积 O(Nlog⁡2N))\text{Sh} = \sum_{m=0}^{\log_2 N - 1} s_m 2^m \implies L_{\text{shifter}} = \log_2 N \text{ 级 2:1 MUX(无需译码器,面积 } O(N\log_2 N)\text{)}

1. 加减法器统一架构与最高位预计算低功耗比较器

算术逻辑单元(ALU)中的减法与大小比较本质上都是加法器的衍生运算。老师在 从电路复用一路剖析到低功耗架构创新:

  1. 补码加减法合一()
    利用二进制补码恒等式 −B=B‾+1-B = \overline{B} + 1,只需用控制信号 Sub∈{0,1}\text{Sub} \in \{0, 1\} 与操作数 BB 的每一比特做异或(Bi′=Bi⊕SubB_i' = B_i \oplus \text{Sub}),并令最低位进位输入 Cin,0=SubC_{\text{in},0} = \text{Sub},即可在零额外加法器面积下实现加减同构。

  2. 最高位预计算门控比较器(Precomputation Gated Comparator,)
    在常规 NN 位数字比较器中,为了判断 A>BA > B、A<BA < B 还是 A=BA = B,往往直接让 NN 位减法器算出 S=A−BS = A - B。然而老师指出一个惊人的统计事实:

    • 假设输入 A,BA, B 为均匀分布的随机二进制数,那么它们的最高有效位(MSB)AN−1A_{N-1} 与 BN−1B_{N-1} 不相等的概率高达 50%50\%!
    • 当 AN−1≠BN−1A_{N-1} \ne B_{N-1} 时(例如无符号数 AN−1=1,BN−1=0A_{N-1}=1, B_{N-1}=0),无论低 (N−1)(N-1) 位是什么数值,必然有 A>BA > B!此时让低 (N−1)(N-1) 位减法器跟着翻转计算完全是白白浪费动态功耗!
    • 门控架构实现:先用 1 个同或门算出使能信号 EN=AN−1⊙BN−1\text{EN} = A_{N-1} \odot B_{N-1}(仅当 AN−1=BN−1A_{N-1} = B_{N-1} 时 EN=1\text{EN}=1),再用 EN\text{EN} 通过与门对低 (N−1)(N-1) 位输入进行门控锁死(Ai′=Ai⋅EN,  Bi′=Bi⋅ENA_i' = A_i \cdot \text{EN},\; B_i' = B_i \cdot \text{EN})。
    • 功耗与延时权衡:在 50%50\% 的时钟周期内,EN=0\text{EN}=0 使后级 (N−1)(N-1) 位电路保持静默,立省约 50%50\% 动态功耗;若预看最高 2 位,则有 1−(1/2)2=75%1 - (1/2)^2 = 75\% 的概率锁死后级,省电 75%75\%!一般地,预看高 kk 位可省电 (1−2−k)(1 - 2^{-k}),但代价是当高 kk 位恰好相等(那个 2−k2^{-k} 的小概率最坏情况)时,信号必须先穿过 kk 位预计算门控逻辑才能启动后级减法器,导致最坏关键路径变长。

2. 进位保留加法器(CSA)与乘法器演进:从行波阵列(3N3N)到 Wallace 树

二进制乘法 P=A×BP = A \times B 的第一步是用 N×NN \times N 个二输入与门生成全部部分积(Partial Products)pi,j=AiBjp_{i,j} = A_i B_j,真正的速度瓶颈在于如何将这 NN 行部分积高效相加:

乘法器拓扑架构 进位与求和传递方式 最坏关键路径延时(N×NN \times N) 硬件规整度与特点
常规行波阵列乘法器 () 进位在每行内水平传递,求和沿列垂直传递 (N−1)tsum+(2N−3)tcarry≈3N(N-1)t_{\text{sum}} + (2N-3)t_{\text{carry}} \approx \mathbf{3N} 结构规整,但每行都要等水平进位,tsumt_{\text{sum}} 占 1/31/3、tcarryt_{\text{carry}} 占 2/32/3
进位保留阵列乘法器 () 前 N−1N-1 行用 CSA 将进位沿 45∘45^\circ 斜向送入下一行 + 末行 VMA (N−1)tcarry+(N−1)tVMA≈2N(N-1)t_{\text{carry}} + (N-1)t_{\text{VMA}} \approx \mathbf{2N} 面积几乎不变、版图极度规整,关键路径直接缩短 1/31/3(快 33%33\%)!
Booth + Wallace 树乘法器 () Radix-4 Booth 减半行数 + 3:2 CSA 树对数层压缩 + 末级对数加法器 O(log⁡1.5(N/2))+O(log⁡2N)=O(log⁡N)O(\log_{1.5}(N/2)) + O(\log_2 N) = \mathbf{O(\log N)} 速度达组合乘法极限,但跨层连线高度不规则,适合 32/64 位高速 DSP/CPU
  • 为什么进位保留加法器(CSA)能消灭水平进位链?()
    普通加法器是“2 输入 →\to 1 输出”,进位必须在同一行内从低位传到高位;而进位保留加法器(Carry-Save Adder)把 NN 个全加器当作独立的 3:2 压缩器(3:2 Compressor),接收 3 个加数向量 (X,Y,Z)(X, Y, Z),在 1 级全加器延时内直接输出本位和向量 SS 与进位向量 CC(满足 X+Y+Z=S+2CX + Y + Z = S + 2C)。进位 CiC_i 根本不在本行内部横向传播,而是直接斜向跨入下一行与新的部分积一起做下一轮 3:2 压缩,直到最后只剩 2 个向量时,才用 1 个高速矢量合并加法器(Vector-Merge Adder, VMA)一举算出最终乘积!

3. 多位移位器(Shifter):阵列移位器 vs 对数级联桶形移位器

在浮点运算对阶、算术移位与位域提取中,需要在单周期内完成任意位数(0∼N−10 \sim N-1 位)的移位。老师在 对比了两类移位器拓扑:

  1. 阵列移位器(Array / Crossbar Shifter)

    • 采用 KK-to-2K2^K 译码器(N=2KN = 2^K)将二进制移位控制码译为 NN 条独热(One-hot)字线,每条字线控制一排 NN 个传输管,将输入信号斜向跨接平移相应位数。
    • 优缺点:数据信号只需穿过 1 级传输管,但需要庞大的译码器,且传输管数量与连线复杂度高达 O(N2)O(N^2)(64 位需 64×64=409664 \times 64 = 4096 个单元),节点寄生电容极大。
  2. 对数级联桶形移位器(Logarithmic Barrel Shifter)

    • 二进制权重分解:任意移位量 Sh∈[0,N−1]\text{Sh} \in [0, N-1] 均可唯一表示为二进制形式 Sh=∑m=0K−1sm2m\text{Sh} = \sum_{m=0}^{K-1} s_m 2^m(其中 K=log⁡2NK = \log_2 N)。
    • 级联多路器架构:共串联 K=log⁡2NK = \log_2 N 级 2-to-1 MUX 阵列,直接用移位码的第 mm 位 sms_m 作为第 mm 级 MUX 的选择信号——当 s0=1s_0=1 时第 0 级移位 20=12^0=1 位(否则直通);当 s1=1s_1=1 时第 1 级移位 21=22^1=2 位;当 s2=1s_2=1 时第 2 级移位 22=42^2=4 位……
    • 显著优势:完全省去了译码器!对于 N=64N=64 位移位器,仅需 log⁡264=6\log_2 64 = 6 级 2-to-1 MUX 级联,硬件复杂度从 O(N2)O(N^2) 骤降至 O(Nlog⁡2N)O(N \log_2 N)。
LAB 5.7 · COMPARATOR, CSA MULTIPLIER & BARREL SHIFTER

MSB 预计算低功耗比较器、CSA 进位保存乘法器与对数桶形移位器(Barrel Shifter)沙盘

汇总第 5 章三大扩展算术单元:① 利用最高位 MSB 异或门控关断后续 63 位无效翻转的低功耗比较器;② 进位保存加法器(CSA)阵列乘法器;③ M×N 阵列移位器 vs log₂N 级对数桶形移位器!

32 位桶形移位器级数与晶体管数仅 5 级串联 (320 管 vs 阵列式 1024 管)每级按 2^k (1, 2, 4, 8, 16) 幂次决定移位或直通,无需译码器!
复旦 881 第 5 章算术单元收官定律利用二进制权重 (2^k) 与概率局部性实现架构级降维加减合一:B 异或控制端 Sel (Sel=0加 / Sel=1按位取反且C_0=1即补码减法)
1. 对数桶形移位器级数 log₂(N) 缓慢增长曲线64位任意移位仅需穿透 6 级传输门 (加1个中间缓冲器)
高性能算术数据通路 PPA 基准线拖动上方滑块或点击预设按钮实时重算工作点
2. 加减法器 / 预计算比较器 / CSA / 桶形移位器总览P46 四大实战算术模块硬件精要
加减法复用单元B_i ⊕ Sub 配合 C_0 = SubMSB 预计算比较器前2位门控拦截 75% 翻转CSA 3:2 进位保存进位斜传下级,末行快加合并对数桶形移位器5 级 2^k 幂次多路器级联复旦 881 物理因果链与核心判据:• 补码加减合一:A - B = A + (!B) + 1 ⇒ 用异或门 B_i ⊕ Sub 即可零代价合用同一套加法器• 预计算 (Precomputation):提取高权重特征位作门控使能 EN,是算法级低功耗设计的典范• 阵列 vs 桶形移位器:阵列移位仅过1管但面积 O(N²) 太大;桶形移位过 log₂N 管但面积仅 O(N·log₂N)
STEP-BY-STEP CIRCUIT & FORMULA DERIVATION · 课堂电路状态机与公式分步推演
Step ①提取最高位同或门控信号 EN=AN−1⊙BN−1\text{EN} = A_{N-1} \odot B_{N-1} 锁死比较器低 N−1N-1 位翻转
Pr⁡(AN−1≠BN−1)=50%  ⟹  EN=0 锁死后级输入,动态功耗直降 50%\Pr(A_{N-1} \ne B_{N-1}) = 50\% \implies \text{EN} = 0 \text{ 锁死后级输入,动态功耗直降 } 50\%

对应 :预计算(Precomputation)以极小的门控面积和微弱延时开销换取对数级动态功耗削减。

Step ②引入进位保留加法器(CSA)将阵列乘法器进位改为 45∘45^\circ 斜向跨行传递
tp,array=(N−1)tsum+(2N−3)tcarry≈3N  ⟶  tp,CSA≈2Nt_{p,\text{array}} = (N-1)t_{\text{sum}} + (2N-3)t_{\text{carry}} \approx 3N \;\longrightarrow\; t_{p,\text{CSA}} \approx 2N

对应 :消除前 N−1N-1 行的水平进位链,仅在最后一行使用矢量合并加法器(VMA),关键路径缩短 1/31/3。

Step ③结合 Booth 编码、Wallace 树与 log⁡2N\log_2 N 级桶形移位器构建高性能算术通路
N 行部分积→BoothN2 行→Wallace CSA Tree2 行→Prefix VMAProductN \text{ 行部分积} \xrightarrow{\text{Booth}} \frac{N}{2} \text{ 行} \xrightarrow{\text{Wallace CSA Tree}} 2 \text{ 行} \xrightarrow{\text{Prefix VMA}} \text{Product}

对应 :将乘法与多位移位的延时双双推进至 O(log⁡2N)O(\log_2 N) 对数极限。

PPA 工程折中与复旦 881 高频母题思辨 (CRITICAL INSIGHT & 881 PITFALL)

【复旦 881 综合思辨】课堂 的全加器单元优化方向之问:在设计常规行波进位加法器(RCA)时,我们总是千方百计优化进位传播延时 tcarryt_{\text{carry}},而不太关心求和延时 tsumt_{\text{sum}};但在设计常规无符号阵列乘法器(Array Multiplier)时,为什么老师特别强调“也必须重视优化全加器的求和延时 tsumt_{\text{sum}}”? 对比两者的关键路径精确表达式即可一目了然:

  1. 在 NN 位行波进位加法器(RCA)中: tp,RCA=tsetup+(N−1)tcarry+1⋅tsumt_{p,\text{RCA}} = t_{\text{setup}} + (N - 1)t_{\text{carry}} + 1 \cdot t_{\text{sum}} 无论位宽 NN 有多大(哪怕 N=64N=64),求和异或延时 tsumt_{\text{sum}} 在关键路径上永远只出现 1 次(权重为 O(1/N)O(1/N)),而 tcarryt_{\text{carry}} 出现了 (N−1)(N-1) 次!因此优化 RCA 只需全力压低 tcarryt_{\text{carry}}。
  2. 在 N×NN \times N 常规阵列乘法器中(): 每一行全加器算出的本位和 SS 都要向下传递给下一行全加器作为输入,因此最坏关键路径包含 (N−1)(N-1) 次求和延时 tsumt_{\text{sum}} 与 (2N−3)(2N-3) 次进位延时 tcarryt_{\text{carry}}: tp,array_mult=(N−1)tsum+(2N−3)tcarryt_{p,\text{array\_mult}} = (N - 1)t_{\text{sum}} + (2N - 3)t_{\text{carry}} 在这里,tsumt_{\text{sum}} 的系数同样与位宽 NN 成线性正比,占据了总关键路径约 1/31/3 的权重(tcarryt_{\text{carry}} 占 2/32/3 权重)!如果全加器的 tsumt_{\text{sum}} 很慢,阵列乘法器的速度就会被严重拖累——或者更进一步,直接改用进位保留乘法器(Carry-Save Multiplier)让每行耗时仅取决于 max⁡(tsum,tcarry)\max(t_{\text{sum}}, t_{\text{carry}}) 并省去前 (N−1)(N-1) 行的水平行波!
本节方法论与考题要点沉淀 · KEY TAKEAWAYS
  • 预计算低功耗比较器:先比较最高 kk 位,一旦不等(概率 1−2−k1 - 2^{-k})即通过门控锁死低 (N−k)(N-k) 位输入,预看 1 位立省 50%50\% 动态功耗。

  • CSA 与乘法器加速:进位保留加法器(3:2 压缩器)本级无水平进位传播;将阵列乘法器改为进位斜向跨行传递后,关键路径从 ≈3N\approx 3N 缩短 1/31/3 至 ≈2N\approx 2N。

  • Wallace 树与对数桶形移位器:Booth 编码减半部分积行数,Wallace 树按 O(log⁡1.5N)O(\log_{1.5} N) 层压缩部分积;对数桶形移位器用 log⁡2N\log_2 N 级 MUX 直接移位 2m2^m 位,省去译码器。

FUDAN 881 & CLASSROOM CHECKS · 第 12 讲随堂思辨与 881 母题自测

检验你是否真正掌握了「算术运算单元(Ⅱ):进位选择加法器、对数延时加法器与其他运算单元」的物理机制与 881 考题边界

先独立判断,再展开详细解析。每道题均紧扣本讲(P44–P46)课堂追问与复旦 881 数字集成电路真题母题。

CHECK 01

【复旦 881 真题风格 · 进位选择加法器硬件开销与 STA 特性】关于进位选择加法器(Carry-Select Adder, CSLA,),下列分析正确的是:

选择答案

CHECK 02

【复旦 881 真题风格 · 平方根进位选择加法器(Square-Root CSLA)定量计算】设计一个 N=16N=16 位的不等宽平方根进位选择加法器(),设 tsetup=tcarry=tmux=tsum=1 单位t_{\text{setup}} = t_{\text{carry}} = t_{\text{mux}} = t_{\text{sum}} = 1\text{ 单位},首组位宽取 M1=2M_1 = 2,其余各组位宽按 2,2,3,4,52, 2, 3, 4, 5 递增(共 K=5K=5 组,恰为 1616 位)。则该加法器到达最高位和 S16S_{16} 的总关键路径延时为(对比 16 位 4×44\times 4 等宽 CSLA 的 10 单位10\text{ 单位}):

选择答案

CHECK 03

【复旦 881 真题风格 · 黑圆点前缀算子(Dot Operator)代数性质】在对数延时加法器()中,黑圆点算子定义为 (Gi:j,Pi:j)=(Gi:k,Pi:k)∙(Gk−1:j,Pk−1:j)=(Gi:k+Pi:kGk−1:j,  Pi:kPk−1:j)(G_{i:j}, P_{i:j}) = (G_{i:k}, P_{i:k}) \bullet (G_{k-1:j}, P_{k-1:j}) = (G_{i:k} + P_{i:k} G_{k-1:j},\; P_{i:k} P_{k-1:j})。关于该算子的性质,下列叙述错误的是:

选择答案

CHECK 04

【复旦 881 真题风格 · Kogge-Stone、Sklansky 与 Brent-Kung 三大前缀树对比】对于 N=16N=16 位对数前缀加法器(),关于 Kogge-Stone (KS)、Sklansky 与 Brent-Kung (BK) 三种树拓扑的比较,下列完全正确的一项是:

选择答案

CHECK 05

【复旦 881 真题风格 · 最高位预计算低功耗比较器】在 N=32N=32 位数字比较器中采用“预计算(Precomputation,)”低功耗技术:先独立比较两个随机无符号输入数 A,BA, B 的最高 22 位(A31,A30A_{31}, A_{30} 与 B31,B30B_{31}, B_{30}),仅当这高 22 位完全相等时才打开门控让低 3030 位减法器工作。假设输入服从均匀随机分布,则该设计大约可节省后级减法器多少比例的动态翻转功耗?

选择答案

CHECK 06

【复旦 881 真题风格 · 进位保留乘法器与对数桶形移位器】关于 N×NN \times N 乘法器与 NN 位移位器(),下列说法错误的是:

选择答案
本讲核心概念、器件符号与中英术语对照 (10 项)
预计算 (Precomputation)

一种经典的“空间换时间”或“局部提前裁决省功耗”技术:在进位选择加法器中指提前并行算出 Cin=0C_{\text{in}}=0 与 Cin=1C_{\text{in}}=1 两套结果;在低功耗比较器中指先比较最高位(MSB),若不等则门控关断低位电路以节省 50%50\% 以上动态功耗。

等宽进位选择加法器 (Linear Carry-Select Adder)

将 NN 位分为 K=N/MK=N/M 个等宽小组,每组内部并行配置假定 Cin=0C_{\text{in}}=0 与 Cin=1C_{\text{in}}=1 的双进位链并用 MUX 选择。无 STA 伪路径且省去末组行波,最优分组 M∗=Ntmux/tcarryM^* = \sqrt{N t_{\text{mux}}/t_{\text{carry}}} 下主项延时为 2N tcarry tmux2\sqrt{N\,t_{\text{carry}}\,t_{\text{mux}}}(比进位跳转快 30%30\%)。

平方根进位选择加法器 (Square-Root Carry-Select Adder)

为消除等宽 CSLA 高位组的“蓝色空闲等待圈”,令各组位宽按等差数列逐级递增 11 位(如 16 位分 2,2,3,4,52, 2, 3, 4, 5)。由 N≈K2/2N \approx K^2/2 得组数 K≈2NK \approx \sqrt{2N},使组内进位与前级 MUX 选择信号同时到达,主项延时再降 30%30\% 至 2N tcarry tmux\sqrt{2N\,t_{\text{carry}}\,t_{\text{mux}}}。

黑圆点前缀算子 (Dot Operator •)

对数延时加法器中的核心二元合并算子:(Gi:j,Pi:j)=(Gi:k,Pi:k)∙(Gk−1:j,Pk−1:j)=(Gi:k+Pi:kGk−1:j,  Pi:kPk−1:j)(G_{i:j}, P_{i:j}) = (G_{i:k}, P_{i:k}) \bullet (G_{k-1:j}, P_{k-1:j}) = (G_{i:k} + P_{i:k}G_{k-1:j},\; P_{i:k}P_{k-1:j})。硬件仅需 1 个 AO21 与 1 个 AND2;满足结合律与重叠幂等性,但不满足交换律。

Kogge-Stone 加法器 (Kogge-Stone Tree Adder)

为每一比特构建独立平移交错二叉树的并行前缀加法器。逻辑层数达理论下限 log⁡2N\log_2 N,每节点最大扇出仅为 22(速度最快),但水平跨距交叉连线最密集、面积与功耗开销最大。

Sklansky 加法器 (Sklansky Tree Adder)

在 log⁡2N\log_2 N 层二叉树归约中最大化复用中间前缀节点的树形加法器。消除了长跨距交叉线且单元数大幅减少,但被复用的前缀根节点最大扇出高达 N/2N/2(如 16 位推 8 个负载),需额外缓冲。

Brent-Kung 加法器 (Brent-Kung Tree Adder)

由 log⁡2N\log_2 N 层正向归约树(Forward Tree)与 (log⁡2N−1)(\log_2 N - 1) 层反向分发树(Reverse Tree)级联而成的树形加法器。最大扇出严格 ≤2\le 2、连线最简、面积最小,代价是总逻辑层数翻倍为 2log⁡2N−12\log_2 N - 1。

进位保留加法器 (Carry-Save Adder, CSA / 3:2 压缩器)

由 NN 个互不横向连接的全加器组成的三输入两输出压缩级,在 1 级全加器延时内将三个加数 (X,Y,Z)(X, Y, Z) 转化为本位和向量 SS 与左移 1 位的进位向量 CC(X+Y+Z=S+2CX+Y+Z = S + 2C)。用于消除多操作数累加中的水平进位链。

进位保留乘法器与 Wallace 树 (Carry-Save & Wallace Tree Multiplier)

进位保留阵列乘法器将前 (N−1)(N-1) 行全加器的进位沿 45∘45^\circ 斜向送入下一行,最后一行用矢量合并加法器(VMA)求和,将关键路径从常规阵列的 3N3N 缩短至 2N2N;Wallace 树进一步用 CSA 树将部分积在 O(log⁡1.5N)O(\log_{1.5} N) 层内对数压缩至 2 行。

对数级联桶形移位器 (Logarithmic Barrel Shifter)

利用移位量的二进制展开 Sh=∑m=0K−1sm2m\text{Sh} = \sum_{m=0}^{K-1} s_m 2^m,直接用第 mm 位控制信号 sms_m 控制第 mm 级 2-to-1 MUX 阵列(决定是否移位 2m2^m 位)的移位器。无需译码器,仅需 log⁡2N\log_2 N 级 MUX,面积复杂度为 O(Nlog⁡2N)O(N\log_2 N)。

硅基与时序 · 复旦大学《数字集成电路设计基础》深度精读讲义 · 原课无遮挡 1.5× 对位回看与复旦 881 考纲联动