快速乘法电路的制作方法

文档序号:6412684阅读:325来源:国知局
专利名称:快速乘法电路的制作方法
背景技术
本发明的各个实施方案涉及操作数的快速乘法,所述操作数中至少有一个可以非常大。
在传统的组合乘法器中,乘数中的每一个位(bit)位置与一个被乘数相乘,以生成中间积(interstitial product)。该中间积与乘数中所有其他位位置的那些中间积相加以生成积,其中每个中间积都进行移位,使得最低有效位与产生该中间积的乘数位位置一致。
在很多应用中,乘法运算的操作数都可能是很大的二进制数。例如,作为加密事务期间所进行的协商的一部分,对1024位或2048位的操作数进行乘法运算是很常见的。乘法一般包括乘数值A对于被乘数B的每个位位置进行移位,并且可能将前面获得的中间积加起来。因此,对于长度为n的被乘数,这包括了n次移位以及多达n次的相加。对于超长的被乘数(1024位或2048位)而言,逐位的移位运算在计算上太昂贵了。
在本领域中需要用于长操作数的快速乘法技术。此外,要求这种乘法技术不必执行以前方案中过于昂贵的逐位处理。


图1是图示了根据本发明一个实施方案的中间积生成器的框图。
图2是图示了根据本发明另一个实施方案的中间积生成器的框图。
图3是示例性的乘数寄存器的框图。
图4图示了根据本发明一个实施方案的乘法器电路。
图5图示了根据本发明另一个实施方案的乘法器电路。
图6图示了根据本发明进一步实施方案的乘法器电路。
具体实施例方式
本发明的各个实施方案提供了相对于常见乘法器而言复杂性降低的乘法电路。在所述实施方案中,乘法电路由两个操作数(这里称为“被乘数”和“乘数”)产生一个结果。并不是对于乘数中的每个位位置(bit position)都要生成一个中间积,而是可以对乘数的多个位位置生成单个中间积。因此,由于要相加的中间积少了一些,所以求和中间积以获得乘积结果变得容易了一些。
图1是图示了根据本发明一个实施方案的中间积生成器(“IPG”)100的框图。IPG 100由被乘数A生成中间积。它可以包括被乘数寄存器(这里被称为“A寄存器”)110,一对移位寄存器120、130(分别标记为“移位1”和“移位2”)和“3A寄存器”140。A寄存器以虚线示出,这是因为它可以但不一定需要放置在IPG 100当中;可替换地,它可以设置在进位存储加法器(carry save adder)一类的某个其他部分中,但是它的内容可以作为输入被提供给IPG。IPG 100还可以包括一对多路复用器(通称为“MUX”)150、160以及反相器170。
移位寄存器120、130中的每一个都存储那些代表A寄存器中所存储的值在移位预定数量的位位置后的值。第一移位寄存器120可以存储朝最高有效位位置移位了一个位位置的A值。它被标记为“移位1”。第二移位寄存器130可以存储已经朝最高有效位位置移位两个位位置的A值。在二进制数据系统中,一次位移位(bit shift)或两次位移位分别有效地造成了源数据值的两倍乘法或四倍乘法。
3A寄存器140,正如它的名字所暗示的那样,是用于存储代表三倍于A寄存器中数值的值的寄存器。存储在这个寄存器中的值可以从A寄存器110和移位1寄存器120的值直接相加获得,或者可替换地,可以从移位2寄存器140的值中减去移位1寄存器120的值,从而获得该寄存器中的值。用于实现这些功能的电路是简单易懂的,并且为了保持图示说明的简洁,从图1中省去了上述电路。
A寄存器110、两个移位寄存器120和130以及3A寄存器140的输出可以被输入到第一MUX 150。第一MUX 150的输出可被同时输入到第二MUX 160和反相器170。反相器170的输出可以作为第二输入被提供给第二MUX 160。反相器170可以生成从第一MUX150输出的多个位的2的互补反码(complement inversion)。第二MUX 160可以具有直接与零值“”耦合的第三输入。或者,零值可被输入到第一MUX 150。因此,给定输入值A,则IPG 100可能生成以下任何输出A、A、2A、2A、3A、3A、4A、4A和。
IPG 100可以包括控制器180,用于掌管两个MUX 150、160的操作。如下面所讨论的那样,给定输入的“段”,控制器180可以产生一个控制信号(标记为ci),该信号使得MUX 150、160在驱动时钟(未示出)的每个周期上输出可能的输出中选定的一个输出。
图2是图示了根据本发明另一个实施方案的中间积生成器IPG 200的框图。根据一个实施方案,IPG 200可以包括多个反相器210、220、230、3X乘法器240、移位器250和多路复用器260。在这个实施方案中,IPG 200被图示为与外部的被乘数寄存器相连,而不是将被乘数寄存器包括为自身的一部分。被乘数可以在IPG 200的第一终端270上被输入给IPG 200。反相器之一210可以耦合到第一终端270,以在被乘数出现时将其反相。
3X乘法器如同它的名称所暗示的那样,当被乘数出现在输入终端时生成一个三倍于被乘数的值。第二反相器220可以耦合到3X乘法器240以反相它的输出。
移位器250也可以耦合到输入终端270。它可以用来将被乘数向右移位1或2个位位置。第三反相器可以反相移位器250的输出。三个反相器210、220、230以及3X乘法器240和移位器250的输出都被输入到多路复用器260。
多路复用器260也可被控制为不输出来自IPG 200的任何输入。这种情况下,多路复用器260使得IPG 200从中生成零输出。
根据一个实施方案,当想要基于一个长被乘数A和短乘数B来执行乘法运算时,被乘数A可被加载到IPG 200中。A、3A、A和3A的值将在一个短的初始化时期后,对多路复用器260可用。同样,A和A移位后的值也将对多路复用器260可用。一旦这些值可用,则它们可从IPG中被取出,并基于乘数段的值被转发到乘法电路的剩余部分(在图2中未示出)。
所述的IPG可以包括控制器290,该控制器响应于这些乘数段,让多路复用器260从该IPG内取出先前存储的值之一。我们知道,许多乘法电路包括用于其他目的的控制器。控制器290可被集成到这些公知的控制器中,或者在需要时以独立的元件出现。图2仅为方便起见,图示了与IPG 200独立的控制器290。
在一个实施方案中,乘数B可被解析成几个四位段si。每个段si包括乘数B中的第B3i+2-B3i-1位。由这些段可以生成控制信号ci,用以确定IPG内的哪一个值应当从多路复用器输出。在一个实施方案中,所述IPG可以根据下面表1所示的方案来生成输出。
表1


