计算机组成原理(八):加法器
在 计算机组成原理 中,加法器(Adder)是一个非常基础且重要的组件,用于执行二进制加法运算。加法器不仅在 算术逻辑单元(ALU) 中起着核心作用,而且在许多其他硬件模块中也有应用,如处理器的运算、乘法器、地址生成器等。
加法器的基本任务是将两个二进制数加在一起,并根据需要产生一个进位(carry)。在加法过程中,除了计算结果(sum)外,还需要处理进位(carry)的传播问题。
根据加法器的功能和复杂性,可以将其分为几种不同类型:半加器(Half Adder)、全加器(Full Adder)、多位加法器、进位选择加法器(Carry Lookahead Adder) 等。
半加器(Half Adder)
半加器是最基础的加法器,用来加两个单一的二进制位(A 和 B),并生成两个输出:
- 和(Sum, S):两个输入的和。
- 进位(Carry, C):两个输入相加时产生的进位。
半加器的真值表:
输入A | 输入B | 和 (S) | 进位 © |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
半加器的逻辑表达式:
- 和(S) =
A XOR B
- 进位(C) =
A AND B
结构:
- XOR 门用来计算和。
- AND 门用来计算进位。
半加器的局限性在于它不能处理来自低位的进位,因此在多位加法中,通常需要全加器来处理进位。
全加器(Full Adder)
全加器比半加器更加复杂,它能够处理三个输入:两个加数(A 和 B)以及来自低位的进位输入(Cin)。它输出两个值:
- 和(Sum, S):当前位的和。
- 进位(Carry-out, Cout):当前位的进位,作为下一个加法器的进位输入。
全加器的真值表:
输入A | 输入B | 进位Cin | 和 (S) | 进位Cout |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 1 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
全加器的逻辑表达式:
- 和(S) =
A XOR B XOR Cin
- 进位(Cout) =
(A AND B) OR (B AND Cin) OR (A AND Cin)
结构:
全加器由两个 XOR 门、两个 AND 门和一个 OR 门组成。首先,XOR 门计算和,然后使用 AND 门计算每一位的进位,最后通过 OR 门合并进位。
多位加法器
多个全加器可以级联起来实现多位二进制数的加法。假设我们需要加两个 N 位的二进制数 A = A[N-1] A[N-2] ... A[0]
和 B = B[N-1] B[N-2] ... B[0]
,我们可以使用 N 个全加器将它们逐位相加。
- 每个全加器负责一个比特的加法。
- 每个全加器的 进位输出(Cout) 将传递到下一个全加器的 进位输入(Cin)。
例如,4 位加法器的工作过程:
- 第 1 位(最低位)由第一个全加器加法:
S0 = A0 XOR B0 XOR Cin
,并产生进位Cout0
。 - 第 2 位:由第二个全加器加法:
S1 = A1 XOR B1 XOR Cout0
,并产生进位Cout1
。 - 第 3 位:由第三个全加器加法:
S2 = A2 XOR B2 XOR Cout1
,并产生进位Cout2
。 - 第 4 位:由第四个全加器加法:
S3 = A3 XOR B3 XOR Cout2
,并产生进位Cout3
。
最终输出为和 S3S2S1S0
和进位 Cout3
。
进位选择加法器(Carry Lookahead Adder)
传统的加法器通过级联多个全加器,每一位的进位需要传递到下一位,导致加法器的延迟随位数增加而增加。为了提高加法器的速度,可以使用 进位选择加法器(Carry Lookahead Adder, CLA)。
进位选择加法器的核心思想是 并行计算进位,减少了进位传递的延迟。
进位选择加法器的基本思想:
-
进位选择加法器利用
生成(Generate)
和
传播(Propagate)
信号来快速计算进位。
- 生成(Generate):当两个输入位均为 1 时,进位将被产生,即
G = A AND B
。 - 传播(Propagate):如果某一输入位与进位传递位相加时会传播进位,即
P = A XOR B
。
- 生成(Generate):当两个输入位均为 1 时,进位将被产生,即
进位选择的公式:
- 进位公式:
Cout = G + P * Cin
- 和公式:
S = A XOR B XOR Cin
CLA 通过并行计算每一位的进位,显著减少了计算延迟。
加法器的应用
加法器是计算机中许多关键操作的基础,广泛应用于以下场景:
- 算术逻辑单元(ALU):ALU 中有加法器用于实现加法、减法(通过补码表示)等算术运算。
- 乘法器:乘法运算可以通过多次加法操作来实现。例如,二进制乘法可以通过加法器将一个数与另一个数的每一位相乘并累加。
- 浮点数运算:浮点数加法涉及到指数对齐、舍入等过程,底层需要加法器进行数值运算。
- 加速器和处理器:高级加法器(如CLA)被用于加速器和处理器设计中,以提高运算速度。
- 数据传输和地址计算:加法器用于计算存储器地址、指令地址等。