一种基于Bypass技术的低功耗乘法器的制作方法

文档序号:6398491阅读:497来源:国知局
专利名称:一种基于Bypass技术的低功耗乘法器的制作方法
技术领域
本发明属于集成电路设计中的乘法运算技术领域,尤其涉及一种基于Bypass技术的低功耗乘法器。
背景技术
乘法器是集成电路中的重要部件,承担了大量的计算任务,广泛应用于芯片的模块设计中。乘法器一般处于芯片的关键路径中,其速度的快慢,功耗的大小对整个芯片的性能功耗有决定性的作用。随着芯片技术的发展和纳米级工艺的进步,性能和功耗已成为评价芯片的两个最重要指标。工艺朝着更小纳米级的方向发展,给芯片的速度带来了一定的提升,却对低功耗的设计提出了挑战,而嵌入式系统的应用对低功耗提出更高要求,特别是消费电子类芯片,因此低功耗芯片设计成为业界的研究热点。一般地,高速乘法器采用Booth编码和树型结构进行设计,对于两个N位操作数A,B的乘法操作,对B操作数进行Booth编码,以减少部分积数目,进而减少累加级数的延时;然后对Booth译码后的部分积进行树型压缩,相比于阵列式压缩,树型压缩可以大大降低累加的延时;最后利用一个快速加法器将树型压缩的两个2N位结果求和,得到最终的2N位乘法结果。针对乘法器低功耗设计,学术界提出的较热门技术有行Bypass和列Bypass技术,其主要思想是I位全加器将输入A,B,Ci中的某一个操作数作为选通信号,如果其值为0,那么关闭该全加器,将另外两个操作数传递到下一级使用。图1为采用行Bypass技术的4X4阵列乘法器,每一行全加器使用同一个控制信号判断是否进行行Bypass操作,当门控和选通器的控制信号为O时,将输入操作数直接传递到下一级全加器,当选通信号为I时,执行FA的加法运算;图2为采用列Bypass技术的4X 4阵列乘法器,每一列全加器使用同一个控制信号判断是否进行列Bypass操作,当控制信号为O时,该列的加法器全部被Bypass掉,相应的操作数传递到下一级加法器中。通过上面分析得知,行Bypass和列Bypass可以选择性的关闭部分运算模块,Bypass全加器单元相比于常规全加器FA,当输入数据流向Bypass路径时,活动的晶体管只有两个选通器,可大大减少晶体管的动态功耗,同时关键路径的延时也得到降低。但是,这两种技术只能应用在较低速的阵列乘法器当中,这是因为只有部分积使用阵列式压缩累加的时候,才能使用行Bypass和列Bypass技术,具有一定局限性。由于树型结构的不规则性,行Bypass技术和列Bypass技术无法应用在树型乘法器中。所以,本文提出一种通用的行列Bypass技术,既可应用于阵列乘法器设计,也可应用于Booth编码,树型乘法器的设计,还可用于各种压缩树结构中,以实现高性能低功耗设计。

