【自学嵌入式:计算机组成原理】28. 系统的加减乘除组件
28. 系统的加减乘除组件
逻辑运算电路
1. 基本逻辑门电路(NOT、AND、OR)
计算机的逻辑运算基于布尔代数,通过基本逻辑门电路实现。核心门电路包括:
(1)非门(NOT)
- 功能:对输入信号取反(1→0,0→1)。
- 数学表示:输出为输入的逻辑非,记为 \(Y = \neg A\)(或 \(Y = \overline{A}\) )。
- 真值表(输入输出关系):
输入 \(A\) 输出 \(\neg A\) 0 1 1 0
(2)与门(AND)
- 功能:仅当所有输入为1时,输出为1;否则输出0。
- 数学表示:输出为输入的逻辑与,记为 \(Y = A \land B\)(或 \(Y = A \cdot B\) )。
- 真值表:
输入 \(A\) 输入 \(B\) 输出 \(A \land B\) 0 0 0 0 1 0 1 0 0 1 1 1
(3)或门(OR)
- 功能:只要任意输入为1,输出为1;否则输出0。
- 数学表示:输出为输入的逻辑或,记为 \(Y = A \lor B\)(或 \(Y = A + B\) ,注意与算术加法区分)。
- 真值表:
输入 \(A\) 输入 \(B\) 输出 \(A \lor B\) 0 0 0 0 1 1 1 0 1 1 1 1
2. 零检测电路
零检测电路用于判断一组数据是否全为0,核心逻辑是或运算的扩展:
- 原理:将数据的所有位输入或门网络。若所有位为0,则或运算结果为0(表示“全零”);若任意位为1,则或运算结果为1(表示“非零”)。
- 示例(检测8位数据 \(D_7D_6\cdots D_0\) ):
零标志可表示为:\[\text{零标志} = D_7 \lor D_6 \lor \cdots \lor D_0 \]若结果为0,说明数据全零;否则非零。
CPU的核心工作部件——ALU(算术逻辑单元)

ALU(Arithmetic and Logic Unit)是CPU的核心模块,负责执行算术运算(加减乘除等)与逻辑运算(与、或、非等),其抽象模型简化了硬件设计复杂度。
1. ALU的功能与抽象意义
- 作用:
封装底层电路细节,向工程师提供“输入→运算→输出”的抽象接口,降低系统设计复杂度。 - 核心价值:
让设计者无需关注晶体管级电路,只需通过“输入、操作码(Opcode)、输出、标志位”交互,即可实现复杂运算。
2. ALU的输入与输出(结合结构图示)
ALU的典型结构包含三类关键信号:
-
输入:
- \(\text{In A}\)、\(\text{In B}\):参与运算的两个操作数(如算术运算的两个数、逻辑运算的位集合)。
- \(\text{Opcode}\):操作码,指定ALU执行的运算类型(如加法、与运算、或运算等)。
-
输出:
- \(\text{Out}\):运算结果(如算术运算的和、逻辑运算的布尔结果)。
-
标志位(Flag):
- \(\text{Carry flag}\)(进位/借位标志):算术运算时,若结果超出位宽(如8位加法产生第9位),置1;否则置0。
- \(\text{Zero flag}\)(零标志):若运算结果为0,置1;否则置0(与“零检测电路”逻辑关联)。
3. ALU的运算逻辑
ALU通过硬件电路组合实现两类运算:
-
算术运算:
依赖加法器、移位器等电路,执行加减乘除(本质:加法为基础,乘法=多次加法,除法=多次减法,结合移位优化)。 -
逻辑运算:
依赖基本逻辑门(与、或、非),执行位级逻辑操作(如按位与、按位或、按位取反)。
4. 标志位的作用
标志位是ALU向CPU反馈运算状态的关键,支持程序流程控制(如条件跳转):
- Zero flag:判断运算结果是否为0(如比较操作 \(A == B\) ,等价于 \(A - B\) 的结果是否为0)。
- Carry flag:判断算术运算是否溢出(如无符号数加法超出最大值时,需通过进位标志处理)。
总结
- 逻辑运算电路:通过非门、与门、或门实现基础逻辑操作;零检测电路利用或运算判断数据是否全零。
- ALU的核心地位:作为CPU的“运算引擎”,封装算术与逻辑运算细节,通过输入(操作数、操作码)、输出(结果、标志位)与CPU协同。
- 设计思想:抽象与分层——ALU隐藏底层复杂度,让上层设计聚焦功能逻辑,体现计算机体系结构的“分层优化”理念。
掌握ALU与逻辑电路的关系,可理解CPU如何“高效执行运算”并“反馈状态”,为后续学习指令集、程序执行流程奠定基础。
浙公网安备 33010602011771号