堂前燕
计算机 / AI · 初中 /高中 · 数字电路 · 逻辑门 · 二进制 · CPU

二进制加法器

计算机怎么算 1+1 ?XOR 和 AND 两种逻辑门,拼出半加器、全加器,串起来就是 CPU 加法的原型。

两个逻辑门

整个 CPU 的加法器都建立在这两个逻辑门上:

XOR(异或):两输入不同时为 1

0 XOR 0 = 0       1 XOR 0 = 1
0 XOR 1 = 1       1 XOR 1 = 0

AND(与):两输入都为 1 时为 1

0 AND 0 = 0       1 AND 0 = 0
0 AND 1 = 0       1 AND 1 = 1

半加器:1 位加法

加两位二进制位 A、B(不考虑进位):

ABSumCarry
0000
0110
1010
1101

观察:

  • Sum = A XOR B
  • Carry = A AND B

这就是半加器。1 个 XOR 加 1 个 AND 就是全部。

全加器:带”进位输入”

实际多位加法每一位都要接收前一位送来的进位。所以输入变成 3 个:A、B、C_in。

ABC_inSumC_out
00000
00110
01010
01101
10010
10101
11001
11111

公式:

  • Sum = A XOR B XOR C_in
  • C_out = (A AND B) OR (C_in AND (A XOR B))

全加器 = 两个半加器 + 一个 OR 门

4 位加法器:串起来

4 个全加器首尾相接,前一位的 C_out 接下一位的 C_in。最低位的 C_in 接 0(没有更低的位送进位)。

这种结构叫行波进位加法器(ripple-carry adder)

  • 优点:电路最简单,每位只用了 ~5 个门
  • 缺点:高位要等低位的进位”传播”过来,速度由位数线性决定

调上面的 A 和 B,看进位怎么从右往左传播。红色线 = 1,灰色线 = 0。

从这里到现代 CPU

  • 64 位加法器:64 个全加器,串起来要等 64 级延迟,太慢
  • 超前进位加法器(CLA):预先并行算出”是否会产生进位”,把延迟从 O(n) 降到 O(log n)
  • 乘法器:累加移位的加法器
  • 除法器:减法 + 比较 + 移位
  • 浮点单元:复杂得多,但本质还是定点运算 + 指数处理

整个 CPU 算术逻辑单元(ALU)就是几百万个这样的门拼起来。

  • Intel i9 大约 200 亿晶体管
  • 每个 NAND / NOR 门 ≈ 4 个晶体管
  • 所以 i9 内部 ≈ 50 亿个逻辑门

从”原子的开关”到 ChatGPT

逻辑门可以用任何能”被控制开关”的东西做:

  • 19 世纪:机械继电器
  • 20 世纪初:真空管(早期计算机)
  • 1947 年:晶体管发明
  • 1958 年:集成电路
  • 今天:纳米级 CMOS 晶体管

无论物理实现是什么,只要能稳定地表示 0 和 1,并且实现 NAND / NOR,就能构造出整个计算机。NAND 是”通用逻辑门” —— 单独靠它能组合出 AND、OR、XOR、半加器、全加器、寄存器、内存、CPU…… 一切。

ChatGPT 跑的几万亿次乘加,最终归结到的就是这种 4 位加法器的放大版。