长整数乘法器的制作方法

文档序号:6489527阅读:278来源:国知局
专利名称:长整数乘法器的制作方法
技术领域
本发明涉及用于相乘两个长整数并与一第三长整数相加,再以第三长整数为模的方法和装置。这种相乘必须在例如密码处理器中密码算法的实现期间被重复地执行,这些密码处理器例如可以是用于智能卡中的处理器。
在电子设备中越来越多地使用密码算法建立一种快速有效地执行长整数模乘的需要。例如,智能卡和许多其它电子设备使用多种密码协议,例如RSA以及基于椭圆曲线和超椭圆计算的其它协议。作为一个基本的需求,所有这些协议有能力执行R=X.Y+ZmodN形式的长整数模乘,尽管不经常需要加Z。
通常,利用诸如RSA之类的协议,长整数X和Y是1024比特或者甚至是2048比特整数,并且必须执行乘法操作几百次或几千次以完成加密或解密操作。因此,期望实施这些操作的密码设备能快速地执行长整数乘法。
执行这种长整数乘法的一个方面是将长整数分解为许多字并且以迭代过程连续将这些字相乘在一起,该迭代过程产生连续的中间结果,累积这些中间结果以获得最终结果。这个技术的一个特征是必须在乘法过程的每个阶段期间求和很多不同长度的加数。因此,对于任何给定比特位置的加数的数目可以是显著不同的。常规地,这种求和运算是通过Wallace树来执行,这些比特通常使用比期望更多的硬件,并引入比期望更多的延迟。
本发明的一个目的是提供一种用于尽可能快地实现长整数乘法操作的方法和装置。
本发明的一个目的是提供一种更有效的方法和装置,用于求和大量的加数,特别是其中加数比特的数目作为总和中比特位置的函数而变化的情况。
在一种设置中,一种用于相乘两个长整数的加法器电路使用加法器的网络,用于求和长整数的连续字以生成中间结果。加数的数目作为比特位置的函数而变化,并且根据预期加数的最大数目设计该加法器的网络以减少网络中加法器的级的数目。本发明的一个目的是调整该网络从而包括作为比特位置的函数而变化的多个加法器。
在另一个设置中,可以提供一输出级,其将和与表示中间结果的网络进位输出相加。本发明的一个目的是通过保留用于随后网络计算输出的最高有效(进位)比特,从而避免将进位比特从这个输出级送回网络的延迟。
在另一设置中,本发明的一个目的是在完成前一个计算之前使网络能够利用一组新的加数开始后续计算。通过配置该加法器的网络以便将前一个计算的输出在一中间级反馈到该网络,其中该中间级位于最高(输入)级和网络最低(输出)级之间。
根据一个方面,本发明提供一种用于求和来自多比特字的多个加数的加法器电路,包括n输入进位保留加法器电路的网络,每个电路具有第一数目的和输出和第二数目的进位输出,该加法器电路排列在多列中,每列对应和中的一个预定比特位置,并且按多级来排列,第一级接收来自多个字中的所选择字的对应比特位置的多个加数,以及较低级中的每一级接收来自于下面各项中一个或多个的加数(i)多个字的其它所选择字的对应比特位置,(ii)来自同一列的较高级加法器电路的和数输出,以及(iii)来自对应较低有效比特位置的一列中的较高级加法器的进位输出,其中每列中的n输入加法器的数目根据比特位置而变化。
根据另一方面,本发明提供一种加法器电路,包括用于接收多个加数的输入;第一求和装置,用于对多个加数求和以产生包括高位(high order)部分以及第一和第二低位部分的输出;第一反馈线,用于将第一高位部分耦合到所述输入上较低位位置,以用于随后计算;输出级,包括第二求和装置,用于求和第一和第二低位部分以提供第一字输出和反馈寄存器,用于保留来自所述第二求和装置的进位比特并在随后计算期间将所述进位比特作为输入提供到所述第二求和装置。
根据另一方面,本发明提供一种用于求和来自多比特字的多个加数的流水线加法器电路,包括第一求和装置,其包括一进位保留加法器电路的网络,加法器电路排列成多个列,每一列对应和数中的一预定比特位置,并且按照多个级来排列,第一级耦合用于接收来自多个字的所选择字的对应比特位置的多个加数,较底级耦合用于接收来自于如下各项中一个或多个的加数(i)多个字的其它所选择字的对应比特位置,(ii)来自同一列的较高级加法器电路的和输出,以及(iii)来自对应较低有效比特位置的一列的较高级加法器电路的进位输出,第一反馈线,其为了后续计算将最低级加法器电路的第一组多个较高有效比特输出耦合到加法器电路中间级的相应数量的较低有效比特输入,中间级位于所述第一和最低级加法器电路之间。
现在将通过实例并参考附图描述本发明的实施例,其中

