半加器的局限:无法接收低位传递过来的进位信号,只能处理两个独立 bit 相加,多位数二进制加法不能直接用。
全加器 Full‑Adder
全加器拥有 3 个输入:加数 A、加数 B、来自低位的进位;输出本位和、向高位的进位。由两组半加器组合实现,可以处理带进位的二进制加法运算。
把多个全加器串联排列,低位进位输出接入下一位全加器的进位输入,就可以得到多位加法器:2 位、4 位、8 位…… 一直扩展到 CPU 的 32 位 / 64 位加法电路。
这套加法相关电路,就是 CPU 内部ALU 算术逻辑单元的核心组成部分。ALU 接收两组待运算数据,外加一条操作标志位,告诉它执行加法、减法、与或逻辑等运算,输出运算结果,相当于 CPU 内部的高速计算器。
减法可以通过二进制补码,复用加法器电路实现;乘法除法也是大量加法、移位电路组合而成。
三、寄存器:晶体管如何记住数据
光会计算还不够,运算的结果需要保存。单个晶体管开关可以保存 1bit 信息(记住 0 或者 1);把 8 个晶体管放到一组,就可以保存 1 字节(8bit),可以存储 0‑255 之间数字。
CPU 内部大量这样的小型高速存储单元,叫做寄存器,速度远快于内存。我们可以把数字写入寄存器,也可以从寄存器读出数据交给 ALU 做运算。
举一个最简单的硬件动作:读取寄存器 A、寄存器 B 的数据送入 ALU 做加法,计算完成把结果写回寄存器 C。这一套动作,就对应一条汇编机器指令。
四、CPU 三大核心部件:ALU、寄存器、控制单元 CU
一颗 CPU 核心主要由三大部分协作完成工作:
ALU 算术逻辑单元:负责所有数学运算、逻辑判断;
通用寄存器组:CPU 片内高速临时存储,存放参与运算的数据;
CU 控制单元 Control Unit:整套 CPU 的总指挥,由大量逻辑门硬连线实现。它读取二进制机器指令,解析出操作类型、源寄存器、目标寄存器,发出电信号指挥 ALU、寄存器协同完成整条指令的执行。
机器指令本身就是一串二进制数字:一部分 bit 代表做什么操作(加法、读取、跳转),另一部分 bit 指定用哪几个寄存器。早期硬件直接通过电路布线识别这一串二进制编码。
人类直接手写二进制机器指令效率极低,于是诞生汇编语言,一条汇编语句大致对应一条机器指令;再由编译器、汇编器,把汇编翻译成 CPU 能读懂的二进制机器码。高级语言 C、Python、Java,则会经过编译 / 解释,最终向下转化成大量汇编‑机器指令。
五、指令周期:取指‑译码‑执行‑写回,CPU 无限循环这套流程
所有软件的底层原点,是晶体管开关的 0 与 1。晶体管组成逻辑门,逻辑门搭建加法器 ALU 运算单元;搭配寄存器保存数据,控制单元 CU 指挥整套硬件;依靠取指‑译码‑执行‑写回的指令周期,配合程序计数器 PC 的跳转机制,硬件得以实现顺序、分支、循环全部程序逻辑。
高级语言只是面向人类的抽象表达,最终全部会拆解为亿万次芯片内部电信号的翻转。理解这套链路,就打通了软件代码到硅基硬件之间的认知鸿沟。