在计算机组成原理的学习中,有一个部件几乎贯穿所有核心内容------它不显山露水,却默默支撑着每一条指令的执行;它没有复杂的控制逻辑,却是整个 CPU 运算能力的源泉。这个部件,就是算术逻辑单元(Arithmetic Logic Unit,简称 ALU)。
对于考研同学而言,ALU 是高频考点,尤其在选择题和电路图分析题中频频出现。但很多同学对它的理解仍停留在"能做加减乘除"的模糊层面,不清楚它在 CPU 中的确切地位、功能边界、控制机制,更难以准确解读真题中给出的 ALU 图示。本文将带你从作用、功能、结构到图示识别,层层深入,彻底掌握 ALU 的全部关键细节。
一、ALU 在 CPU 中的地位:运算器的核心,加法器的延伸
要理解 ALU,首先要把它放在 CPU 的整体架构中来看。
我们知道,中央处理器(CPU)由两大核心部件构成:控制器(Control Unit)和运算器(Arithmetic Unit)。
- 控制器 负责"指挥":它从内存中取出指令,解析其含义,并向 CPU 内部各部件(包括运算器)发出相应的控制信号。
- 运算器负责"干活":它接收控制器的命令,对数据进行实际处理。
而运算器内部又包含几个关键组件:
- 通用寄存器组:用于暂存参与运算的操作数和中间结果;
- 程序状态字寄存器(PSW):记录运算后产生的状态信息(如是否溢出、结果是否为零等);
- 算术逻辑单元(ALU) :真正执行运算的硬件模块。
🔑 关键结论一 :ALU 是运算器的核心。
但这还没完。再往深一层看,ALU 自身也有一个"核心"------那就是加法器。
为什么?因为在数字电路中,几乎所有算术运算最终都可以归约为加法操作:
- 减法 = 加上被减数的补码;
- 乘法 = 多次加法与移位的组合;
- 除法 = 多次减法(即加法)与移位。
因此,加法器是 ALU 的基石,也是整个 CPU 运算能力的物理起点。
🔑 关键结论二 :加法器是 ALU 的核心。
这两个结论("ALU 是运算器的核心"、"加法器是 ALU 的核心")看似简单,却是考研选择题中的经典陷阱题来源。务必牢记。

