Appearance
算术逻辑单元(ALU)
大纲定位
二(二)1 基本运算部件:加法器、算术逻辑部件(ALU)
要求:理解一位全加器如何串成多位加法器,看懂串行进位与先行进位的差别在哪、为什么后者更快,并知道 ALU 除结果外还输出哪几个标志。
标志位的具体表达式与用法在 补码加减运算与溢出判断,本篇只讲它们从电路的哪个位置引出。
考情分析
ALU 相关内容在 408 中以选择题为主,考察加法器的进位传播方式、CLA 的基本思想和延迟分析,以及 ALU 产生的标志位含义。偶尔大题会要求写出先行进位的逻辑表达式。
ALU 概述
ALU(Arithmetic Logic Unit)是 CPU 中执行算术运算和逻辑运算的核心部件。
ALU 执行的操作包括:
- 算术运算:加、减(通过求补转换为加法)、乘、除
- 逻辑运算:AND、OR、NOT、XOR
- 移位运算:逻辑移位、算术移位、循环移位
ALU 的标志位输出
大纲二(二)2 明写「标志位的生成」,综合应用题按逻辑表达式给分。设结果为
| 标志位 | 名称 | 表达式 | 对谁有意义 |
|---|---|---|---|
| ZF | 零标志 | 两者 | |
| SF(N) | 符号标志 | 带符号数 | |
| OF(V) | 溢出标志 | 带符号数 | |
| CF | 进位/借位标志 | 无符号数 |
CF 不等于
减法在硬件上是
CF 和 OF 的区别:CF 对无符号数有意义,OF 对有符号数有意义,同一次运算可以 CF=1 而 OF=0。四个标志存入标志寄存器 FR,其输出连到 CU 的输入端,供条件转移指令决策。
完整推导、减法版 OF 的独立表达式与算例,见 补码加减运算 · 标志位的生成。
一位全加器
全加器(Full Adder, FA)是加法器的基本构建单元。三个输入
定义两个辅助量:
- 生成量(Generate):
,本位无论低位进位如何都产生进位 - 传播量(Propagate):
,低位进位能通过本位继续传播
则进位公式简化为:
串行加法器
最简结构:只用 1 个全加器,每个时钟周期处理 1 位,进位通过触发器存储并传递到下一周期。
- 优点:硬件成本最低
- 缺点:
位加法需要 个时钟周期
串行进位加法器(行波进位)
用
进位像波浪一样从低位逐级传播到高位,因此也叫行波进位加法器(Ripple Carry Adder)。
延迟分析:设每个 FA 的进位延迟为
先行进位加法器(CLA)
CLA(Carry Lookahead Adder)的核心思想:所有进位并行计算,消除逐级等待。
将递推公式展开,消去对低位进位的依赖:
每个
CLA 的层次结构
实际应用中,4 位一组做 CLA,组间可以串行或再做一级 CLA:
| 层次 | 结构 | |
|---|---|---|
| 组内串行 + 组间串行 | 纯行波加法器 | |
| 组内并行 + 组间串行 | 4 位 CLA + 行波 | |
| 组内并行 + 组间并行 | 两级 CLA |
加法器对比总结
| 类型 | 硬件成本 | 延迟 | 适用场景 |
|---|---|---|---|
| 串行加法器(1 个 FA) | 最低 | 低速场合 | |
| 行波进位( | 中等 | 一般场合 | |
| CLA(组内+组间并行) | 高 | 高速处理器 |
交互可视化
例题
例 1:4 位 CLA,已知
先算
| 0 | 0 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 2 | 0 | 1 | 0 | 1 |
| 3 | 1 | 0 | 0 | 1 |
验证:
例 2:16 位加法器采用 4 位一组的两级 CLA,设门延迟为
| 阶段 | 延迟 | 说明 |
|---|---|---|
| 计算各位 | 由 | |
| 组内 CLU 产生组级 | 与、或两级 | |
| 组间 CLU 产生 4 个组进位 | 由 | |
| 组进位回灌后,各组内部再算其余进位 | ← 最容易漏的一级 | |
| 求和 |
总延迟
别把这一级漏掉
组间 CLU 只算出了每组的进位输入(
考点清单
- [ ] ALU 的输入(操作数 + 功能选择)和输出(结果 + 标志位)
- [ ] ZF、SF、CF、OF 四个标志位的含义及区别
- [ ] 全加器公式:
, - [ ] 生成量
,传播量 - [ ] 行波进位延迟
,与位数成正比 - [ ] CLA 核心:展开进位表达式,所有进位只依赖
- [ ] 组内并行 + 组间并行可实现常数级延迟