第一章 加法器

                                      第一章 加法器

一、数据格式


1. 定点数表示法:x=x0x1x2…xn ,x0: 符号位,0代表正,1代表负。

2. 浮点表示法:

         一个机器浮点数由阶码和尾数及其符号位组成(尾数:用定点小数表示,给出有效数字的位数决定了浮点数的表示精度;阶码:用整数形式表示,指明小数点在数据中的位置,决定了浮点数的表示范围。):

32位浮点数的IEEE754标准格式为:

S:浮点数的符号位,1 位,0表示正数,1表示负数。

M:尾数,23位,用小数表示,小数点放在尾数域的最前面。

E:阶码,8 位阶符采用隐含方式,采用移码来表示正负指数。


         移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大。采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数 e 加上一个固定的偏移值127(01111111),即 E=e+127.

一个规格化的32位浮点数x的真值可表示为

x=(-1)S×(1.M)×2E-127        e=E-127   

一个规格化的64位浮点数x的真值为

x=(-1)s×(1.M)×2E-1023        e=E-1023

    为提高数据的表示精度,当尾数的值不为 0时,尾数域的最高有效位应为1,否则以修改阶码同时左右移小数点的办法,使其变成这一表示形式,这称为浮点数的规格化表示。 当浮点数的尾数为0,不论其阶码为何值,或者当阶码的值遇到比它能表示的最小值还小时,不管其尾数为何值,计算机都把该浮点数看成零值,称为机器零。当阶码E 为全0且尾数M 也为全0时,表示的真值x 为零,结合符号位S 为0或1,有正零和负零之分。当阶码E 为全1且尾数M为全0时,表示的真值x 为无穷大,结合符号位S 为0或1,也有+∞和-∞之分。这样在32位浮点数表示中,要除去E用全0和全1(255)10表示零和无穷大的特殊情况,指数的偏移值不选128(10000000),而选127(01111111)。对于规格化浮点数,E的范围变为1到254,真正的指数值e则为-126到+127。因此32位浮点数表示的绝对值的范围是10-38~1038(以10的幂表示)。


二、加法器


        所有的加、减、乘、除四则运算,最终都是将其转化为加法运算来实现的,所以,加法运算是运算电路的核心。实现半加运算的电路叫做半加器(HalfAdder)。半加器有两个二进制的输入,其将输入的值相加,并输出结果到和(Sum)和进位(Carry)。半加器虽能产生进位值,但半加器本身并不能处理进位值。

  S = A + B

  C = A & B

卷二 <wbr> <wbr>第一章 <wbr> <wbr>加法器

一位元全加器:


         全加器三个二进制的输入,其中一个是进位值的输入,所以全加器可以处理进位值。全加器可以用两个半加器组合而成。

Si = ( Ai + Bi ) + Ci

Ci+1 = ( Ai & Bi ) + ( Ci & ( Ai + Bi ))

卷二 <wbr> <wbr>第一章 <wbr> <wbr>加法器

三、并行加法器


           并行加法器中全加器的位数与操作数的位数相同,可同时对各位相加。影响速度的主要是传递进位信号的进位链。而优化设计的主要目标是高速、低耗、资源(面积)开销小,其关键是构思高速、高效的进位算法与结构。一流的高速加法器有:超前进位加法器、跳跃进位加法器、树形结构加法器、对数跳跃进位加法器、混合超前进位/选择进位加法器、顶层进位级联超前进位加法器等。这些高速、高效的进位方法一般都是在超前进位基础上的改进或者混合进位。因此,超前进位加法器(简称CLA)很自然地成为优化设计比较的基准。在结构方面,行波进位加法器是最简单的整数加法器;它的时间复杂度是O(n)。跳跃进位加法器对于位数少的加法是相当有效的,但对于长位数的加法,由于该加法器的时间复杂度是o(n^-0.5)(其效果并不明显)。超前进位加法器有着O(log2n)的时间复杂度,因此是最快的加法器算法。由于超前进位加法器速度快、结构模块化,使它得以广泛的应用。这种算法利用大量的硬件开销实现产生进位信号的电路,运算时间减少比较明显。

1、行波进位加法器

 

卷二 <wbr> <wbr>第一章 <wbr> <wbr>加法器

          由上图看到,n个1位的全加器(FA)可级联成一个n位的行波进位加减器。图中左边还表示出单符号位法的溢出检测逻辑;当Cn=Cn-1时,运算无溢出;而当

Cn≠Cn-1时,运算有溢出,经异或门产生溢出信号。

         对一位全加器(FA)来说,Si的时间延迟为4T(每级异或门延迟2T),Ci+1的时间延迟为4T,其中T被定义为相应於单级逻辑电路的单位门延迟。T通常采用一个“与非”门或一个“或非”门的时间延迟来作为度量单位。

  n位行波进位加法器的延迟时间ta为:

                      ta=n•2T+6T=(2n+6)T

6T为最低位上的两极“异或”门再加上溢出“异或”门的总时间,2T为每级进位链的延迟时间。


2、超前进位加法器(CLA)


          超前进位链能够有效减少进位的延迟,它由进位门产生进位,各进位彼此独立,不依赖于进位传播。因此延迟非常小,速度非常高。

        设一个n位的加法器的第i位输入为ai、bi、Ci,输出si和Ci+l,其中ci是低位来的进位,ci+l(i =n-1,n-2,⋯,1,O)是向高位的进位,Co是整个加法器的进位输入,而Cn是整个加法器的进位输出。则有:

Si = ai + bi +Ci               (1)

Ci+1 = ai&bi + Ci&(ai +bi)     (2)

