2.2基本运算部件
整理自up主beokayy_
1.加法器
一位全加器
- 全加器是最基本的加法单元:
- 三个输入端:加数Ai,加数Bi,低位传进来的进位C1-1
- 两个输出端:本位和S,向高位的进位C
- 全加器的逻辑表达式:
- Si=Ai⊕Bi⊕Ci-1
- Ci=AiBi+(Ai⊕Bi)Ci-1
串行进位加法器
- 把n个一位全加器相连可得到n位加法器,即串行进位加法器。
- 模拟人的算法,串行进位加法器的信号是逐级形成的,串行进位又被称作行波进位。
- 在串行进位加法器中,低位运算产生进位所需的时间将影响高位运算的时间。
- 因此,串行进位加法器的最长运算时间主要是由进位信号的传递时间决定的,位数越多延迟时间越长。
并行进位加法器
- 全加器的进位逻辑表达式为Ci=AiBi+(Ai⊕Bi)Ci-1,设Gi=AiBi,Pi=Ai⊕Bi,则Ci=Gi+PiCi-1。
- 进行下列迭代:
- C1=G1+P1C0
- C2=G2+P2C1=G2+P2(G1+P1C0)=G2+P2G1+P2P1C0
- C3=G3+P3G2+P3P2G1+P3P2P1C0
- C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0
- 从上述迭代后的表达式可以看出,Ci仅与Ai、Bi以及最低位进位C0有关,而相互间的进位没有依赖关系。
- 因此,只要A1A4、B1B4以及C0同时到达,就可以几乎同时形成C1~C4,并且同时生成各位的和。这样就解决了串行进位加法器需要花费长时间等
待进位的问题。 - 实现这个逻辑的电路称为CLA部件。由于各个进位是并行同时产生的,因此这种加法器称为并行进位加法器。
- 并行加法器的进位很快,与位数无关。但随着位数的增加,C的逻辑表达式会变得非常复杂,电路结构也会随之变得复杂。因此,位数非常多时采用并行加
法器是不现实的。
2.算术逻辑单元ALU
- ALU是一种功能较强的组合逻辑电路,可以实现多种算术运算和逻辑运算。
- 加减乘除运算最终都可归结成加法运算,所以ALU的核心是带标志加法器,同时也能执行与或非等逻辑运算。
- ALUop控制ALU所执行的处理。ALUop的位数s决定了操作的种类,s位就有2s种。
定点数的运算
1.定点数的移位操作
x<<k(左移)
- 左移k位,,最高k位舍弃,右端补0
- 相当于乘2
- 左移前后符号位改变了,则发生溢出
x>>k(右移)
- 右移k位,分为两种情况:
- 逻辑右移(无符号数):左端补k个0
- 算数右移(带符号数):左端补k个最高有效位的值
- 相当于除2,所以没有溢出判断
2.定点数的加减法
运算规则
- 计算机中的带符号数都用补码来表示,故定点数的加减法也用补码
- [A+B]补=[A]补+[B]补;[A-B]补=[A]补+[-B]补([-B]补=[B]补’+1)
- 符号位和数值位一起参与运算,结果的符号位在运算中直接得出
- 最终运算结果的高位丢弃,保留机器字长的位数,得到的结果也是补码
溢出判别
- 仅当以下四种情况才会发生溢出
- 正+正=负
- 负+负=正
- 正-负=负
- 负-正=正
- 一位符号位判别:
- 设A的符号为As,B的符号为Bs,结果的符号为Ss。则逻辑溢出表达式为V=AsBsSs’+(AsBsSs)’
- V=0表示无溢出;V=1表示有溢出
- 还有一种方法:符号位的进位与最高位的进位相同则无溢出,否则就是有溢出
- 双符号位判别:
- 两位符号位相同,正常进行计算,两位符号位与溢出情况如下所示:
符号位 | 溢出情况 |
---|---|
00 | 正数无溢出 |
01 | 正溢出 |
10 | 负溢出 |
11 | 负数无溢出 |
乘除法不记录在内,目前只应付期末考试,等考研再来补充