计算机算术2-整数加减法(通用)

1. 一位全加器

输入:cin, A, B
输出:co sum
真值表
image.png
逻辑表达式
sum = cin ^ A ^ B
co = A&B | A&Cin | B&Cin
注意:sum的时延几乎是carray时延的两倍
电路图
image.png

因此全加器的输出需要2、3级门延迟

2. 多位全加器

2.1 串行进位加法器

把多个全加器串链起来就形成了串行进位加法器,串行进位加法器将低位全加器的进位输出Cout作为本级全加器的进位输入Cin,因此在计算最高位的进位输出时(进位输出当作两级门延时),有32级门延时,这对CPU提高主频来说,关键路径的门延时太长了。
image.png

2.2 超前进位加法器

通过并行计算每一位的进位,使得进位结果的输出只与输入有关,而与前一位的进位无关,简单来说就是列出真值表,直接求出组合逻辑表达式,缺点是输出的扇入过大,需要用到许多多输入门。
image.png

image.png

2.3 块内并行,块间串行16位加法器

image.png
块内并行,最高位输出只需要2个门延时,块间串行,因此16位加法器需要8个门延时。

2.4 块内并行,块间并行

image.png
注意P, G的生成与c0无关,因此P G生成需要2个门延迟,之后加上c0,生成c4需要2个门延时,c4作为第2个c0,生成c7-4需要两个门延时,因此需要6个门延时,加上p3-0和g3-0需要两个门,总共需要8个门延时。
image.png

3. 减法器

在现代通用计算机中,定点数都是用补码存储的,补码减法可以通过加法来实现,补码的运算性质如下image.png
因此我们只需要根据B的补码,求得-B的补码,然后进行加法运算就可以了。因此只需要进行按位取反,然后加1就可以实现补码减法。在实现时,我们对c0进行选择,如果为加法,c0=0;如果为减法,c0=1;

4. 溢出判断

  1. 对于加法,如果两个正数相加结果为负,或者两个负数相加,结果为正,则发生溢出;对于减法运算,如果整数减负数结果为负数,或者负数减正数结果为正数,则发生溢出,因此运算器的溢出判断条件为image.png
    因为运算部件中,溢出判断逻辑在加减法结果的基础上生成,因此溢出判断是运算部件的关键路径。
  2. 比较器可以通过减法实现,如果减法没有发生溢出,且结果符号位为1,则A<B;如果有发生溢出,则结果符号位为0时A<B;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值