发明内容
有鉴于此,本发明的主要目的在于提供一种采用Bypass技术的高性能低功耗乘法器装置,通过关闭无效通路的方式有效降低乘法器的功耗。为达到以上目的,本发明提出了一种基于Bypass的高速低功耗乘法器。该高速低功耗乘法器采用一种基于门控单元的行列Bypass技术,该行列Bypass技术既可应用与阵列乘法器设计,也可应用与Booth编码,树型乘法器的设计,还可用于各种压缩树结构中,以实现部分积压缩,达到高性能低功耗设计。从上述技术方案可以看出,本发明具有以下有益效果:本发明的最大特点是在实现高性能的同时进行了低功耗设计。其低功耗设计的核心部件是基于行列Bypass的全加器单元(FA)和半加器单元(HA),用输入信号作为Bypass的选通信号,选择性关闭图6中示出的A+1结构601和A+B+1结构,以降低其开关活动性。相比常规全加器604,基于行列Bypass的全加器在性能和功耗上均有优势,如果Bypass成功,那么关键路径上只有或门和选通,性能明显提升,因为常规全加器的关键路径上有一级与门,一级或门和一级异或门,同理,基于行列Bypass的半加器相比于常规半加器602,也有性能功耗上的提升。通过分析得知,采用Bypass结构实现的乘法器较采用标准结构实现的乘法器在性能和功耗上都有一定程度的改善。用C语言搭建基于本发明构建的16 X 16的改进型基4Booth编码型Wallance树乘法器模型,使用0-1随机分布全覆盖测试进行仿真,得到的Bypass概率约为40%,而根据图3所示,当Bypass成功时,相比于常规全加器单元或半加器单元,可以关闭约1/3的晶体管,大大降低晶体管的动态功耗,如果Bypass失败,那么仅仅增加两个选通器的功耗,代价非常小。同时,如果采用改进型基4Booth编码技术,相比于全阵列乘法器,部分积的数目减少约一半,累加需要的全加器和半加器的数量减少一半左右,相应节省了很多晶体管的静态功耗和动态功耗。同时也能减少部分积压缩树计算时间,提高性能。


