1.串行加法器
串行加法器即加法器进行位串行运算,在多个时钟周期中进行一次加法运算。 即,输入操作数和输出结果的方式随时为时钟串行输入输出。 位并行加法器速度快,但消耗很多资源。 在许多实际应用中,不需要这种高速化,并且为了降低硬件资源的占有率,可以使用位串行加法器。
在串行加法器中,如图所示为只有一个全加器,数据逐位串行送入加法器进行运算。 图中的FA是全加法器,a、b是具有右移位功能的2个寄存器,c是进位触发。 从移位寄存器向低位到高位串行提供操作数相加。 如果操作数长n位,则加法分为n次进行,每次产生1位的和,并且串行地返回到a寄存器。 进位触发器用于注册进位信号以参与以下运算:
2.串行进位的并行加法器
并行加法器由多个全加器组成中,全加法器个数的多少取决于设备的字长,而并行加法器可以同时加算数据的各位,读者可能认为数据的各位可以同时运算,但实际情况并非如此。 这是因为,虽然同时给出操作数的各位,但下位运算的进位会影响上位的运算结果。 例如,如果将11…11和00…01相加,由于从最低位开始的进位会影响最高位,所以为串行进位的并行加法器需要一个最长运算时间,它主要是由进位信号的传递时间决定的,各全加法器自身的加法延迟只是次要的因素。 显然,提高并行加法器速度的关键是尽量加快进位的发生和传递的速度。 并行加法器的各全加法器中,有从低位传送的进位输入和向上位传送的进位输出。 通常,由传递进位信号的逻辑电路连接而成的进位网络称为进位链。 各位的进位公式如下。
ci=aibi(AIbi ) Ci-1
其中," AiBi "与低位进位无关,依赖于本位参加运算的两个数,所以将AiBi称为进位发生函数[本次的进位发生],如果用Gi表示,则只要本位的两个输入都是1,就意味着一定会向上位发生进位“(AI ) bi ) Ci-1”不仅取决于本位的两个数,还取决于从低位传递的进位,因此将AI ) bi称为进位传递函数),用Pi表示,当两个输入中的一个为1时,从低位传递的进位函数
Ci=Gi PiCi-1
连接n个全加法器,就可以进行2个n位的相加。 该加法器称为串行进位的并行加法器,如图2-16所示。 串行进位又称行波进位,各级进位直接取决于前一级的进位。 也就是说,进位信号是逐步形成的。
其中,C1=G1 P1C0C2=G2 P2C1…
-family:Arial, Helvetica, sans-serif;background-color:rgb(255,255,255);">Cn=Gn+PnCn-1串行进位的并行加法器的总延迟时间与字长成正比,字长越长,总延迟时间就越长。假设将一级与门、或门的延迟时间定为ty,从上述公式中可以看出,每一级全加器的进位延迟时间为2ty。在字长为n位的情况下,若不考虑Gi、Pi的形成时间,从C0→Cn的最长延迟时间为2nty(设C0为加法器最低位的进位输入,Cn为加法器最高位的进位输出)。
显然,串行进位方式的进位延迟时间太长了,要提高加法运算的速度,就要尽可能地减少进位延迟时间,也就是要改进进位方式,这就产生了并行进位方式和分组并行进位方式。
3.超前进位加法器
可以想象最简单的加法计算就是每一位都进行一次全加器计算,然后产生一个进行c,下一个全加器在取得进位以后再进行他的位的计算,循环下去直到最后一位。这样的问题是进行一次32位的加法计算就需要至少串行的经过32个全加器,如果CPU的频率是3Ghz,那么一个时钟周期,大约333皮秒内,是无法完成一次简单的加法运算的。
那么超前进位加法器是如何做到高速计算的,可以想象肯定是把计算平行化了,而且是用数量来换了速度。但是具体是怎么做的呢。我们来一起分析下。
首先考虑所有的加法情况
Rowxycincouts000000100101201001301110410001510110611010711111
四位超前进位加法器
十六位超前进位加法器
三十二位超前进位加法器