令:

Gi = ai&bi

Pi = ai + bi

则有:Ci+l = Gi +Pi•Ci            

只要Gi = ai&bi = l,就会产生向Ci+l位的进位,称Gi为进位产生函数;同样,只要Pi = ai + bi =l,就会把Ci传递到Ci+1位,所以称Pi为进位传递函数。

随着位数的增加式(2)会加长,但总保持三个逻辑级的深度,因此形成进位的延迟是与位数无关的常数。一旦进位(Cl---Cn-1)算出以后,和也就可由式(1)得出。


         对于4位的加法器,异或门需2T,产生Gi和Pi需要2级门延迟,Ci需要4级,si需要4级,总共需要4级门延迟。与串联加法器(一般要2n级门延迟)相比,(特别是n比较大的时候)超前进位加法器的延迟时间大大缩短了。对于16位来说,需增加第二层超前进位链逻辑,总共需要7级门延迟。对于64位来说,需增加第三层超前进位链逻辑,总共需要10级门延迟;而串联加法器需2*64 + 6 = 134级门延迟。


卷二 <wbr> <wbr>第一章 <wbr> <wbr>加法器

C4 = G3 + P3C3 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0C0

所以:P = P3P2P1P0,  !G = !G3 & !P3G2 &!P3P2G1 & !P3P2P1G0

C4 = G + PC0 = !(!G & !PC0)

所以,P、G就成为下一层的进位传递与产生函数。

64位超前进位加法器总共需5*64 + 19*16 + 19*4 + 19 = 719个门逻辑。实际上还要更多的门;需考虑,减法运算,乘法运算等来共享64位超前进位加法器;所以,还需多路器逻辑门等等。


3、进位旁路加法器(CSKA)


          设计加速一个宽位加法器,它使进位绕过整个加法器的一部分进行传播。对4位一组的加法器情形,第一组的进位输入位表示成C0,而4位加法器本身产生一个进位输出位C4。如果Ai、Bi其中都有一个为1,而C0为1;那么,自然会产生进位C4=1。如果使用一个相应的进位逻辑门旁路电路;只需要5级门延迟。而不会像4位行波进位加法器那样需12级门延迟。跳跃进位旁路加法器就是在行波进位加法器的Cin—Cout路径中,通过增加旁路逻辑门电路来加速加法器的进位传递。速度自然要比行波进位加法器快不少。


4、进位选择加法器(CSA)


           其主要思想即将前一级的进位先假定为1或者0,之后分别计算出一个结果,然后再用前一级的进位来选择得到相应的结果,这样后级的计算就不用等候前一级的进位,而是和前级的计算并行进行,之后再做一个选择,从而达到快速运算的目的,当然所付出的代价是它要增加加法器和MUX以及相应的互联线,牺牲一定的面积和功耗。如果4位一组,64位加法器需16组,组间是串行传递,MUX需要2级门延迟;所以,总共需36级门延迟。开头的2组用超前进位加法器(CLA),后面的组就可用行波进位加法器了。用空间换时间,比行波进位加法器提速了不少。


           应当注意的是:在用变长分组的进位选择加法器中,用于选择的信号扇出负载为x-y+l。由于加法器构造过程中,每向后一级,加法器位宽都会拓宽其两个子加法器位宽之和,因而这两个选择信号的扇出负载也会逐级提高,因而各个多路选择器(MUX)的数据选取速度也会逐级降低。


5、 4-2压缩加法器


        在部分积求和网络模块中,为了获得较高的速度,采用了改进的4-2压缩加法器结构。4-2压缩器通过将具有相同权值的4个部分积减少到2个来提高并行度。传统的4-2压缩器是由2个串行连接的全加器所组成。

卷二 <wbr> <wbr>第一章 <wbr> <wbr>加法器

            如果是5个1相加,结果应是101。而这里并不是将2个进位相加,而是产生2个进位Cout,C和一位的结果S。既是:Cout,C,S都是1。Cout将作为高一个位的进位保留位的进位输入;而C是本位的进位保留位。“进位保留”是指先保留进位输出而不是立即用它来计算最终的和。而是将进位保留到下一级的加法器进行,避免了进位链的延时。所以一个4-2压缩加法器总共需6级门延迟。

           4-2压缩加法器主要应用于乘法器的运算。整个乘法器的速度,主要有三部分组成:Booth 编解码单元或APO 编解码单元、4-2压缩单元与CLA 快速求和单元。APO编码是完成缩减部分积数量的算法,每次扫描2位数据,将部分积数量缩减了50%。31位乘数(符号位取0)采用APO算法编码后与被乘数相乘得到16 行部分积;接着基于4-2压缩器的第一级4个压缩单元将部分积压缩成Carry、Sum形式的两行部分积共4组,之后;第二级2个压缩单元将前面的4组8行数据再压缩成Carry、Sum形式的两行部分积共2组,之后;第三级1个压缩单元将前面的2组4行数据再次压缩成Carry、Sum形式的两行部分积共1组2行数据。最后用64位超前进位加法器(CLA)完成最终两行部分积的快速求和结果。乘法器总共需APO算法4级门延迟 + 三级4-2压缩加法器(3*6 )18级门延迟 =22级门延迟。因64位超前进位加法器是使用流水部件,延迟不计算。如果一个门延迟是小于23PS,那么32位乘法器有望速度能达到0.5ns。占用2个时钟周期。

     光走过一米的距离大约需3.3ns,如果走过30纳米的距离大约需0.0001ps,而电信号,由于电容、电感、电阻的存在就慢多了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章