背景技术
乘法器是集成电路中的重要部件,承担了大量的计算任务,广泛应用于芯片的模块设计中。乘法器一般处于芯片的关键路径中,其速度的快慢,功耗的大小对整个芯片的性能功耗有决定性的作用。随着芯片技术的发展和纳米级工艺的进步,性能和功耗已成为评价芯片的两个最重要指标。工艺朝着更小纳米级的方向发展,给芯片的速度带来了一定的提升,却对低功耗的设计提出了挑战,而嵌入式系统的应用对低功耗提出更高要求,特别是消费电子类芯片,因此低功耗芯片设计成为业界的研究热点。
一般地,高速乘法器采用Booth编码和树型结构进行设计,对于两个N位操作数A,B的乘法操作,对B操作数进行Booth编码,以减少部分积数目,进而减少累加级数的延时;然后对Booth译码后的部分积进行树型压缩,相比于阵列式压缩,树型压缩可以大大降低累加的延时;最后利用一个快速加法器将树型压缩的两个2N位结果求和,得到最终的2N位乘法结果。
针对乘法器低功耗设计,学术界提出的较热门技术有行Bypass和列Bypass技术,其主要思想是1位全加器将输入A,B,Ci中的某一个操作数作为选通信号,如果其值为0,那么关闭该全加器,将另外两个操作数传递到下一级使用。图1为采用行Bypass技术的4×4阵列乘法器,每一行全加器使用同一个控制信号判断是否进行行Bypass操作,当门控和选通器的控制信号为0时,将输入操作数直接传递到下一级全加器,当选通信号为1时,执行FA的加法运算;图2为采用列Bypass技术的4×4阵列乘法器,每一列全加器使用同一个控制信号判断是否进行列Bypass操作,当控制信号为0时,该列的加法器全部被Bypass掉,相应的操作数传递到下一级加法器中。
通过上面分析得知,行Bypass和列Bypass可以选择性的关闭部分运算模块,Bypass全加器单元相比于常规全加器FA,当输入数据流向Bypass路径时,活动的晶体管只有两个选通器,可大大减少晶体管的动态功耗,同时关键路径的延时也得到降低。但是,这两种技术只能应用在较低速的阵列乘法器当中,这是因为只有部分积使用阵列式压缩累加的时候,才能使用行Bypass和列Bypass技术,具有一定局限性。由于树型结构的不规则性,行Bypass技术和列Bypass技术无法应用在树型乘法器中。
所以,本文提出一种通用的行列Bypass技术,既可应用于阵列乘法器设计,也可应用于Booth编码,树型乘法器的设计,还可用于各种压缩树结构中,以实现高性能低功耗设计。
附图说明
图1是现有技术中采用行Bypass技术的4×4阵列乘法器结构示意图;
图2是现有技术中采用列Bypass技术的4×4阵列乘法器结构示意图;
图3是本发明中基于Bypass的乘法器的基本结构示意图;
图4是本发明中基于行列Bypass技术的全加器和半加器的结构示意图;
图5是本发明中行列Bypass技术的全加器和半加器中常用的四种门控单元类型的结构示意图;
图6是现有技术中半加器和全加器的逻辑实现以及本发明中基于行列Bypass的A+1结构和A+B+1结构示意图;
图7是本发明优选实施例中所述乘法器的结构示意图;
图8是改进型基4Booth编码表;
图9是改进型基4Booth编码电路和产生1位部分积的译码电路;
图10是本发明优选实施例中所述乘法器的实现逻辑示意图;
图11是本发明优选实施例中32位的超前进位加法器的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明提出了一种基于Bypass的高速低功耗乘法器。该高速低功耗乘法器采用一种基于门控单元的行列Bypass技术,该行列Bypass技术既可应用于阵列乘法器设计,也可应用于Booth编码,树型乘法器的设计,还可用于各种压缩树结构中,以实现部分积压缩,达到高性能低功耗设计。
如图3所示,本发明公开了一种基于Bypass的乘法器301,其包括:Booth编码模块308,Booth译码模块307,基于行列Bypass全加器和半加器的部分积压缩树305和快速加法器306。其中,该乘法器301接收两个N位操作数,对其进行乘法操作,首先Booth编码模块308对第一个操作数302进行Booth编码;Booth译码模块307的输入为乘法器的第二个操作数303和Booth编码模块308输出的编码值,其将乘法器的第二个操作数303与所述编码值进行相乘操作,并产生多组部分积304;然后采用基于行列Bypass的全加器和半加器的部分积压缩树处理所述多组部分积304,得到两个压缩结果;最后将压缩得到的两个结果输入到加法器306中进行加法操作,从而得到最终结果。
上述方案中,图3所示的低功耗乘法器结构301可以接收两个N位操作数302和303,其中操作数302输入给Booth编码模块307,操作数303输入给Booth译码模块308。
Booth编码模块308接收操作数302,使用操作数302的数值进行Booth编码生成多组编码信号,编码形式不同可能产生不同类型的编码信号,常用的有基4Booth编码、基8Booth编码和改进型的Booth编码等。
Booth译码模块307接收操作数303和Booth编码模块输出的编码信号,根据所述编码信号对操作数303进行译码操作,可以生成一系列不同位宽和权重的部分积,并输出给部分积压缩树。
基于行列Bypass全加器和半加器的部分积压缩树305进行多组部分积压缩操作,将一系列的部分积压缩成两个输出。这个模块是低功耗设计的核心模块,也是高性能低功耗设计的关键部分,其主要核心计算单元是前文所述的基于行列Bypass全加器和半加器。
上述方案中,快速加法器306用来对部分积压缩树得到的两个结果进行最终求和操作,得到最终乘法结果并输出。
上述方案中,低功耗设计的核心模块是基于行列Bypass的全加器和半加器的部分积压缩树304,所述部分积压缩树304的核心计算单元如图4所示,为基于行列Bypass的全加器401和半加器402。全加器401不仅能够实现常规全加器3∶2压缩的功能,而且能够使用门控单元选择性关闭加法模块405,其中输入操作数B与E相或后生成控制信号407,用于控制门控单元403和选通器404,以此来判断是否进行Bypass操作。当控制信号407为1时,加法器使用加法模块405进行全加操作,即A+D+1,其中D为操作数B和E的与信号;当控制信号407为0时,关闭加法模块405,直接将输入操作数A选通输出给全加器的输出S。同样,基于行列Bypass的半加器402不仅能够实现常规半加器操作,而且能够使用门控单元和选通器选择性关闭A+1加法模块406,其中,输入的操作数B为门控单元和选通器的控制信号。当输入操作数B为1时,半加器使用A+1加法模块406进行半加操作,当输入操作数B为0时,关闭A+1加法模块406,直接将另一输入操作数A选通输出给半加器的输出S。
图5所示为基于行列Bypass的全加器401和半加器402中可使用门控单元的各种形式,门控单元505可有四种形式实现:三态门501,与门502,锁存器(Latch)503和传输门开关504。门控单元可以有效隔离输出信号与输入信号,关闭门控单元后面的模块,降低晶体管的开关活动性。当门控单元的控制信号S=1时,四种实现形式的门控输出Q都等于A;当门控单元的控制信号S=0时,三态门501的输出Q为高阻,与门502的输出Q为0,Latch503的输出Q保持不变,传输门开关504的输出Q为高阻。
图6为正常半加器602和正常全加器604结构以及图4中基于行列Bypass的全加器401和半加器402行列Bypass结构中使用的A+1结构601和A+B+1结构603的电路图。正常半加器602需要一个与门和异或门才能实现,而A+1结构601仅仅使用反相器就能完成,其进位C为A的值,输出S为A的反向数据,其减少了3/4的晶体管数目;正常的全加器604需要两个与门,一个或门和两个异或门才能实现,而A+B+1模块603使用一个或门和一个同或门可以实现,即输入操作数A和B经与门得到进位C,A和B经同或门得到输出S,其晶体管的数目减少一半。可见A+1结构601相比于正常半加器602在功耗和晶体管数目有所降低,速度上有所提高,同理,A+B+1结构603相比于正常全加器604在功耗和晶体管数目也有所降低,在速度上有所提高。
为使本发明的目的、技术方案和优点更加清楚明白,以下以无符号16位操作数、基4Booth编码方式、Wallance压缩树为例来说明本发明提出的基于Bypass的乘法器,其结构如图7所示。
如图7所示,基于Bypass的乘法器结构701主要包括:基4Booth编码模块708,基4Booth译码模块707,基于行列Bypass全加器和半加器的Wallance压缩树模块705和超前进位加法器模块706,该乘法器接收两个无符号16位的操作数,进行无符号乘法操作,得到32位的最终计算结果。下面针对上述模块的具体设计,进行详细介绍。
为解决阵列乘法器加法阵列大,部分积过多,运算速度慢等缺点,Booth编码技术应运而生。本实施例采用基4的Booth编码方式,基4Booth编码技术将一个操作数Y中的每两位作为一个编码组,对另一个操作数X进行处理。如下所示:
00->0;01->*1;10->*2;11->*3
上述编码中,左边两位数字代表操作数Y中的相邻两位,任意两位有四种可能:00,01,10,11;右边一位代表编码输出,对应四种编码:0,1,2,3,将所述操作数Y的编码输出与操作数X相乘,得到的部分积集合是{0,1X,2X,3X},这样,操作数Y的每两位产生一个部分积,将部分积的数量减少一半。在应用过程中,3X的求解比较复杂,包含一个移位操作和加法操作,于是改进型的基4Booth编码技术应运而生。在编码时,通过同时观察3位来加以简化,即:可在操作数Y的最低位后面加一“考察位”:考察y2i+1y2iy2i-1,其中y2i-1为“考察位”。生成下一个部分积时,考察y2i+3y2i+2y2i+1,其中y2i+1为“考察位”,i的最小值为0,最大值为操作数Y位数的一半,y-1默认为0。添加考察位后,可以避免进行3X的求解操作。考察位是辅助编码用的,加上考察位后,一组编码可以产生一个部分积。该改进后的基4Booth编码方式将操作数Y分成相邻的3个一组的编码,所以如果是16位的操作数Y,则会有9个编码组,有9个考察位,产生9个部分积。
图8为改进型的基4Booth编码表,其描述了添加考察位后,Booth编码的变化,由图8看出,部分积的集合变为{0,1X,2X,-2X,-X},这样所有的部分积都可以由一步移位或者取反操作得到,其优点是可以将部分积数目减少为原来的一半左右,可用于无符号数、有符号数和二进制补码形式的乘法器中,图7中Booth编码的行为级原理基于图8的基4Booth编码表得出。
图9为具体的上述改进型的基4Booth编码与译码电路的行为级设计和电路级设计。在行为级Booth编码901中,其输入来自乘数Y,输出对应于图8的改进型基4Booth编码表。当Booth编码值为1时,b1输出1,b2输出1,neg输出0;当Booth编码值为2时,b1输入为0,b2输入为1,neg输出0;当Booth编码值为-1时,相应的b1输出1,b2输出1,neg输出1;当Booth编码为-2时,相应的b1输出为0,b2输出为1,neg输出1;当Booth编码值为0时,b1=0,b2=0,neg=0。在Booth译码902中,其输入Xi,Xi-1来自被乘数X的连续两位数据,选通信号来自Booth编码901,其输出为一个部分积PPCi。在Booth译码模块902中,Booth编码模块901的输出b1,b2,neg作为Mux3和Mux2的选通信号,选择{0,Xi,Xi-1}中的一个作为部分积的输出,即当b1为1时,选择Xi,当b2为1时,选择Xi-1,当b1和b2均为0时,选择0;由此可知部分积的输出可以为{-Xi,-Xi-1,0,Xi-1,Xi}。当然完整的Booth编码电路由(N/2+1)组Booth编码模块901组成,而完整的Booth译码电路由(N/2+1)×N个译码模块902组成。在图9中,电路级Booth编码908使用门级电路完成行为级Booth编码901的设计,Booth编码电路908中,操作数Y中的3位Y2i+1,Y2i,Y2i-1,Y2i-1与Y2i经异或门得到b1,Y2i和Y2i+1经异或非门后与b1经或非门得到b2,Y2i-1与Y2i经与非门后与Y2i+1经与门得到neg;在Booth译码电路909中,另一操作数X的2位Xi、Xi-1,b1与Xi经与门后得到的结果与b2和Xi-1经与门得到的结果经或非门,再与neg经异或非门,生成部分积PPCji。
图10示出两个16位数进行完上述改进型的基4Booth编码后的部分积进行Wallance树压缩的过程,16位无符号数乘法操作,经过改进型基4Booth编码译码产生9个部分积(PPC0,PPC1,PPC2...PPC8)。
本发明公开的Wallance压缩树中使用的基本单元是基于行列Bypass技术的全加器(FA)1010和半加器(HA)1011。这两种基本单元能够选择性关闭部分电路,减少晶体管的活动开关性,降低芯片的功耗。其中,FA1010实现的是3:2压缩的功能,根据图4中的全加器401的结构,将第二、第三个操作数相与后的结果作为Bypass的选通信号,控制是否进行Bypass操作。
上述Wallance压缩树1001使用基于行列Bypass的全加器和半加器1011作为基本单元,一共构建了4级Wallance压缩树,其中每一级中的小黑点,S或S的反码是该级Wallance压缩树的1位输入信号,小黑点表示对操作数进行Booth编码后的1位部分积信号,S表示部分积的符号位,每一行表示一个部分积,其前面的1和S反码位描述了对部分积的简化操作,利用的是最基本的Wallance算法。第一级Wallance压缩树1002将9个部分积数压缩成6个部分积,使用了49个基于行列Bypass的全加器1010和9个基于行列Bypass的半加器1011单元。第一级Wallance压缩树的输出到第二级压缩树1003中,使用了32个基于行列Bypass的全加器1010和6个基于行列Bypass的半加器1011单元,将6个部分积压缩成4个部分积。第三级压缩树1004使用21个基于行列Bypass的全加器1010和2个基于行列Bypass的半加器1011单元,将4个的部分积压缩成3个部分积。最终第四级压缩树1005使用12个基于行列Bypass的全加器1010和9个基于行列Bypass的半加器单元,将3个的部分积压缩成2个,得到两个结果进位操作数Carry和求和操作数Sum,经过32位超前进位加法器110的相加求和运算,得到乘法器最终结果,完成基于Bypass技术的低功耗乘法运算。
上述Wallance压缩树1012简化概括了4级压缩树的结构,Wallance压缩树中除了全加器,还包括半加器,为简化起见仅示出了全加器。其中,每一个空圆圈表示一个部分积,即为1、S、S反码和黑点表示的一行部分积操作数,FA表示一组全加器,功能是将3个部分积压缩为两个部分积后作为下一级全加器的输入,9个部分积经过4级压缩之后,变成了2个结果。
图11所示为32位超前进位加法器110的行为级实现和门级实现,主要功能是实现两个32位操作数A和操作数B的加法操作,最后得到和数S[31:0]和进位C32,其中基本4位计算模块116包括两部分:4位PG计算模块111和4位求和模块112。4位PG计算模块111,负责计算进位传播位Pi和进位产生位Gi,以两个输入操作数的每4位为一组和前一级进位作为输入来运算,其行为级描述如下:其中Ai,Bi为两个第i位操作数,Ci为第i位的进位,Pi为第i位的进位传播位,Gi为第i位的进位产生位,则:
Gi=Ai*Bi
Ci=Gi+PiCi-1
其中,,*表示两个数相与,
表示两个数异或,+表示两个数相或;其门级的电路实现为如图11中模块113所示,A
i和B
i经过与门得到G
i,A
i和B
i经过异或门得到P
i,P
i和C
i经过与门再与G
i经过或门得到C
i+1。
4位求和模块112接收4位一组的进位传播位Pi、进位产生位Gi和前一级的进位Ci,来计算最终的结果Si,其行为级描述为:
其门级的电路实现为如图11中模块114所示,Pi和Ci信号经过一级异或门得到Si信号。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。