图1是现有技术中采用行Bypass技术的4X4阵列乘法器结构示意图;图2是现有技术中采用列Bypass技术的4X4阵列乘法器结构示意图;图3是本发明中基于Bypass的乘法器的基本结构示意图;图4是本发明中基于行列Bypass技术的全加器和半加器的结构示意图;图5是本发明中行列Bypass技术的全加器和半加器中常用的四种门控单元类型的结构不意图;图6是现有技术中半加器和全加器的逻辑实现以及本发明中基于行列Bypass的A+1结构和A+B+1结构示意图;图7是本发明优选实施例中所述乘法器的结构示意图;图8是改进型基4Booth编码表;图9是改进型基4Booth编码电路和产生I位部分积的译码电路;图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为I时,加法器使用加法模块405进行全加操作,即A+D+1,其中D为操作数B和E的与信号;当控制信号407为O时,关闭加法模块405,直接将输入操作数A选通输出给全加器的输出S。同样,基于行列Bypass的半加器402不仅能够实现常规半加器操作,而且能够使用门控单元和选通器选择性关闭A+1加法模块406,其中,输入的操作数B为门控单元和选通器的控制信号。当输入操作数B为I时,半加器使用A+1加法模块406进行半加操作,当输入操作数B为O时,关闭A+1加法模块406,直接将另一输入操作数A选通输出给半加器的输出S。图5所示为基于行列Bypass的全加器401和半加器402中可使用门控单元的各种形式,门控单元505可有四种形式实现:三态门501,与门502,锁存器(Latch) 503和传输门开关504。门控单元可以有效隔离输出信号与输入信号,关闭门控单元后面的模块,降低晶体管的开关活动性。当门控单元的控制信号S= I时,四种实现形式的门控输出Q都等于A ;当门控单元的控制信号S = O时,三态门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- > O ;01- > *1 ;10- > *2 ;11_ > *3上述编码中,左边两位数字代表操作数Y中的相邻两位,任意两位有四种可能:
00,01,10,11 ;右边一位代表编码输出,对应四种编码:0,1,2,3,将所述操作数Y的编码输出与操作数X相乘,得到的部分积集合是{O,IX,2X,3X},这样,操作数Y的每两位产生一个部分积,将部分积的数量减少一半。在应用过程中,3X的求解比较复杂,包含一个移位操作和加法操作,于是改进型的基4Booth编码技术应运而生。在编码时,通过同时观察3位来加以简化,即:可在操作数Y的最低位后面加一“考察位”:考察,其中为“考察位”。生成下一个部分积时,考察其中y;M+i为“考察位”,i的最小值为O,最大值为操作数Y位数的一半,y—i默认为O。添加考察位后,可以避免进行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编码值为I时,bl输出l,b2输出l,neg输出O;当Booth编码值为2时,bl输入为0,b2输入为I,neg输出O ;当Booth编码值为_1时,相应的bl输出l,b2输出1,neg输出I ;当Booth编码为_2时,相应的bl输出为O, b2输出为I, neg输出I ;当Booth编码值为0时,131 = 042 = 0,1^8 = 0。在Booth译码902中,其输入Xi,Xi^1来自被乘数X的连续两位数据,选通信号来自Booth编码901,其输出为一个部分积PPCi。在Booth译码模块902中,Booth编码模块901的输出bl,b2,neg作为Mux3和Mux2的选通信号,选择{O, Xi, XiJ中的一个作为部分积的输出,即当bl为I时,选择Xi,当b2为I时,选择Xi+当bl和b2均为O时,选择0;由此可知部分积的输出可以为{-Α,-Χη,Ο,Χη,Χ^}。当然完整的Booth编码电路由(N/2+1)组Booth编码模块901组成,而完整的Booth译码电路由(N/2+1) XN个译码模块902组成。在图9中,电路级Booth编码908使用门级电路完成行为级Booth编码901的设计,Booth编码电路908中,操作数Y中的3位Y2i+1, Y2i, Y2i_1; Y2i^1与Y2i经异或门得到bl,Y2i和Y2i+1经异或非门后与bl经或非门得到b2,Y2i^1与Y2i经与非门后与Y2i+1经与门得到neg ;在Booth译码电路909中,另一操作数X的2位XiUl与Xi经与门后得到的结果与b2和Xp1经与门得到的结果经或非门,再与neg经异或非门,生成部分积PPCji。图10示出两个16位数进行完上述改进型的基4Booth编码后的部分积进行Wallance树压缩的过程,16位无符号数乘法操作,经过改进型基4Booth编码译码产生9个部分积(PPC0, PPCl,PPC2...PPC8)。

本发明公开的Wallance压缩树中使用的基本单元是基于行列Bypass技术的全加器(FA) 1010和半加器(HA) 1011。这两种基本单元能够选择性关闭部分电路,减少晶体管的活动开关性,降低芯片的功耗。其中,FA1010实现的是3:2压缩的功能,根据图4中的全加器401的结构,将第二、第三个操作数相与后的结果作为Bypass的选通信号,控制是否进行Bypass 操作。上述Wallance压缩树1001使用基于行列Bypass的全加器和半加器1011作为基本单元,一共构建了 4级Wallance压缩树,其中每一级中的小黑点,S或S的反码是该级Wallance压缩树的I位输入信号,小黑点表示对操作数进行Booth编码后的I位部分积信号,S表不部分积的符号位,每一行表不一个部分积,其前面的I和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^BiP1 = A1 B1Ci = G^PiCp1其中,,*表示两个数相与, 表示 两个数异或,+表示两个数相或;其门级的电路实现为如图11中模块113所示,Ai和Bi经过与门得到GpAi和Bi经过异或门得到PpPi和Ci经过与门再与Gi经过或门得到Ci+1。4位求和模块112接收4位一组的进位传播位Pp进位产生位Gi和前一级的进位Ci,来计算最终的结果Si,其行为级描述为:S1 =P, Ct其门级的电路实现为如图11中模块114所示,Pi和Ci信号经过一级异或门得到
Si信号。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.种基于Bypass技术的乘法器,所述乘法器用于接收两个操作数,并对其进行乘法操作,其包括=Booth编码模块、Booth译码模块、部分积压缩树和快速加法器306 ;其中,Booth编码模块对第一个操作数进行Booth编码;B00th译码模块根据所述Booth编码模块输出的Booth编码对乘法器的第二个操作数进行译码而得到多组部分积;所述部分积压缩树处理所述多组部分积,得到两个压缩结果;所述快速加法器将所述两个压缩结果进行加法操作,从而得到最终的乘法结果;其中所述部分积压缩树的基本单元为基于行列Bypass的全加器和半加器。
2.权利要求1所述的乘法器,其特征在于,所述基于行列Bypass的全加器和半加器包括门控单元和加法模块,所述门控单元选择性地关闭所述加法模块。
3.权利要求1所述的乘法器,其特征在于,所述基于行列Bypass的全加器接收三位输入数据,其中两位输入数据相或后作为控制信号控制所述全加器是否执行加法操作;所述基于行列Bypass的半加器接收两位输入数据,其中一位输入数据作为控制信号控制所述半加器是否执行半加操作。
4.权利要求1所述的乘法器,其特征在于,所述全加器包括加法模块、门控单元和选通器,其接收三位输入数据,包括加法模块、门控单元和选通器,其接收三位输入数据,其中两位输入数据经过或门后作为门控单元和选通器的控制信号,以打开或关闭所述加法模块;如果所述加法模块被关闭,则该全加器的输出为第三位输入数据,如果所述加法器被打开,则所述第三位输入数据和所述两位输入数据的与信号作为所述加法模块的两个输入。
5.权利要求1所述的乘法器,其特征在于,所述半加器包括加法器、门控单元和选通器,其接收两位输入数据,其中一位输入数据作为门控单元和选通器的控制信号,以打开或关闭所述加法模块,如果所述加法器被打开,则所述第二位输入数据作为所述加法模块的输入。
6.权利要求1所述的乘法器,其特征在于,所述全加器的加法模块使用A+B+1电路,该A+B+1电路由一个或门和一个同或门构成;所述半加器的加法模块使用A+1电路,该A+1电路由一个反相器构成。
7.权利要求1所述的乘法器,其特征在于,所述Booth编码模块采用改进型的基4Booth 编码。
8.权利要求7所述的乘法器,其特征在于,所述Booth编码模块包括多个编码单元,所述编码单元的输入为第一操作数Y的相邻3位Y2i+lY2iY21-l,其中Y2i_l与Y2i经异或门得到bl,Y2i和Y2i+1经异或非门后与bl经或非门得到b2,Υ2 -1与Y2i经与非门后与Υ2 +1经与门得到neg ;所述Booth译码模块包括多个译码单元,所述译码单元的输入为第二操作数X的相邻2位XiX1-1和相应编码单元的输出bl、b2和neg,bl与Xi经与门后得到的结果与b2和X1-1经与门得到的结果经或非门,再与neg经异或非门,生成部分积。
9.权利要求1所述的乘法器,其特征在于,所述部分积压缩树采用的是Wallance压缩算法,该部分积压缩树包括多个基于行列Bypass的全加器和半加器,所述全加器将输入的部分积的三位压缩成两位作为下一级全加器或半加器的输入,所述半加器将输入的部分积的两位进行相加后作为下一级全加器或半加器的输入。
10.权利要求1所述的乘法器,其特征在于,所述超前进位加法器包括PG计算模块和求和模块,所述PG计算模块计算进位传播位和进位产生位,其以输入的加法操作数的每4位为一组与前一级的进位作为输入来计算;所述求和模块用于接收所述进位传播位、进位产生位和前一级的进位,计算得到 最终的乘法结果。
全文摘要
本发明公开了一种低功耗高速乘法器装置,实现两个N位操作数相乘运算,主要采用基于门控行列Bypass技术的全加器和半加器,该乘法器包括Booth编码逻辑,Booth译码逻辑,基于Bypass的部分积压缩树和快速加法器等部件。Booth编码与译码逻辑,采用改进型Booth编码方式,对2个N位操作数进行处理,得到M个部分积。部分积压缩树对M个部分积进行处理,其压缩树的基本单元为基于行列Bypass的全加器和半加器,该Bypass技术使用门控单元来选择性关闭部分求和逻辑,减少晶体管的活动开关性,降低关键路径上的延时,从而做到高性能低功耗设计。
文档编号G06F1/32GK103092560SQ20131002708
公开日2013年5月8日 申请日期2013年1月18日 优先权日2013年1月18日
发明者王东琳, 侯化成, 王惠娟, 肖偌舟, 林玻, 张志伟 申请人:中国科学院自动化研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1