其中,A是输入A的2的补码(complement)。控制值ci可以按照下式与四位输入模式相关ci=-4si3+2si2+si1+si0(1.)其中,sij代表第si段的第j位位置。对于第s0段,作为虚构位位置“B-1”的第0位位置可被设置为0,以使得所述控制器对第s0段的响应与表1一致。
从图3中可以看出,乘数B不会将所有段全部填满,除非该乘数的长度是3的倍数。在一个实施方案中,当乘数的长度不是3的倍数时,它可以进行充分长度地符号扩展,以填满最后一段中尚未使用的部分。这一般包括复制符号位,即最高有效位BMSB,以超出该最高有效位之前填充虚构的位位置。
前面所描述的IPG实施方案可被应用于不同体系结构的乘法器电路。在每种应用中,IPG的使用基本上都通过每三位位置进行一次加法,而不像传统技术那样每个位位置都进行一次加法,从而使得乘法器电路实现了更快的运算。
图4是根据本发明一个实施方案在组合乘法器300中应用IPG的图。组合乘法器300可以包括第一和第二寄存器310,分别用于存储被乘数A和乘数B。它可以包括IPG 330、控制器340、多个中间积寄存器350.1-350.L和乘积寄存器360。加法电路370可被插入到中间积寄存器350.1-350.L和乘积寄存器360之间。为清楚起见,图4中用各个寄存器350.1-350.L和360的协同定位(co-located)位位置之间的多条互连线来表示所述加法电路。
在运算期间,IPG 330可被初始化来建立A、A、3A和3A的值以及A和A的移位后的值。控制器340可以将乘数B解析为多个段,并且响应于每个段中的位模式,让IPG330将其中一个值加载到对应的中间积寄存器(比如350.1)中。在一个实施方案中,中间积寄存器350.1-350.L的数量可以取决于乘数B所支持的段的数量。因此,中间积寄存器350.1-350.L的数量可以与乘数寄存器320的长度绑定。
一旦将值加载到每一个中间积寄存器350.1-350.L中,组合乘法器300就可以通过求和所有的中间积寄存器350.1-350.L,从而使最终的乘积被存储在乘积寄存器360中。
在一个被乘数A长m,乘数B长n的实施方案中,乘积寄存器360可以象传统的组合乘法器中一样,具有n+m的长度。但中间积寄存器350.1-350.L可以具有m+2的长度,这与传统的组合乘法器中长度为m的情形不同。
传统的组合乘法器对于乘数B的每个位位置都包括一个中间积寄存器。在前面的实施方案中,对于乘数B的每三个位位置才只有一个中间积寄存器(例如350.1)。因此,由于上述实施方案中的组合乘法器300与传统的对应部分相比,只包括大约三分之一数量的中间积寄存器,所以预计本实施方案大约比传统电路快三倍地产生结果。在本实施方案中预计将更快地产生乘积,这是因为将在更少的中间积寄存器上执行最后的加法,因此该加法可以更快地变为可用。
图5是根据本发明一个实施方案的、与移位-相加乘法器电路400集成在一起的IPG的应用框图。乘法器电路400可以包括一对寄存器410、420,用于存储被乘数A和乘数B。移位-相加乘法器电路400还可以包括IPG 430、控制器、进位存储加法器450和乘积寄存器460。
在运算期间,乘法器电路400可以被初始化。在这个实施方案中,乘积寄存器460可以被清零,并可用被乘数A的值来加载中间积生成器430。此后,在运算期间,控制器440可以从乘数寄存器420中读出每个段,并使得所选择的值从IPG 430被输出到进位存储加法器450的第一输入端。乘积寄存器460的最高有效位可被输入到进位存储加法器的第二输入端。进位存储加法器450可以将提供给它两个输入端中每一个的值加起来,并将该值写回到乘积寄存器460。一旦乘积寄存器460被新的值覆写,则它可以向下移动三个位位置。乘数B支持多少段,上述过程就可以重复多少次。
与图4中的实施方案一样,图5中的实施方案相对于传统的移位-相加乘法器电路提供了改善的性能。传统电路对乘数B的每一个位位置执行加法。相反,图5中所示的实施方案对乘数B的每三个位位置才执行一次加法。同样,更少数量的加法使得图5的移位-相加乘法器能够比传统电路花费更少量的时间来生成乘法积。
在另一个实施方案中,乘法器电路可以省略掉乘数寄存器(例如图5的乘数寄存器420)。图6图示了一个乘法器500,它由被乘数寄存器510、IPG 520、控制器530、进位存储加法器540和乘积寄存器550组成。作为初始化步骤,被乘数值可被输入到IPG 520。此外,乘数值(B)可被加载到乘积寄存器550的最低有效位位置。
在每个时钟周期上,乘积寄存器550的内容都可以向下移动三个位位置。当乘积寄存器的最低有效位被移出乘积寄存器时,它们可被输入到控制器530。响应于这三位(及从前一个时钟周期的移位中的1位),控制器530可以使得IPG 520生成前面表1中所示的输出。该IPG输出被提供给进位存储加法器540的第一输入端。乘积寄存器向下移位后的值可以被提供给进位存储加法器540的第二输入端。进位存储加法器540可以将这两个输入值加起来,并将它们存储到乘积寄存器的最高有效位位置。同样,本实施方案相对于一次执行单位移位的其他移位-相加乘法器而言,提供了改善的性能。
这里专门图示并描述了本发明的几个实施方案。然而,可以理解,对本发明做出的修改和改变都被以上教导所覆盖,并位于所附权利要求的范围之内,而不会偏离本发明的精神和预料范围。
权利要求
1.一种中间积生成器,包括第一寄存器,用于存储已被移位1位的被乘数值A,第二寄存器,用于存储已被移位2位的所述被乘数值A,第三寄存器,用于存储3A值,第一多路复用器,具有与所述被乘数值A的源以及所述第一、第二和第三寄存器相耦合的输入端,反相器,具有与所述第一多路复用器的输出端相耦合的输入端,以及第二多路复用器,具有与所述第一多路复用器的输出端以及所述反相器的输出端相耦合的输入端。
2.如权利要求1所述的中间积生成器,其中,所述第二多路复用器被耦合到等于零值的源。
3.如权利要求1所述的中间积生成器,其中,所述第一多路复用器被耦合到等于零值的源。
4.如权利要求1所述的中间积生成器,还包括控制器,所述控制器具有耦合到所述两个多路复用器的控制输出。
5.如权利要求4所述的中间积生成器,其使用在乘法器中,其中,所述控制器具有耦合到乘数数据源的控制输入。
6.一种中间积生成器,包括用于第一数据项的输入终端,耦合到所述输入终端的移位器,耦合到所述第一输入终端的3X乘法器,耦合到所述第一输入终端的第一反相器,耦合到所述移位器的输出端的第二反相器,耦合到所述3X乘法器的输出端的第三反相器,以及多路复用器,所述多路复用器耦合到所述输入终端、所述移位器的输出端、所述3X乘法器的输出端,并且耦合到所述三个反相器的每一个。
7.如权利要求6所述的中间积生成器,还包括控制器,所述控制器具有耦合到所述多路复用器的控制输出。
8.如权利要求7所述的中间积生成器,所述中间积生成器使用在乘法器中,其中,所述控制器具有耦合到乘数数据源的控制输入,并且所述输入终端被耦合到被乘数数据源。
9.一种乘法电路,包括耦合到被乘数数据源的中间积生成器,控制器,所述控制器耦合到乘数数据源,并且迭代地被该乘数数据源的四位段控制,所述控制器具有耦合到所述中间积寄存器的控制输出,多个中间积寄存器,所述多个中间积寄存器中每一个都与所述中间积生成器进行通信,以及乘积寄存器,所述乘积寄存器耦合到所述中间积寄存器中的每一个。
10.如权利要求9所述的乘法电路,还包括耦合到所述被乘数数据源的输入终端,耦合到所述输入终端的移位器,耦合到所述第一输入终端的3X乘法器,耦合到所述第一输入终端的第一反相器,耦合到所述移位器的输出端的第二反相器,耦合到所述3X乘法器的输出端的第三反相器,以及多路复用器,所述多路复用器耦合到所述输入终端、所述移位器的输出端、所述3X乘法器的输出端,并且耦合到所述三个反相器的每一个。
11.一种乘法电路,包括耦合到被乘数数据源的中间积生成器,控制器,所述控制器耦合到乘数数据源,并且迭代地被该乘数数据源的四位段控制,所述控制器具有耦合到所述中间积寄存器的控制输出,具有第一和第二输入端的加法器,所述第一输入端被耦合到所述中间积生成器,以及乘积移位寄存器,所述乘积移位寄存器耦合到所述进位存储加法器,其中,所述乘积移位寄存器的最高有效位被耦合到所述进位存储加法器的第二输入端。
12.如权利要求11所述的乘法电路,还包括耦合到所述被乘数数据源的输入终端,耦合到所述输入终端的移位器,耦合到所述第一输入终端的3X乘法器,耦合到所述第一输入终端的第一反相器,耦合到所述移位器的输出端的第二反相器,耦合到所述3X乘法器的输出端的第三反相器,以及多路复用器,所述多路复用器耦合到所述输入终端、所述移位器的输出端、所述3X乘法器的输出端,并且耦合到所述三个反相器的每一个。
13.一种乘法电路,包括耦合到被乘数数据源的中间积生成器,控制器,所述控制器耦合到乘数数据源,并且迭代地被该乘数数据源的四位段控制,所述控制器具有耦合到所述中间积寄存器的控制输出,具有第一和第二输入端的加法器,所述第一输入端被耦合到所述中间积生成器,以及乘积移位寄存器,其耦合到所述进位存储加法器,其中,所述乘积移位寄存器的最高有效位被耦合到所述进位存储加法器的第二输入端,以及所述乘数数据源一开始预备在所述乘积移位寄存器的最低有效位空间中。
14.如权利要求13所述的乘法电路,还包括耦合到所述被乘数数据源的输入终端,耦合到所述输入终端的移位器,耦合到所述第一输入终端的3X乘法器,耦合到所述第一输入终端的第一反相器,耦合到所述移位器的输出端的第二反相器,耦合到所述3X乘法器的输出端的第三反相器,以及多路复用器,所述多路复用器耦合到所述输入终端、所述移位器的输出端、所述3X乘法器的输出端,并且耦合到所述三个反相器的每一个。
15.一种乘法方法,包括一开始,对于一个值为A的被乘数,生成以下值0、A<<1、3A、A<<2以及它们的补码,迭代地,对于乘数B的每个三位段,将所述初始值之一加到中间积上,其中,所述加法发生在所述中间积中由所述段的一个位置来确定的位位置处。
16.如权利要求15所述的乘法方法,其中,所述乘法是在无符号组合乘法器中完成的。
17.如权利要求15所述的乘法方法,其中,所述乘法是在移位-相加乘法器中完成的。
18.如权利要求15所述的乘法方法,其中,所述方法是在集成电路中执行的,并且每次迭代在每个驱动时钟周期发生一次。
19.如权利要求15所述的乘法方法,其中,由表1决定,选择所述初始值,即要考虑所述三位段的值以及与该三位段相邻的一个位位置的值。
20.如权利要求15所述的乘法方法,其中,所述初始值是根据控制值ci选出的,所述控制值ci如下得出ci=-4si3+2si2+si1+si0其中,si3、si2和si1是来自所述三位段内的值,而si0是与所述三位段相邻的位位置的值。
全文摘要
利用中间积生成器可以实现两个操作数的快速乘法,所述中间积生成器由乘数的多个多位段中的每一个段生成一个中间积。由于和现有系统相比建立了较少的中间积,因而对中间积求和更快了,所以最终乘积的生成变快了。在一个实施方案中,所使用的中间积生成器具有用于存储被乘数值(“A”)、A移位后的值和3A值的寄存器。一系列多路复用器和一个反相器可以由这些寄存器中的数据生成中间积值。这个实施方案对被乘数的四位段是有用的。
文档编号G06F7/52GK1666173SQ03816217
公开日2005年9月7日 申请日期2003年4月24日 优先权日2002年5月8日
发明者埃里克·霍斯泰德 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1