先前的记录:
王道计算机组成原理资源:
计算机组成原理PPT:链接: https://pan.baidu.com/s/1EqL9NmQ-0glDNIFPBfUmVg 密码: sfwg
配套书籍:链接: https://pan.baidu.com/s/1cZx27Gfooj2uAhSP9sbrRA 密码: j5ms
主要功能
算术运算:加、减、乘、除等
逻辑运算:与、或、非、异或等
辅助功能:移位、求补
基本的逻辑运算
一位全加器(Full-Adder)
输入: A i A_i Ai, B i B_i Bi和上一次的进位 C i C_i Ci,共三个输入
输出:本位和 S i S_i Si,向最高位的进位 C i C_i Ci
本位和 S i S_i Si就是个天然的异或门,输入中有奇数个1就为1。
A i A_i Ai | B i B_i Bi | S i S_i Si |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
而对于向最高位的进位 C i C_i Ci,分为两个部分:
- 产生(来自本级的 A i A_i Ai和 B i B_i Bi)
- 传递(来自上一级的进位 C i − 1 C_{i-1} Ci−1)
C i = G i + P i C i − 1 C_i = G_i + P_iC_{i-1} Ci=Gi+PiCi−1
G i = A i ∙ B i G_i = A_i \bullet B_i Gi=Ai∙Bi
$P_i = A_i \oplus B_i $
串行加法器
只有一个全加器,数据逐位串行送入加法器进行运算,进位触发器用来存放进位信号,方便下次参与下一次的运算。
如果一个操作数位n位,则加法器就要分n次执行,并且串行逐位的送回寄存器。
并行加法器
串行进位的并行加法器
将n个全加器串联起来,就可以进行两个n位数的相加。
串行进位又叫行波进位,每一级的进位直接依赖于上一级,所以进位信号是逐级产生的。
并行进位的并行加法器
C 1 = G 1 + P 1 C 0 C_1 = G_1 + P_1C_0 C1=G1+P1C0
C 2 = G 2 + P 2 C 1 = G 2 + P 2 G 1 + P 2 P 1 C 0 C_2 = G_2 + P_2C_1 = G_2 + P_2G_1 + P_2P_1C_0 C2=G2+P2C1=G2+P2G1+P2P1C0
C 3 = G 3 + P 3 C 2 = G 3 + P 3 G 2 + P 3 P 2 G 1 + P 3 P 2 P 1 C 0 C_3 = G_3 + P_3C_2 = G_3 + P_3G_2 + P_3P_2G_1 + P_3P_2P_1C_0 C3=G3+P3C2=G3+P3G2+P3P2G1+P3P2P1C0
由于进位数C直接依赖与上一级的P和G,所以可以直接将P和G传递给后面需要的部分,直接得到每一个部分的进位,而不需要向串行进位一直需要前一位的进位。详细信息可以参考:306 - 加法器的优化——超前进位加法器(Carry-Lookahead Adder,CLA)。