图1示出了适于执行乘法运算B.c+r=x.y+c+z(其中x和c具有64比特宽度,y、z和r具有16比特宽度)的阵列乘法器;图2示出了要增加到执行计算Rj=xn-j-1y0+zn-j-1+(xn-j-1y1+rj-1,0)By+(xn-j-1y2+rj-1,1)By2+...+(xn-j-1yn-1+rj-1,n-2)Byn-1+rj-1,n-1)Byn,的流水线乘法器中的字的比特对准,其中每个x.y字乘积由Pj表示,Pj被分为多个乘积,例如P0...P15和由z表示的和项;图3是示出了为了对图2的字求和,每一比特位置加数数目的图;图4示出了适用于执行对图2字的流水线求和的常规Wallace树结构的分段;图5示出了适用于执行对图2字的流水线求和的自适应树结构的分段;图6示出了适于执行对图2字求和的非流水线加法器的示意框图;图7示出了基于图6加法器结构的流水线加法器的示意框图;图8示出了适用于执行对图2字的流水线求和的图5自适应树结构的另一分段;
图9示出了根据图5的自适应树结构的一部分;以及图10示出了用于插入到图9自适应树结构的多个两输入进位保留加法器的插入。
为了计算乘积X.Y+ZmodN,其中X、Y和Z例如是大约1024或2048比特长度量级的长整数变量,长整数变量X、Y和Z被分割为例如32比特长度或64比特长度的较小“字”。
首先,X和Z分割成n个字,通常每个字长度为K,从而X=xn-1Bxn-1+xn-2Bxn-2+...+x0,Z=zn-1Bxn-1+zn-2Bxn-2+...+z0其中Bx=2k。在一个实例中,k=32,在另一个实例中,k=64。
通过这种方式,X和Z分段为多个字,每个字长度为k比特。
于是,结果R可由下式计算出 因此,Rj=(xn-j-1Y+zn-j-1+Rj-1Bx)mod N。
首先,将xn-1与全部Y相乘,再加上zn-1;然后计算模N归约。结果是R0。
接下来,将xn-2与全部Y相乘,再加上zn-2以及R0.BX;然后对所得结果计算以N为模的归约。结果是R1。
接下来,将xn-3与全部Y相乘,再加上zn-3以及R1.BX;然后对所得结果计算以N为模的归约。结果是R2。
重复这个过程直到使用完X的所有字为止,从而获得最终结果R=Rn-1,其中x0是要被处理的X的最后字。
然而,从实用观点来看,用于长为1024比特的Y的乘法器是不合乎需要的。因此,我们也把Y从而也将Rj拆为例如32比特长度或16比特长度的较小“字”。
因此,也将基本乘法Rj=(xn-j-1Y+zn-j-1+Rj-1Bx)mod N分段。
将Y和Rj分为p个m比特长度的字,即By=2mY=yp-1Byp-1+yp-2Byp-2+...+y0Rj=rj,p-1Byp-1+rj,p-2Byp-2+...+rj,0
为了简单,首先假定X和Y的长度相同,并且X和Y字的大小相同,所以p=n和m=k。下面,我们将给出当情况不同时必须要改变的内容。
以此方式,X和Y被分段为n个字,每个字的长度为k比特。于是, 为了计算Rj,我们执行下面操作首先,将xn-j-1与y0相乘,加上rj-1,-1=zn-j-1,并且将所得结果分为两个相等部分较低部分rj,0(m比特)和较高部分cj,0(k比特)B.cj,0+rj,0=xn-j-1.y0+rj-1,-1.rj,0作为结果的一部分保存。
接下来,将xn-j-1与y1相乘,加上先前的进位字cj,0。而且,还加上z0=rj-1,0。同样将所得结果分为两个相等部分较低部分rj,1和较高部分cj,1B.cj,1+rj,1=xn-j-1.y1+cj,0+rj-1,0rj,1作为结果的一部分保存。
接下来,将xn-j-1与y2相乘,加上先前的进位字cj,1。而且,还加上z1=rj-1,1。同样将所得结果分为两个相等部分较低部分rj,2和较高部分cj,2B.cj,2+rj,2=xn-j-1.y2+cj,1+rj-1,1.rj,2作为结果的一部分保存。
重复这个过程直到执行最后一次相乘yn-1为止,即将xn-j-1与yn-1相乘,再加上先前进位字cj,n-2。此外,还加上Zn-2=rj-1,n-2。所得结果同样分为2部分,分别为k比特长度和m比特长度较低部分rj,n-1和较高部分cj,n-1By.cj,n-1+rj,n-1=xn-j-1.yn-1+cj,n-2+rj-1,n-2.rj,n-1作为结果的一部分保存。
最后一个步骤是加上cj,n-1和zn-1rj,n=cj,n-1+rj-1,n-1.rj,n作为结果的一部分保存。
现在,Rj被完成并且大于它从中导出的Y变量X的一个字的长度。Rj的大小优选地在模N归约中减少一个字,并且然后在计算随后Rj+1期间将所减少的结果用作Rj。
上述计算描述了普通程序,其中X字的长度(k)与y字的长度(m)相等,即Bx=By。
X字的长度可以不同于Y字的长度。例如,如果k/m>1,k=64并且m=16,则Bx=By4,于是1.在第一k/m(在该实例中k/m=4)相乘期间加上z,并且其后开始加上Rj。
2.进位字cj,i比结果rj,i(m比特长度)大k/m(=4)(4m比特长度)倍。
3.最后步骤包括加上都为4m比特宽的进位字和Rj的剩余部分。这个相加可能由相同乘法器通过在k/m步骤中选择y=0来完成,其中在每个步骤中加上m比特的字。
因此,在基本运算中,省略所有指数B.c+r=x.y+c+z在第一运算期间,c=0,z包括Z的k/m个字,随后是r的所有字。在最后k/m个运算期间,y=0。对于每个Rj的全部运算集来说,x保持为常量。
执行x-y相乘的相同乘法器可以用于模N归约。在通过X的一个字完成一组(即x)相乘之后,结果Rj增大了一个k比特字。在计算下一个Rj之前必须通过模N归约来减少k比特,从而恢复原始长度。
存在若干用于模归约的可能算法(例如Quisquater、Barret、Montgomery等),但是它们都使用以下形式的乘法Rj=Xred.N+Rj.
其中Xred(具有k比特大小)乘以模数,N加到结果中。可替换地,通过使用二进制补码N′代替N,Xred被减去。这些方法在计算系数Xred的方式上是不同的。对于Montgomery归约,还必须将所得结果除以Bx,即省略都为零的第一个字。
相同的基本运算可以用于以下归约B.c+r=x.y+c+z其中B=By,r=rj,i,x=Xred,y=Ni并且z=rj,i.
上述乘法运算可以在多个可能的乘法器中执行。然而,阵列乘法器是实现这种乘法器的常规方法。在图1中示出了一个实例。
典型阵列乘法器10是64×16比特乘法器,但是还可以容易地使用其它比特配置。阵列乘法器10计算具有B.c+r=x.y+c+z形式的表达式Rj中的每项。x和c具有64比特宽度,y、z和r具有16比特宽度,作为输入和输出的c实际上包括两项Cc和Cs。
阵列乘法器的基本元件12被示出为嵌入到图1中,并且包括接收输入x和y的乘法器13和加法器14,该加法器接收乘积项x.y、进位和求和输入si和ci,从而从中产生进位和求和输出c0和s0。
阵列乘法器10包括17个‘层’或‘级’,‘加法器1’、‘加法器2’...‘加法器17’。最初16层加法器1...加法器16执行乘法和加法。最后一层加法器17和每一层中的最右边元件仅执行加法。输出是16比特r(15:0)、63比特进位项Cc’(79:16)和63比特和项Cs’(79:16)。进位项Cc’以及和项Cs’的和是下面计算式中的进位项cB.c+r=x.y+c+z实际上,从不计算这个项。而是,执行下面的计算B.(c′+s′)+r=x.y+c′+s′+z阵列乘法器10的基本元件12执行比特计算(co,so)=y*x+ci+si.。通过除了第一层之外每层的最右加法器来实现对z的相加。第17层仅包括加法器,该加法器对于加r(15)是必需的。使用阵列乘法器的这个实施方式的缺点在于,由于来自17个逻辑层的累积延迟而造成该阵列乘法器低速运算。
因此,使用流水线乘法器是有利的,其中不同级的处理可以重叠,从而减少计算时间。参考图2,示意性地示出乘法过程期间所需的不同加数。对于64×16比特乘法器,该过程需要以下内容的相加(i)16个乘积项P0,P1...P15,Pj=X(63:0)*Y(j);(ii)16比特Z项Z(15:0);(iii)63比特进位项Cc(62:0)以及(iv)63比特和项Cs(62:0)。
输出结果Rj(15:0),并且把中间项Cc′(78:16)和Cs′(78:16)进位到下一项Rj+1的计算中。
图3给出了每个比特位置的加数的数目。从比特位置0到比特位置15,因为包括了更多P项,所以加数的数目从4线性增加到19。由于不存在更多z比特,所以对于比特16加数的数目减少1。当进位项以及和数项Cc和Cs丢失时,加数的数目向右到比特62保持为常数18。从而,对于比特位置63发生加数的数目减少2而变为16。最后,从比特位置63直到比特位置78,因为每个连续地较高P项丢失,所以加数的数目从16线性减少到1。
Wallace树是一种使用最优化的级数,为了执行大量加数的加法运算而配置进位保留加法器阵列的常规方法。图4示出了这种Wallace树40的分段。
每个加法器将三个输入相加并且具有两个输出进位以及和数。Wallace树假定每个比特位置的加数数目是常数,并且图4示出了适合执行图3所表示的所需相加的树40的配置。在这个情况下,该树被配置成每个比特位置19个加数,因为对于比特位置15出现最大值。
在第一级,图中表示为‘第一层’,每个比特位置(例如,图中所示的比特位置j)有6个进位保留加法器41。这六个进位保留加法器提供了总共18个输入42、6个和数输出43以及6个进位输出44。另外,存在一个额外的输入45,该输入45被加到第3级(‘第3层’)。这给出了所需的总共19个输入。
通过进位保留加法器46将六个和数输出43加到下一个级2。六个进位输出44被加到树的下一个级2中,但是在左边表示为j+1的下一个比特位置的进位保留加法器56中。对于前面比特位置j-1,第一级的进位保留加法器61也提供六个进位输出64,该六个进位输出64被提供到比特位置j的第2级的加法器46。常规Wallace树假定进位输入(例如,43,44)的数目等于进位输出的数目,当第1级每个比特位置的输入数目相等时,通常是这种情况。
这种Wallace树根据下面表格给出了对于给定加数数目的最小级数
可以看出,特别地、但非专门地对于上述讨论的表达式R=X*Y+Zmod N所需的计算,可以减少对于给定数目的加数所需加法器的数目,特别是当加数的数目在计算中是可变的时。
图5说明了根据本发明的典型“自适应树”或网络70的基本结构的分段或部分,对于每个比特数位置j+1,j和j-1,每个比特位置对应树中的一列。在图5的分段中,在每个比特位置(列)中加数的数目是18。这个基本结构用于所有比特位置,而在每一级和每一比特位置上的进位保留加法器的数目是根据在对应比特位置上所需的加数数目来独立地确定的。图8示出了自适应树70的另一部分,特别地对于分别需要4到12个加数(见图3)的比特位置0到8。因此,自适应树包括一个加法器的树结构,该树结构被建构成最小化或减少所需加法器的数目,其中对于对应输入比特位置存在可变的输入比特数目。
根据下面规则,建立确定自适应树或网络的结构。
在第一级,在给定比特位置中进位保留加法器71的数目被设定为输入加数的数目除以3并且被下舍入为最近整数。例如,对于16个输入,需要5个加法器。对于图5中所说明的18个输入,在位置j处需要6个加法器71。
在每个随后的级上,根据下面表达式确定给定比特位置的加法器的数目(在第n级对于比特位置j的加法器数目)={(在比特位置j来自第n-1级的和数输出数目)+(在比特位置j第n-1级的未连接输入的数目)+(在比特位置j-1第n-1级的进位数)}除以3并且下舍入为最近整数因此,特别地参考图5,在对于第1级上的比特位置j需要18个输入的树70的中间部分,加法器71的数目是6。在第2级,根据上述公式,加法器72的数目是INT{(6+0+6)/3}=4。在第3级,加法器73的数目是INT{(4+0+4)/3}=2。在第4级,加法器74的数目是INT{(2+2+2)/3}=2。在第5级,加法器75的数目是INT{(2+0+2)/3}=1。最后,对于第6级,加法器76的数目是INT{(1+1+1)/3}=1。应该指出的是,对于每个比特位置j+1,j和j-1,对于18个加数,在每个比特位置的第3级节省了一个进位保留加法器。
特别地参考图8,在树70的一端还进行节省,因为来自右边的进位数目(因为不断增加的输入比特数目)小于Wallace树情况。例如,在比特位置7,存在11个加数。常规的Wallace树建议5级。实际上,在这个位置需要分别具有三个、两个、两个和一个加法器的四级。
在一些情况下,有时还可以通过在网络内的策略位置上增加两输入的进位保留加法器,进一步减少级数。首先,根据上述所定义的策略,仅仅使用三输入的进位保留加法器形成网络70,从而实现该设计。为了识别插入两输入的进位保留加法器的策略位置,有必要在每个级(‘Ln’)和比特位置(‘Bj’)中识别到该比特位置Bj和第Ln级的输入数目超过最小数目(例如,2)的位置。在所识别的位置上,两输入的进位保留加法器被插入到高于该位置的一个级(例如,Ln-1或Ln-2等),在该级上存在两个未连接的加数。这有效地将一个输入移动到下一个高位比特位置Bj+1。这进而又可能导致作为结果超过对于下一比特位置允许的输出数目,并且因此必须重复多次该过程直到用于所有比特位置的输入数目不超过所允许的数目。
例如,特别地参考图9,对于更高位比特存在减少数目的输入,导致高于必要层数的层数。每个比特位置的最大输入数目是3,因此一级加法器应该是足够的,在图9中有比特位置58的加法器100的三个输入以及一个来自比特位置57的加法器(未示出)的进位输出101。比特位置59和60的加法器102,103中的每一个分别具有两个输入,并且对于比特位置61具有一个输入。对于比特位置59,具有来自第1级的三个输出(而不是所期望的两个输出)来自比特位置58的一个进位输出和两个未连接的字输入。因为来自于比特位置58到59的进位101以及以同样方式来自于比特位置59到60的进位,所以需要三级(标记为第1层、第2层和第3层)。这给出了两个额外的层。
参考图10,我们可以通过使用额外的两输入两输出加法器110、110(相比于三输入、两输出进位保留加法器‘CSA3’,其被标记为‘CSA2’)来减轻这种情况。这种加法器不减少总的输入数目,但是对于那个比特位置它们确实减少了一个。CSA2加法器110对于下一更高比特位置60将输入数目从2增加到3,因此该问题移到比特位置60而不是比特位置59。然而,也插入CSA2加法器111,该CSA2加法器111将第1级比特位置60的输入数目从3减为2。在比特位置61上输入数目从1到2的随之增加是无关紧要的。
原理上,应该承认,在特定比特位置的较高级上利用两输入加法器策略地处理加数对可以导致进一步减少级数。换句话说,在一个或多个相邻更高位位置中利用两个输入加法器局部增加求和容量可以因此减少在较低级所需的求和容量,最终减少级数而不需额外的三输入加法器。
这个解决方案增加了左边相邻的加数数目,结果这可能有更多的输入。如果是的话,则需要在一级中插入多个两输入加法器直到存在具有足够低输入数目的比特位置,如所示的比特位置61。
在一般意义上,用于插入额外两输入进位保留加法器的过程可以定义为以下步骤。首先,对于给定数目的级,在网络中发现具有比特位置Bj和第Ln级的第一位置,其中在该第一位置上的输出数目大于2(例如是3,而不是2),并且其中在某一较高级上存在两个未连接的加数。其次,就该第一位置来说,在具有相同比特位置Bj而具有高于第一位置的一级(例如,Ln-1、Ln-2等等)中的第二位置上插入两输入的进位保留加法器,在该位置上存在两个未连接的加数。
需要重复该过程多次直到对于所有比特位置的输入数目不超过所允许的数目。
参考图6,自适应树用于非流水线加法器配置80中。在这个设置中,自适应树具有最多六个级81,82...86,用于求和图2的所有加数。加法器使用六级的自适应树求和所有16个乘积P0...P15,Z、反馈进位项Cc(62:0)以及和项Cs(62:0)。该树的输出87被寄存,这样以至于最终进位项Cc′(78:16)的更高位部分和最终和项Cs′(78:16)输出的更高位部分被反馈到反馈线91并且传送到比特位置(62:0)作为下一计算的输入。通过额外的全加器88对进位项Cc′(15:0)以及和项Cs′(15:0)的低位部分求和,并且存储到寄存器89,其是公式B.(c′+s′)+r=x.y+(c′+s′)+z中的项‘r’。
进位项Cc′(15:0)以及和项Cs′(15:0)的低位部分稍后的相加自身生成另一单比特进位项,在图6中标识为c″16。为了包含在全加器88的下一个求和中,这个单比特进位项被反馈,如反馈线90所表示的。
因此,在一般意义上,额外的全加器88和寄存器89举例说明了一个输出级,其将和项和进位项相加,从而提供最终结果的第一字输出,并且保留用作随后级计算输入的进位比特c″16,其中主加法器阵列生成另一高位和项以及进位项,用于由输出级进行相加。
可替换地,进位项c″16可能反馈到在81所示的自适应树的第1级、比特0,因为它具有与Cc′(16)和Cs′(16)相同的权重。这个技术的一个缺点在于,开始随后计算之前自适应树必须等待全加器88的c″16输出。因此,优选地使用全加器88来加c″16项。
在每一个新乘法开始时,像Cc′和Cs′,一样清除进位比特c″16。
在另一设置中,如图7所示的,可以给定自适应树180具有多个级181...187的一个流水线配置。在这个情况下,通常需要向前面级(即,中间级185)而不是第一级181反馈进位Cc′(78:16)以及和Cs′(78:16)的高位部分。因此,在图7所述的特定设置中,不是在开始下一计算之前等待从最后级187输出的最终进位项Cc′(78:16)的高位部分和最终和项Cs′(78:16)的高位部分反馈到第1级,这些项如图所示被加到第5级。尽管这个设置将级数加1到7,但是将延迟从如图6中设置的六级延迟减少为如图7设置的四级延迟。
在这个配置中,在一般意义上反馈线191将加法器电路的较高有效比特输出耦合到加法器电路中间级的相应数目的较低有效比特输入。有必要提供中间级寄存器191,用于暂时保持来自前四级181...184的求和结果。
通过以显著增加硬件为代价,增加了1.5倍的运算速度。在所给出的例子中,需要附加的寄存器275来服务额外级。
自适应树的另一优点存在于流水线版本。在图7中,在前四级设置许多较低位比特数目的加法器,其中需要最多4个级,从而减少寄存器的数目。相反,Wallace树需要这些加法器被放置在较低层中。因此,这大大需要多于4个的寄存器,因为Wallace树对于较低比特数目在较高级没有减少输入数目。
图7的设置还包括结合图6设置的输出级88...90所描述的输出级180...190。
其它实施例预定将落入附加权利要求的范围内。
权利要求
1.一种用于对来自多比特字的多个加数求和的加法器电路(70),包括n输入进位保留加法器电路(71...76)的网络,每个电路具有第一数目的和数输出以及第二数目的进位输出,该加法器电路排列成多列(j),每列对应和数中的一个预定比特位置,并且排列成多个级,第一级接收来自多个字的所选择字的对应比特位置的多个加数,以及较低级中的每一级接收来自如下各项中一个或多个的加数(i)该多个字的其它所选择字的对应比特位置,(ii)来自同一列的较高级加法器电路的和数输出,以及(iii)来自对应较低有效比特位置的一列中的较高级加法器电路的进位输出,其中每列中的n输入加法器的数目根据比特位置而变化。
2.根据权利要求1的电路,其中,每列中n输入加法器的数目特别地适应该列所需的加数数目。
3.根据权利要求1的电路,其中,第一级的每个比特位置中的n输入加法器的数目不超过加数数目除以n的整数部分。
4.根据权利要求1或4的电路,其中,较低级的每个比特位置中的n输入加法器的数目不超过下面各项之和除以n的结果的整数部分(a)在较高级和同一列中的n输入加法器的和数输出的数目,(b)来自较高级和同一列的未连接输入的数目,以及(c)来自较高级和对应较低有效比特位置的列的进位输出的数目。
5.根据权利要求4的电路,其中,未连接输入的数目是中间较高级的数目。
6.根据权利要求4的电路,其中,和数输出的数目是中间较高级的数目。
7.根据权利要求4的电路,其中,进位输出的数目是中间较高级的数目。
8.根据权利要求1的电路,其中,n是3,和数输出的第一数目是2,并且进位输出的第二数目是2。
9.根据权利要求1的电路,还包括用于将多个多比特字中的每一个传送到n输入加法器的网络,以便每个比特位置的加数数目作为比特位置的函数而变化的装置。
10.根据权利要求1或4的电路,还包括放置在网络内的所选择位置的一个或多个(n-1)输入加法器。
11.根据权利要求10的电路,其中,确定所选择的位置以便减少对多个加数求和所需的级数。
12.根据权利要求11的电路,其中,n输入加法器是3输入加法器,(n-1)输入加法器是2输入加法器,其中根据所识别的比特位置和其中输出数目否则会大于2的级确定每个所选择的位置,所选择的位置在高于所识别位置的级上并且在同一比特位置。
13.一种加法器电路(80),包括用于接收多个加数的输入;第一求和装置(81...86),用于对多个加数求和以产生包括高位部分(Cc’(78:16),Cs’(78:16))以及第一和第二低位部分(Cc’(15:0),Cs’(15:0))的输出(87);第一反馈线(91),用于将第一高位部分耦合到所述输入上的低位位置,以用于随后计算;输出级,包括第二求和装置(88),用于对第一和第二低位部分求和以提供第一字输出(89),和反馈寄存器(90,c”16),用于保留来自所述第二求和装置的进位比特并且在随后计算期间将所述进位比特作为输入提供到所述第二求和装置。
14.根据权利要求13的加法器电路,其中,高位部分包括反馈到随后计算的进位项以及和数项。
15.根据权利要求13的加法器电路,其中,进位比特(c”16)被用在通过第一求和装置(81...86)的第一和第二低位部分的随后计算的末端。
16.根据权利要求13的加法器电路(80),用于对来自多比特字的多个加数求和,其中第一求和装置包括进位保留加法器电路(81...86)的网络,每个电路具有多个输入、多个和数输出以及多个进位输出;该加法器电路排列成多个列,每一列对应和数中的一个预定比特位置,并且被排列成多个级(81...86);第一级(81)耦合用于接收来自多个字的所选择字的对应比特位置的多个加数,以及较低级(82...86)耦合用于接收来自如下各项中一个或多个的加数(i)该多个字的其它选择字的对应比特位置,(ii)来自同一列的较高级加法器电路的和输出,以及(iii)来自对应较低有效比特位置的一列的较高级加法器电路的进位输出,第一反馈线(91)将最低级(86)加法器电路的第一组多个较高有效比特输出(87),如所述第一高位部分一样耦合到所述低位位置上加法器电路的所述第一级的相应数量的较低有效比特输入。
17.根据权利要求13或15的加法器电路,其中,高位部分包括高位进位项输出和高位和数项输出,其中第一低位部分包括低位进位项输出,并且第二低位部分包括低位和数项输出。
18.一种用于对来自多比特字的多个加数求和的流水线加法器电路(180),包括第一求和装置(181...187),包括进位保留加法器电路的网络,加法器电路排列成多个列,每一列对应和数中的一预定比特位置并且排列成多个级(181...187),第一级(181)耦合用于接收来自多个字的所选择字的对应比特位置的多个加数,以及较底级耦合用于接收来自如下各项中一个或多个的加数(i)该多个字的其它所选择字的对应比特位置,(ii)来自同一列的较高级加法器电路的和数输出,以及(iii)来自对应较低有效比特位置的一列的较高级加法器电路的进位输出,第一反馈线(91)为了后续计算将最低级(187)加法器电路的第一组多个较高有效比特输出耦合到加法器电路的中间级(185)的相应数量的较低有效比特输入,中间级位于所述第一和最低级加法器电路之间。
19.根据权利要求18的流水线加法器电路,还包括输出级,该输出级包括第二求和装置,用于对第一和第二低位部分求和以提供第一字输出,该第一和第二低位部分分别包括最低级加法器的第二和第三组多个较低有效比特输出;以及反馈寄存器,用于保留来自所述第二求和装置的进位比特和在随后计算期间将所述进位比特作为输入提供到所述第二求和装置。
20.一种基本如参考附图5-11所描述的装置。
全文摘要
一种用于相乘两个长整数的加法器电路采用了加法器网络,用于长整数的连续的字求和以生成中间结果。加数的数目作为比特位置的函数而变化,并且根据预期加数的最大数目设计该加法器的网络以减少网络中加法器的级数。策略地放置的多个额外加法器可以被定位在网络中以进一步减少级数。可以提供输出级将网络的和数以及进位输出相加,并保留最有效的比特,用于网络的随后计算输出。可以配置该网络以便在完成前一个计算之前,该网络可以开始进行后续计算,前一个计算的输出被反馈到网络的中间级,该中间级位于最高(输入)级和最低(输出)级之间。
文档编号G06F7/48GK1829957SQ200480021492
公开日2006年9月6日 申请日期2004年7月22日 优先权日2003年7月26日
发明者G·T·M·哈伯特 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1