二、ALU 到底能做什么?------ 功能全景解析
ALU 并非只能做加减法。它的名字已经揭示了它的两大类功能:算术运算(Arithmetic) 和 逻辑运算(Logic)。此外,还有若干辅助功能,共同构成了完整的运算能力集。
2.1 算术运算(Arithmetic Operations)
这是 ALU 最基本的职责,包括:
- 加法(Addition) :A+BA + BA+B
- 减法(Subtraction) :A−BA - BA−B,通常通过 A+(−B)A + (-B)A+(−B) 实现,其中 −B-B−B 是 BBB 的补码
- 乘法(Multiplication):在简单 ALU 中可能仅支持移位+加法实现;复杂 ALU 可能集成专用乘法器
- 除法(Division):同理,常通过重复减法或查表实现
⚠️ 注意:在考研范畴内,不要求掌握乘除的具体电路实现,只需知道 ALU "支持"这些功能即可。
2.2 逻辑运算(Logic Operations)
除了数值计算,ALU 还能对二进制位进行布尔操作,这是位级编程和条件判断的基础:
- 与(AND) :A&BA \& BA&B
- 或(OR) :A∣BA | BA∣B
- 非(NOT) :通常对单操作数取反,∼A\sim A∼A
- 异或(XOR) :A⊕BA \oplus BA⊕B,常用于校验、加密、清零等
- 移位(Shift):包括逻辑左移、逻辑右移、算术右移等
这些操作虽然不涉及"数值大小",但在地址计算、掩码操作、标志位设置中极为关键。
2.3 其他重要功能
除了上述两类,ALU 通常还支持两种特殊但实用的功能:
(1)求补码(Two's Complement)
- 功能描述 :输入一个原码(如 BBB),输出其对应的补码(−B-B−B)。
- 实现方式:通常通过"按位取反 + 1"完成。
- 用途:使得减法可以统一为加法处理,简化硬件设计。
例如,若 B=0101B = 0101B=0101(+5),则 ALU 在"求补码"模式下输出 101110111011(-5 的 4 位补码)。
(2)直送(Pass-through / Bypass)
- 功能描述:输入什么,就输出什么,不做任何处理。
- 用途 :
- 将某个操作数直接传送到目标寄存器;
- 在某些指令(如
MOV)中作为数据通路的一部分; - 避免不必要的运算延迟。
例如,当控制信号指定"直送 B"时,无论 AAA 是什么,输出 F=BF = BF=B。
✅ 总结 ALU 功能总数 :
假设某 ALU 支持:
- 算术运算:4 种(+、−、×、÷)
- 逻辑运算:5 种(AND、OR、NOT、XOR、Shift)
- 其他功能:2 种(求补码、直送)
则总功能数 k=4+5+2=11k = 4 + 5 + 2 = 11k=4+5+2=11。

三、ALU 的输入输出结构:数据与控制的接口
理解了功能,我们再来看 ALU 的外部接口------这是看懂电路图的关键。
3.1 数据输入与输出
- 两个 nnn 比特输入 :通常标记为 AAA 和 BBB,代表参与运算的两个操作数。
- 一个 nnn 比特输出 :标记为 FFF(Function Result),即运算结果。
这里的 nnn 非常重要------它等于计算机的机器字长。
📌 关键点 :机器字长由 ALU 的运算位数 nnn 决定 。
例如,若 ALU 处理 16 位数据,则该 CPU 是 16 位机;若为 32 位,则是 32 位机。
因此,在真题图示中看到"AAA 和 BBB 为 16 比特",即可断定该系统字长为 16 位。
3.2 控制信号:决定 ALU "做什么"
- mmm 比特控制信号 :通常标记为 ALU OP(Operation Code),由控制器根据当前指令生成。
- 作用:告诉 ALU 当前应执行哪一种功能(加?与?直送?)。
那么,mmm 应该是多少位?
这取决于 ALU 支持的功能总数 kkk。由于 mmm 位二进制数最多表示 2m2^m2m 种状态,要覆盖 kkk 种功能,必须满足:
m≥⌈log2k⌉ m \geq \lceil \log_2 k \rceil m≥⌈log2k⌉
举例说明:
| 功能总数 kkk | 所需控制位数 mmm | 说明 |
|---|---|---|
| 8 | 3 | 23=82^3 = 823=8,刚好 |
| 11 | 4 | $2^3 = 8 ✅ 考试重点 :给定功能列表,计算 mmm 的最小值。 |
例如:"某 ALU 支持 10 种功能,则控制信号至少需要 ⌈log210⌉=4\lceil \log_2 10 \rceil = 4⌈log210⌉=4 位"。
3.3 标志位输出:记录运算"副作用"
ALU 不仅输出结果 FFF,还会输出一组标志位(Flags),反映运算的特性。这些标志位通常包括:
| 标志 | 全称 | 含义 | 用途示例 |
|---|---|---|---|
| ZF | Zero Flag | 结果为零?(F=0F = 0F=0) | 条件跳转 JZ(Jump if Zero) |
| SF | Sign Flag | 有符号结果为负?(最高位为 1) | 判断正负 |
| OF | Overflow Flag | 有符号数溢出? | 检测加法是否超出表示范围(如 127 + 1 = -128) |
| CF | Carry Flag | 无符号数进位/借位? | 多精度加法、无符号比较 |
⚠️ 区分 OF 与 CF:
- OF 关注有符号数 的逻辑正确性(如 +127+1+127 + 1+127+1 不应等于 −128-128−128);
- CF 关注无符号数 的进位(如 255+1255 + 1255+1 产生进位)。
这些标志位会被写入 程序状态字寄存器(PSW) ,也称为 标志寄存器(Flag Register, FR)。
🔑 重要提示 :PSW 与 FR 是同一个寄存器的两种叫法。在真题中看到"FR",不要误以为是新部件。
3.4 进位输入/输出(Cin 与 Cout)
部分 ALU 还提供:
- Cin(Carry in):低位运算产生的进位输入;
- Cout(Carry out):本位运算产生的进位输出。
这主要用于多字节运算(如 32 位加法由两个 16 位 ALU 串联完成)。在考研中,了解其存在即可,一般不深究。
四、ALU 是如何工作的?------ 内部实现原理(简要了解)
虽然考试不要求掌握 ALU 的具体电路实现,但了解其基本思路有助于建立直观认识。

4.1 一种朴素的实现方式
最简单的 ALU 设计如下:
- 并行部署多个功能单元 :
- 一个加法器、一个与门阵列、一个或门阵列、一个移位器......每个对应一种功能。
- 同时输入 A 和 B :
- 所有功能单元同时工作,各自计算出结果。
- 用多路选择器(MUX)选结果 :
- 将所有功能单元的输出连接到一个多路选择器;
- 由 mmm 位控制信号决定选择哪一路输出作为最终结果 FFF。
💡 这种设计虽然硬件开销大(每个功能都要独立电路),但速度快(所有运算并行完成,只等 MUX 选择)。
4.2 为什么不用更省资源的设计?
有人可能会问:能否复用电路,比如用加法器实现减法,从而减少硬件?
答案是:可以,而且现代 CPU 确实这么做。但在基础模型中,为了清晰表达"ALU 支持多种独立功能",教材常采用上述并行结构。
📌 考试提醒:真题不会考"ALU 内部有几个加法器",但会考"控制信号如何选择功能"------而这正是通过多路选择器实现的。
五、如何看懂 ALU 的图示?------ 考研真题解码指南

在历年统考真题中,经常会出现包含 ALU 的电路图。能否快速准确解读,直接决定得分。
以 2022 年统考真题为例(典型图示):

5.1 图中关键要素解析
-
数据宽度:
- AAA、BBB、FFF 均为 16 比特 → 机器字长 = 16 位。
-
控制信号:
- 标记为 ALU OP ,用虚线箭头表示(符合控制信号绘图规范);
- 位数未标出,但可推断:若 ALU 支持 kkk 种功能,则 m≥⌈log2k⌉m \geq \lceil \log_2 k \rceilm≥⌈log2k⌉。
-
标志位输出:
- 输出 ZF、SF、OF、CF 四条线;
- 指向 FR(标志寄存器) → 即 PSW。
-
隐含信息:
- ALU 是组合逻辑电路(无时钟输入);
- 输出仅取决于当前输入和控制信号。
5.2 常见考题类型
类型一:控制信号位数计算
"某 ALU 支持 12 种运算功能,则控制信号至少需要多少位?"
解:⌈log212⌉=⌈3.58⌉=4\lceil \log_2 12 \rceil = \lceil 3.58 \rceil = 4⌈log212⌉=⌈3.58⌉=4 位。
类型二:标志位含义判断
"执行 80H+80H80H + 80H80H+80H(8 位有符号数)后,OF 和 CF 的值分别为?"
解:
- 80H=−12880H = -12880H=−128,−128+(−128)=−256-128 + (-128) = -256−128+(−128)=−256,超出 8 位有符号范围(-128~127)→ OF = 1;
- 无符号:128+128=256=100H128 + 128 = 256 = 100H128+128=256=100H,产生进位 → CF = 1。
类型三:ALU 地位判断
"下列关于 ALU 的说法正确的是:"
A. ALU 是控制器的核心
B. ALU 的核心是乘法器
C. ALU 是运算器的核心
D. ALU 属于存储器
答:C
六、总结:ALU 的五大核心要点
-
地位明确 :
CPU = 控制器 + 运算器;运算器的核心是 ALU ;ALU 的核心是加法器。
-
功能全面 :
支持算术(+ − × ÷)、逻辑(AND OR NOT XOR Shift)、求补码、直送等。
-
接口清晰:
- 输入:AAA、BBB(nnn 位)
- 输出:FFF(nnn 位)、标志位(ZF/SF/OF/CF)
- 控制:ALU OP(mmm 位,m≥⌈log2k⌉m \geq \lceil \log_2 k \rceilm≥⌈log2k⌉)
-
标志位关键:
- ZF:结果为零
- SF:有符号结果为负
- OF:有符号溢出
- CF:无符号进位
- 全部写入 PSW(= FR)
-
图示识别:
- 数据线为实线,控制线为虚线;
- 字长由 A/B/FA/B/FA/B/F 位数决定;
- 标志位指向 FR/PSW。
理解 ALU,不仅是掌握一个硬件模块,更是理解**计算机如何从"开关"走向"智能"**的第一步。它虽小,却是整个数字世界的运算基石。希望本文能助你在考研路上,轻松拿下这一高频考点。