L2·10^3 – 10^5
加法器
Adder / ALU
核心抽象算术单元
逻辑门组合出半加器和全加器,计算机从此会做算术。
学习进度:
What
加法器是用逻辑门搭建的算术电路。半加器计算两个 1-bit 数的和与进位;全加器额外接受低位进位。多个全加器串联构成行波进位加法器(Ripple Carry Adder)。更高效的方案包括超前进位加法器(Carry Lookahead Adder)和 Kogge-Stone 加法器。加法器是 ALU(算术逻辑单元)的核心组件。
Why
逻辑门只能做布尔运算,无法直接计算数值。加法器将布尔逻辑提升为算术运算,是计算机从'逻辑机器'进化为'计算机器'的关键一步。所有复杂的数学运算(乘法、除法、浮点运算)最终都分解为加法操作。
How
程序员通过 + 运算符使用加法的抽象。理解加法器有助于理解:为什么加法是 O(1) 而大数加法是 O(n);为什么 CPU 的 ALU 是性能瓶颈之一;为什么进位传播延迟限制了时钟频率。
Bottom-up:由下层如何构建
本层建立在以下层级之上:
Top-down:向上暴露什么接口
二进制加法进位传播ALU 基础
Programmer View:程序员视角
我能操作吗?
通过算术运算符(+、-、*、/)间接使用。底层由 ALU 硬件实现。
成本模型
| 指标 | 量级 | 备注 |
|---|---|---|
| 行波进位延迟 | O(n) 门延迟 | n 位加法器,进位逐级传播 |
| 超前进位延迟 | O(log n) 门延迟 | 额外硬件换取速度 |
| 面积 | O(n) 晶体管 | n 位全加器约 5n 个门 |
常见陷阱
- !整数溢出:当加法结果超出数据类型范围时,行为取决于语言(C 未定义,Java 截断)
- !进位链延迟:行波进位加法器中,最高位的进位需要等待所有低位完成,限制了时钟频率