计组——ALU双重分组先行进位(32位,64位)

先来看图
32位双重分组跳跃进位(先行进位)链
一看即明
在这里插入图片描述
分析

  • 看第八个小组,di=ai·bi,ti=ai+bi,故他们在得到输入后(ai,bi,c-1)即刻得到
    原理如下
    在这里插入图片描述

  • 一位全加器三个输入,两个输出

  • ai,bi操作数

  • c-1低位进位

  • ci 向高位进位

  • si本位和
    在这里插入图片描述 在这里插入图片描述

  • 所以C0~C3的值可以算出,但此时后一位必须得到前一位的进位,才能得到,只有得到Ci才能得到本位和,故进位时间是运算速度的瓶颈
    所以
    这里的C0~C3不采用串行进位
    在这里插入图片描述

  • 做以上变换,di,ti,跟参加运算的数据有关 ,所以可以同时得到,故此时C0~C3可以同时得到(运算电路改变)

故得到初步改进电路,以16位为例
在这里插入图片描述

  • 如果全部采用先行进位,每个电路会有很多扇入,电路过于复杂,故分为四个小组,组内用先行进位电路,组间串行进位
    先行进位电路如下,可想而知,如果位数增多,电路将极其繁杂
    在这里插入图片描述
    问题:D8,T8是什么?

  • 仍旧以第8小组为例,这是我们熟知的C3的先行进位算法,将其拆分为两部分
    在这里插入图片描述

  • 其余小组同理,展开如下
    在这里插入图片描述

  • C3的进位要给到第七小组,C7此时的算法已经是之前所说的先行进位

  • D7=d7+t7·d6+t7·t6·d5+t7·t6·t5·d4+t7·t6·t5·t4·C3,只跟本次输入以及低位进位有关,这个进位是C3,也就是说
    即使每个小组内可以同时产生进位,但前一小组必须等后一小组产生之后才可以进行自己的先行进位,故做以下变换
    在这里插入图片描述
    好了,现在是什么情况

  • Di,Ti只跟输入数据有关,故此时C7拿到输入数据和C-1后就可以立刻得出,不需要等待C3进位

整个过程是(以第二大组为例)
在这里插入图片描述

  • 当输入和c-1到位后,同时产生D5~ D8, T5~T8,(Di,Ti只跟输入数据有关),并且产生第八组低三位的进位,产生C3进位的D8,T8传出,所有Di,Ti传出
  • 产生C15,C11,C7,C3,但注意,此时第七小组的低三位进位并没有产生,他们要等待C3进位传来(串行进位,原因前面已经说过)
  • 第一大组也是同理,要等待C15的输入,而C15的产生不用等到第二大组所有小组的进位完成(像单重分组先行进位那样),而是先行进位得到,提高速率

总结:在每个小组先行进位的基础上,将高位做变换,再一次先行进位(按组的高位)

反思:

  1. 为什么其他小组的低三位要等上一小组的进位??
    答:因为每个小组只是传入了Di,Ti,只满足下一小组最高位的得出,二次先行进位的关键在于Di,Ti的传送

回到开始的32位,应该就不难理解了,其过程为
在这里插入图片描述注意:C19~C31的进位产生晚于C3 ~ C15一步

最后补一张图,以上所说一个小组其实就是四位全加器,集成在一起加上变换函数电路七七八八就变成74181,而Di,Ti,则可以输入到74182完成先行进位,故经常有用74181,74182设计32,64位ALU
在这里插入图片描述

学习记录

biu

附图:64位
在这里插入图片描述

  • 11
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值