使用进位存储加法的蒙哥马利模乘器及其方法

文档序号:6412752阅读:276来源:国知局
专利名称:使用进位存储加法的蒙哥马利模乘器及其方法
技术领域
本申请涉及一种用于数据安全的密码系统,并且特别涉及一种模乘器及其方法。
背景技术
椭圆曲线密码系统(ECC)包括基于整数模乘(modular multiplication)的GF(p)运算和基于多项式模乘的GF(2m)运算。
蒙哥马利(Montgomery)模乘算法是整数模乘,其可以用方程式1来表示R=A*B*r-1mod N,(其中基数r=2n) (1)其中A,B和N分别是乘数、被乘数和模数(modular number),而且每一个具有n位(n≥1)。
Montgomery模乘算法的传统硬件实现如图1所示,其利用多倍模数(multiple modulus)选择器1,布斯(booth)重编码器12,和累加器2。该多倍模数选择器1选择多倍模数(0,M,2M和3M)的值,并且输出所选值给进位传送加法器(CPA)14。为了获得值3M,可以使用附加加法器,其可能会增加硬件大小和/或者降低计算速度。
该累加器2可以包括两个CPA14和11,其每一个都可能增加累加器的传送延迟时间和/或降低计算速度。CPA11接收来自被乘数选择器13的部分乘积值,和该累加器2输出的前一个值P[i]。CPA11将部分乘积和P[i]相加。CPA11的输出被输入给CPA14,以获得i+1次叠代的总累加值,P[i+1],从而获得Montgomery乘法P[i+1]=ABR-1mod M的结果。
多项式模乘可以用方程式2来表示P(x)=A(x)B(x)modG(x)(2)其中A(x)和B(x)是GF(2m)的项(element),而G(x)是次数为m的本原多项式。
A(x),B(x),和G(x)可以用方程式3来表示A(x)=an-1xn-1+an-2xn-2+...+a1x+a0B(x)=bn-1xn-1+bn-2xn-2+...+b1x+b0G(x)=gn-1xn-1+gn-2xn-2+...+g1x+g0(3)通常,单独的乘法器被提供用于整数模乘和多项式模乘。

发明内容
本发明的示例性实施例提供了通过使用编码方案来提高Montgomery模乘速度和/或降低功耗的方法,该编码方案在获得多倍模数值时,可以不需要附加的加法器或存储器。
在本发明的示例性实施例中,进位存储加法器(CSA)可以用来替换累加器中的CPA,从而改善计算速度和传送延迟。
在本发明的示例性实施例中,编码方案可以不需要用于获得多倍模数值的加法器或存储部件(element)。
本发明的示例性实施例提供了乘法器,其用于提高模乘的速度,而不增加硬件大小。
本发明的示例性实施例提供了乘法器,其用于更有效地实现基于基数-N逻辑运算(例如,基数-4)的Montgomery模乘算法的硬件和运算。
在本发明的示例性实施例中,提供了一种基数-4交叉存取Montgomery模乘(“R4IMM”)算法,其基于基数-4逻辑运算,并且使用Montgomery乘法算法。
本发明的示例性实施例提供了乘法器,该乘法器可以选择执行整数模乘和多项式模乘。
根据本发明的示例性实施例的乘法器的逻辑运算方案可以应用于使用公钥密码算法的计算机系统或通信网络,并且可以在便携式集成电路卡中(或智能卡)被实现。
本发明的示例性实施例可以应用于基于较大整数,例如122位或更大的整数的模乘。
通过下文中所提供的详细描述,本发明的实施例在其它领域的适用性会变得清晰。应该可以理解的是,表示本发明的示例性实施例的详细描述和特定示例仅仅起说明的目的,而不意味着限定了本发明的范围。


通过详细描述和附图,将更完全地理解本发明的示例性实施例。
图1说明了使用模数选择器、booth重编码器、和累加器的传统Montgomery模乘算法的硬件结构图;图2说明了根据本发明的示例性实施例的模乘器的一般结构;图3说明了根据本发明的示例性实施例的模数重编码器的编码方案;图4说明了根据本发明的示例性实施例的模数重编码器的实现;图5说明了根据本发明的示例性实施例的booth重编码器的编码方案;图6说明了根据本发明的示例性实施例的booth重编码器的实现;图7说明了结合使用进位存储加法(CSA)和进位传送加法(CPA)的本发明的示例性实施例;图8说明了完全压缩器(full compressor)的示例性实施例;图9说明了简化压缩器(reduced compressor)的示例性实施例;图10说明了根据本发明的示例性实施例的、包括图9所示的简化压缩器的累加器;图11说明了结合使用进位存储加法(CSA)和进位传送加法(CPA)的本发明的示例性实施例;图12说明了根据本发明的示例性实施例的第k位多路复用器组;图13说明了根据本发明的示例性实施例的更详细的电路图,其中图11所示的多路复用器组被包括在图10所示的累加器中;图14说明了根据本发明的另一个示例性实施例的乘法器;图15说明了根据本发明的示例性实施例的、图14中所示的booth重编码器的编码方案;图16说明了电路的实施例,其中根据图15的示例性编码方案构造了booth重编码器;图17说明了根据本发明的示例性实施例的乘法器,其可以选择执行整数模乘和多项式模乘;图18说明了根据本发明的示例性实施例的编码方案,其用于获得解析值选择器的bIA;图19说明了根据本发明的示例性实施例的模数选择器的编码方案;图20说明了根据本发明的示例性实施例的、图17所示的累加器的更详细的电路结构;和图21说明了根据本发明的示例性实施例的第k位多路复用器组。
具体实施例方式
以下对示例性实施例的描述实际上仅仅是说明性的,而决不是旨在限定本发明,其应用或使用。
在图2中说明了根据本发明的示例性实施例的模乘器。参考图2,乘法器1000可以包括存储在模数寄存器(M_REG)100中的模数(M),存储在被乘数寄存器(A_REG)101中的被乘数(A),存储在乘数寄存器(B_REG)102中的乘数(B),模数重编码器110,booth重编码器140,用于辅助多倍模数(multiplemodulus)MMI计算的多路复用器120,用于辅助部分乘积PPI计算的多路复用器130,以及用于辅助模乘计算的累加器170。所述累加器170接收所述部分乘积PPI,多倍模数MMI和补偿字信号CW,以输出所述Montgomery乘法器的结果。
在本发明的示例性实施例中,所述模数M是正整数,并且具有n位(M[n-1:0]),所述被乘数A是负整数或正整数,并且具有n+1位(A[n:0]),一位用作符号位,而乘数B具有偶数个位。如果n是偶数,B具有n+2位,两位是符号位。如果n是奇数,B具有n+1位,一位是符号位。在每一个时钟周期里所述乘数B可以向右平移两位。将所述乘数B的两个最低有效位b1和b0和位BR(其中BR是来自前一周期的位b1)提供给所述booth重编码器140。
模数寄存器(M_REG)100提供所述模数M和M,其中M是M的补码。同样的,被乘数寄存器(A_REG)101提供所述被乘数A和A,其中A是A的补码,而乘数寄存器(B_REG)102提供乘数B。
在示例性实施例中,乘法器1000在迭代过程(iterative process)中执行模乘。所述模数重编码器110和所述多路复用器120被用来选择多倍模数(MMI)值。为了选择MMI值,所述模数重编码器110接收来自所述累加器170的迭代数据。在示例性实施例中,所述迭代数据SPPI[1:0]基于在累加器170的和数(SI[1:0])和进位(CI[1:0])寄存器中的值的两个最低有效位(LSB),部分乘积值(PPI[1:0])的两个LSB,以及部分乘积否定指示信号NEG_PP(partial productnegation indicating signal)。可以在两位加法器181中组合所述和数SI[1:0]和进位CI[1:0],来形成组合信号。在两位加法器182中可以组合所述组合信号和PPI[1:0]和NEG_PP,以形成SPPI[1:0]。模数重编码器110可以进一步接收模数M[1]的最低有效位M[1]。模数重编码器110可以使用SPPI[1:0]和M[1],来输出多个用于确定多倍模数MMI值的选择的信号。对于本发明的示例性实施例的上述讨论并不是旨在限定值的位大小。例如,所述SPPI可以多于两位,而可以类似地改变示例性实施例的其它部件。
所述模数重编码器110可以输出多个复合信号(multiple signal)。在示例性实施例中,所述模数重编码器110向多路复用器130输出选择信号SEL_MM[1:0],以便选择2M,M,0和M之一。多路复用器120可以接收模数M和选择信号SEL_MM[1:0],来输出MMI。MMI可以被输入给累加器170。可以在半加器47中组合多倍模数否定指示信号NEG_MM和部分乘积否定指示信号NEG_PP,来获得补偿字信号CW。所述补偿字信号CW可以被输入给累加器250。
所述模数否定指示信号NEG_MM可以用来指示是否应该按位反相(bit-inverted)MMI的所选值。同样的,模数否定指示信号NEG_PP也可以用来指示是否应该按位反相所选的部分乘积PPI。附加的加法器和/或存储设备导致硬件大小和/或计算延迟的增加,这影响计算速度和/或功耗。如图3中所示的编码方案使用位反相(bit inversion)和位移位来获得值MMI,而不需要附加的加法器或存储设备。
图3说明了根据本发明的示例性实施例的编码方案。虽然图3示出了三个到所述模数重编码器110的输入M[1]和SPPI[1:0],但是根据设计标准,本发明可以具有各种输入和输出。多倍模数MMI的典型值是(0,M,2M,3M)。如上所述,值3M可能需要附加的加法器或存储部件,来将1M加上2M来获得值3M。附加的加法器和/或存储部件对硬件大小和/或计算延迟起作用,其影响计算速度和能量使用。在图3中所示的编码方案利用位反相和位移位来获得MMI的值,而不需要附加的加法器或存储部件。
模数重编码器110可以输入M[1],模数M的第二最低有效位,以及在示例性实施例中,还可以输入SPPI[1:0],SPPI的两个LSB。模数重编码器110输出模数选择信号SEL_MM[1:0]。SEL_MM[1:0]用于选择四个可能的多倍模数数(0,M,M,2M)之一。信号NEG_MM指示是否使用位反相以获得M。所得的、所选择的多倍模数值MMI被发送给累加器250。对于本发明的示例性实施例,上述讨论并不是旨在限定值的位大小。象本实施例的其它部件一样,SPPI可以有多于两位。
模数重编码器110可以接收模数M的第二LSB M[1]和SPPI的两位LSB。模数重编码器110可以输出模数选择信号SEL_MM[1:0]。所选的模数值MMI可以被传送到累加器170。对于本发明的示例性实施例,上述讨论并不是旨在限定值的位大小。例如,SPP1可以具有两位或多于两位,并且可以类似地改变示例性实施例的其它部件。
图4说明了根据本发明的示例性实施例的模数重编码器110的示例性实现。虽然模数重编码器110的示例性实施例包括反相器301-303和NAND门311-317,但是本领域普通技术人员可以实现模数重编码器110的许多其它实现。
用于减少硬件大小,提高计算速度,和/或降低功耗的类似技术可以用于图2、图5和图6中所示的booth重编码器140。所述乘法器1000可以向累加器170输入模数MMI和部分乘积PPI,从而通过迭代过程来执行模乘。
booth重编码器140和累加器130可以被用来选择0、A、2A、A和2A,其是要提供给累加器170的部分乘积PPI的值。图5说明了根据本发明的示例性实施例的booth重编码器140的编码方案。所述booth重编码器140可以接收乘数的两个LSB B[1]和B
以及迭代值B[1]的前一值B[R],来输出部分乘积选择信号SEL_PP[1:0],部分乘积允许信号EN_PP,和部分乘积否定指示信号NEG_PP。虽然在图5中说明了输入给booth重编码器140的三个输入B[1],B
和B[R],但是根据设计规则,本发明可以具有各种输入和输出。
为了选择PPI值,booth重编码器140向多路复用器130输出部分乘积选择信号SEL_PP[1:0],以便选择四个值2A,A,A和2A之一。图6说明了booth重编码器140的示例性实施例。虽然图6的booth重编码器140的示例性实现包括反相器321-323和NAND门331-340,但是本领域普通技术人员可以实现模数重编码器110的许多其它实现。
回到图2,多路复用器130可以接收被乘数A的值和信号SEL_PP[1:0],以给AND门150提供输出。所述AND门150可以接收来自多路复用器130的输入和来自booth重编码器140的部分乘积允许信号EN_PP。所述AND门150可以向累加器170输出部分乘积PPI的所选值。当信号EN_PP具有零值时,AND门150向累加器170输出PPI的零值。部分乘积否定信号NEG_PP还可以被输入给半加器160。NEG_PP的值1可以指示应该对部分乘积PPI执行位反相,以获得输入到累加器170的新PPI值的值2A或A之一。
除了PPI和MMI值,补偿字信号CW也可以从半加器160输入给累加器170。所述累加器170可以将部分乘积PPI,模数MMI,和补偿字信号CW输入给压缩器171,以在进位存储加法器(CSA)和进位传送加法器(CPA)中使用。图1所示的加法器使用CPA,其导致较低的运算速度。CSA可以用来降低传送延迟,降低功耗,提高计算速度,和/或提高运算速度。
本发明的示例性实施例可以使用CSA和CPA的组合,来提高计算速度和/或降低功耗。在本发明的示例性实施例中,在最终迭代过程中使用CPA(例如,一个CPA,但也可以使用多个),而先前的迭代使用CSA(例如,一个CPA,但也可以使用多个)。图7和图11说明了结合使用CSA和CPA的两个示例性实施例。
在图7中示出了根据本发明的示例性累加器170a。所述累加器170a可以包括连续n+2个5-2压缩器。所述5-2压缩器可以被分为完全压缩器(例如,201-202)和简化压缩器(例如,203-205),其中n是模数值M的位长度。所述累加器170a可以分别在和数寄存器(S_REG)173和进位寄存器(C_REG)172中存储和数(S)和进位(C)值。寄存器S_REG173和C_REG172的输出可以被输入给进位传送加法器174,该进位传送加法器174可以将冗余数转换为范数(normal number),并在最终寄存器175中存储所转换的数。
在本发明的示例性实施例中,到所述累加器170a的输入是补偿字CW[1:0],多倍模数值MMI和部分乘积值PPI。前两个全压缩器201和202可以接收补偿字CW[1:0],以及模数MMI[1:0]和部分乘积PPI[1:0]。其它简化压缩器203-204等可以使用多倍模数值MMI[n+1:2]和部分乘积值PPI[n+1:2]的其它位。最后的压缩器205(第n+2个压缩器)可以防止溢出。在示例性实施例中,第一压缩器201是没有第三全加器的全压缩器。
所述全压缩器201和所述简化压缩器202的示例性配置分别如图8和图9所示。每一个压缩器通过使用当前值(I)和其它输入,来获得下一个值(I+1)。图8说明了根据本发明的示例性实施例的全压缩器201。
所述全压缩器201可以具有多个输入。在示例性实施例中,全压缩器201具有5个输入,从来自高一位的压缩器的下一进位字位值中所获得的当前进位字位值(CI),从来自高两位的压缩器的下一和数字位值中所获得的当前和数字位值(SI),补偿字值(CW),部分乘积值(PPI),以及多倍模数值(MMI)。在所述当前压缩器中,所输入的当前进位字位值可以具有索引“I”,而其它高位压缩器输出下一进位字位值CI+1[k+1],其中k表示当前的“第k个”。下一进位字位值CI+1[k+1]可以被输入给所述进位寄存器172,而所述进位寄存器172可以将当前进位字位值CI输出给所述第k个压缩器。通过向和数寄存器173输入来自k+2压缩器的下一和数字位值SI+1[k+2],可以获得所述当前和数字位值SI[k]。全压缩器201可以使用所述值,以分别获得所述特定位k的下一进位字位和下一和数字位值CI+1[k]和SI+1[k]。这些值通过它们各自的进位和和数寄存器172和173。
如前所述,所述进位和和数寄存器172和173可以分别向低位压缩器提供输入。所述下一进位字位(CI+1[k])和下一和数字位(SI+1[k])值可以用方程式4联系起来(2CI+1[k]+2CO1[k]+2CO2[k]+SI+1[k])=(CI[k]+SI[k])+PPI[k]+MMI[k]+CW[k]+CI1[k]+CI2[k](4)其中,如果k>1,CW[k]不是输入。
在示例性实施例中,所述全压缩器201包括三个全加器。第一全加器211接收值CI,SI和CW,以及输出第一全加器进位(FCO1)和第一全加器和数(FSO1)。第二全加器20输出进位FSO1和第二全加器和数FSO2。所述第二全加器进位FOC2起第一输出进位CO2的作用,该CO2将是下一高位压缩器(k+1)的输入CI2[k+1]。第三全加器630接收来自低位压缩器(k-1)的所述第二全加器和数FSO2和CI1[k-1]和CI2[k-1],以输出第三全加器进位FCO3和第三全加器和数FSO3。第三全加器进位FCO3起下一进位字位值CI+1的作用,该CI+1用作输入给低位压缩器(k-1)的进位CI。所述第三全加器和数FSO3起下一和数字SI+1的作用,该SI+1用作输入给低位压缩器(k-2)的输入S1。与位0相对应的第一全压缩器201不输出下一进位或和数字,使得第一全压缩器201不需要第一全加器。类似地,与位1相对应的第二全压缩器202不输出下一和数字位。
所述补偿字CW[1:0]可以有两位,并且可以要求用于每个位的两个压缩器。所述两个压缩器201和202可以是接收多个值的全压缩器。在示例性实施例中,压缩器201和202接收5个值。高位压缩器[2:n+2]可以是接收比压缩器201和202的值少的值的简化压缩器。图9中说明的简化压缩器用半加器替换了第一全加器。因此,在简化压缩器中的所述半加器211接收值CI和SI,并输出第一半加器进位(HCO1)和第一半加器和数(HSO1)。所述第一半加器进位HCO1起要提供给下一高位压缩器(k+1)的次级(secondary)第一输入CI1[k+1]的第一输出进位CO1的作用。第二全加器212接收第一半加器和数HSO1,部分乘积位值PPI[k],以及与所述压缩器的位相关的多倍模数位值MMI[k]。所述第二全加器212输出第二全加器进位(FCO2)和第二全加器和数(FSO2)。所述第二全加器进位FCO2起第二输出进位CO2和下一高位压缩器(k+1)的第二输入CI2[k+1]的作用。所述第三全加器213输出第三全加器进位(FSO3)和第三全加器和数(FSO3)。所述第三全加器进位FCO3起下一进位字位CI+1的作用,并且在经过进位寄存器540之后起低位压缩器(k-1)的输入CI的作用。所述第三全加器和数FSO3起下一和数字位SI+1的作用,并且在经过和数寄存器173之后起低位压缩器(k-2)的输入SI的作用。图10说明了包括图9中所说明的简化压缩器的累加器171a。
所述累加器171a可以是全压缩器和简化压缩器的串行链接。所述全压缩器的数目依赖于多倍模数值(MMI)和部分乘积值(PPI)的输入位大小。两个LSB压缩器可以是使用补偿字(CW)作为输入的全压缩器。第一位压缩器201可以分别输出变成下一高位(第二位)压缩器的次级输入CI1[1]和CI2[1]的进位CO1
和CO2
。这样延续到最高位压缩器(n+2),其不输出进位输出(CO1[n+2]和CO2[n+2])。最高位压缩器可以用来防止溢出,而它的次级输入可以从它自己的下一进位字位和下一和数字位值中获得。
每一个压缩器的下一进位字位值和下一和数字位值可以分别存储在进位和和数寄存器172和173中。最终结果可以以分离的形式(冗余数)来产生,一部分存储在和数寄存器172中,而另一部分存储在进位寄存器173中。为了获得最终单个字结果SN[n:0],存储在和数寄存器172中的值和存储在进位寄存器173中的值可以在进位传送加法器174中相加,并且所述最终单个字结果SN[n:0]被存储在最终寄存器175中。不象使用CPA模式的传统系统,根据本发明的示例性实施例的系统使用如图7中所示的CSA模式。所述CSA压缩器可以具有三个延迟路径,所述每一个延迟路径与每一个加法器相关。相反,在传统累加器中,每一位都有延迟路径。
因此,在图7中说明的示例性实施例中,所有压缩器都有三个延迟路径,而不考虑位大小n。在传统系统中,存在“n”个延迟路径。因此,示例性配置可以提高模乘的计算速度。例如,1024位的乘法器,传统系统包括具有1024个延迟(全加器路径)的累加器,而本发明的示例性实施例只有与单个全压缩器或简化压缩器相关的路径延迟,例如3。因此,在此例子中,根据本发明的示例性实施例的乘法器可以比传统系统快300倍。
为了更有效地实现基于基数N(例如,基数4)逻辑运算的Montgomery模乘算法的硬件和运算,本发明的示例性实施例提供了乘法器。
在本发明的示例性实施例中,提供了基数-4交叉存取Montgomery乘法算法(“R4IMM”)(radix-4 interleaved Montogomery multiplication algorithm),其基于基数4逻辑运算,并且使用Montgomery乘法算法。
可以如下定义R4IMM的示例性参数·M是模数,而且是大于2的正整数,并且具有奇数值(例如3,5等);·M’是符合条件表达式(-M*M’)mod 4=1的整数;·n是指示M的位长度的值,且是正整数(例如,8);·N是指示M的数字长度的值,且是正整数,其中n是N的两倍(n=2N),如果n是8,N就是4;·R是正整数,其中R=2n=22N,其中如果n是8,R就是256;·R-1是R的模反相乘数(modular inverse multiplier),且是正整数,其中(R*R-1)mod M=1;·A是被乘数,且是整数,其中0≤A≤M;以及·B是乘数,且是整数,其中0≤B≤M,其中B=QI=0N-1bIAI,]]>bI∈{0,1,2,3},且bI为2位。
R4IMM算法可以被定义如下S0=0
for I=0 to(N-1)qI=((SI+bIA)mod 4)*M’)mod 4SI+1=(SI+bIA+qIM)/4endforif(SN≥M)SN=SN-M在R4IMM算法中,I表示数字重复运算的索引或次数,而经过算法的全部乘法的结果可以表示为SN=A*B*R-1(mod M)。全部乘法SN的范围可以是0≤SN≤M。系数qI可以表示要被相加的M的数目,以便‘SI+bIA+qIM’的两个LSB变成“00”。在剩余数系统(residue number system,RNS)中,通过将任意数加到整数倍的模数M上而获得的数等于原始数。因此,数与模数的倍数qIM(之后称为MMI),即整数倍的模数M相加等于原始数。如果‘SI+bIA+qIM’的两个LSB变成“00”,而且然后被基数值4除(即右移两位),则有效数字(significant digit number)被保留,因此没有信息丢失。
为了用硬件实现R4IMM算法,可以获得所述部分乘积值PPI和所述模数的倍数MMI。由于单位乘数bI和模数qI可以有两位,所以可以将PPI和MMI设置为以下四种情况(其中,bI∈{0,1,2,3},而qI∈{0,1,2,3})的四个可能值,如方程式5所示bIA=PPI∈{0,A,2A,3A}qIM=MMI∈{0,M,2M,3M} (5)然而,如果如方程式5所示设置PPI和MMI,那么在计算值3A和3M时,就必须获得A或M的1位位移值,以及原始值。因此,可以使用用于计算值的独立加法器,或者在预先计算值并将其存储在存储器中之后,在需要时,可以找回这些值。然而,这不是必需的硬件。进一步,由于该硬件可以仅用来获得值3A和3M,所以处理速度还可能下降。
本发明的示例性实施例可以减少获得部分乘积PPI和模数的倍数MMI所需的硬件。
本发明的其它示例性实施例包括在累加器中的CSA和CPA模式之间切换的多种组合。图11说明了根据本发明的另一个示例性实施例的累加器170b,其中结合使用多路复用器MXGn+1-MXG0和压缩器,从而在任何希望的时候就可以在CPA和CSA模式之间切换。在这样的配置中,进位传送加法器174不将冗余数转换为范数。图10的累加器170b可以有选择地以CSA或CPA模式进行运算,并因此输出也可以是范数格式。可以去除CPA174来减少所需硬件的数量。
多路复用器MXGn+1-MXG0可以控制压缩器中全加器之间的电连接。前两位压缩器301和302不需要传送下一进位字位值CI+1[k]来获得由低位压缩器301使用的当前进位字位值CI[k-1]。除此以外,前两位压缩器301和302可以分别与如图11中所示的压缩器201和202相类似地进行运算。下一进位字位值CI+1[k]可以经过下一高位压缩器[k+1],从而被输入给高位压缩器的多路复用器组。
图12说明了根据本发明的示例性实施例的第k位多路复用器组400,而图13说明了图11中所示的、包括在图10所示的累加器170b中的多路复用器组400的更详细的电路图。
计算模式(使用CSA或使用CPA)可以由切换信号SW来控制。在本发明的示例性实施例中,第k位多路复用器400被设置在图9中的简化压缩器700的第二加法器212和第三加法器213之间。因此,输入到多路复用器410的第一输入401可以是来自加法器212的FSO2。第一多路复用器410的第二输入402可以是来自第k-1位压缩器的当前进位字位值(CI[k-1])。当前进位字位值可以从第(k-1)位压缩器的下一进位字位值CI+1[k-1]中获得。第二多路复用器411可以接收两个值。两个值中的一个403可以是来自第k-1位压缩器的第一输出进位值CO1[k-1],而第二个404可以是来自第k位压缩器的当前和数字位值SI[k]。当前和数字位值可以通过允许下一和数字位值SI+1[k]经过和数寄存器173来获得。第三多路复用器412的两个输入405和406可以是来自第k-1位压缩器的第二输出进位值CO2[k-1],和来自第(k-1)位压缩器的下一进位字位值CI+1[k1]。
所述切换信号SW可以确定将各个多路复用器410,411和412的两个输入中的哪个传送给第三全加器213。依赖于传送了哪个输入,可以选择进位存储加法或进位传送加法。如果切换信号SW的值是零(“0”),切换压缩器可以以进位存储加法模式进行运算。如果值是(“1”),可以顺序连接压缩器的底部全加器,并可以以进位传送加法模式进行运算。如上所述,全加器213可以输出下一进位字位值和下一和数字位值。
可以在N次迭代过程中计算进位与和数字,其中如果n是偶数,N就是(n+2)/2,而如果n是奇数,N就是(n+1)/2。在当前迭代周期中所输出的进位和和数值可以与先前迭代周期中的值相加,并被存储在进位寄存器172和和数寄存器173中。最终结果SN[n:0]可以通过相加进位和和数来获得,该进位与和数根据切换值SW的不同而被分别存储在寄存器172和173中。
由于多路复用器组400的大小可以小于CPA加法器174和寄存器175的大小,本发明的示例性实施例,诸如图10中所说明的一个多路复用器,可以减小硬件的大小。
图14说明了根据本发明的另一个示例性实施例的乘法器2000。乘法器2000包括三个多路复用器131,132和133,而不是图2中所说明的乘法器1000的一个多路复用器130。如果分离所述多路复用器,则图2的booth重编码器140就可以用booth重编码器190来替换,该booth重编码器190用于产生要提供给多路复用器131,132和133的信号SFT_PP和NEG_PP。
图15说明了图14中所说明的booth重编码器190的示例性编码方案,而图16说明了用于执行图15的编码方案的booth重编码器190的示例性实现。虽然booth重编码器190的示例性实现包括反相器401-403和NAND门411-417,本领域的普通技术人员之一可以实现booth重编码器190的许多其它实现。
图17说明了根据本发明的另一个示例性实施例的乘法器3000,其可以选择执行整数模乘和多项式模乘。图17的乘法器3000可以根据选择信号SEL_FLD选择执行整数模乘和多项式模乘。在示例性实施例中,当选择信号SEL_FLD是零(“0”)时,所述乘法器3000执行整数模乘,而当选择信号SEL_FLD是(“1”)时,执行多项式模乘。由于乘法器3000的整数模乘部分与图2中所说明的乘法器1000(或者图14中所说明的乘法器2000)的部分类似,现在仅对多项式模乘进行描述。在图17和图2中,相似的标号指示相似的部件。
当执行使用Montgomery模乘算法的多项式模乘时,所述乘法结果可以用S(x)I+1=S(x)I+bIA(x)+qIM(x)表示。类似于上述整数乘法,可以设置qI以便S(x)I+bIA(x)+qIM(x)的两个LSB变成“00”。进一步,bI∈{0,1,2,3}和bIA∈{0,A,2A,3A};由于执行2A+A来获得3A,所以bIA∈{0,A,2A,3A}。
在每一周期里,存储在寄存器102中的乘数(B)可以移两位。乘数B的两个LSB b1和b0被提供给解析值选择器530。解析值选择器530可以接收两个LSB b1和b0,并可以输出信号SEL_A1[1:0],SEL_A2和SEL_A3,从而PPI[n+1:0]变成0,A或2A,和AI[2+1:0]变成0或A。图18中说明了一种根据本发明的示例性实施例的、用于获得解析值选择器530的bIA的编码方案。
为了选择PPI[n+1:0],解析值选择器530可以向多路复用器520输出用于选择三个值0,A和2A之一的选择信号SEL_A1[1:0]。多路复用器520可以在多项式模乘模式(即,当SEL_FLD为“1”时)下将选择信号SEL_Ai[1:0]输出给多路复用器130。多路复用器130可以接收被乘数(A)的值和选择信号SEL_A[1:0],并且向AND门150提供输出。
多路复用器550可以向AND门150输出来自解析值选择器530的选择信号SEL_A2。AND门150可以接收来自多路复用器130的输入和来自多路复用器550的选择信号SEL_A2,并且将第一解析值PPI[n+1:0]输出给累加器580。
为了选择AI[n+1:0],解析值选择器530可以向多路复用器540输出选择信号SEL_A3,从而选择0或A之一。多路复用器540接收0,乘数A的值以及选择信号SEL_A3,并且输出第二解析值AI[n+1:0]。多路复用器540的两个LSB_AI[1:0]被输入给多路复用器560和加法器591,而其它位AI[n+1:2]可以被输入给累加器580。
在多项式模乘模式下,多路复用器560将来自多路复用器540的两个LSBAI[1:0]输出作为CW[1:0]。多路复用器560的输出CW[1:0]可以被输入给累加器580。
加法器591可以对第一解析值PPI[n+1:0]的两个LSB PPI[1:0]与第二解析值AI[n+1:0]的两个LSB AI[1:0]求和,并且可以将求和结果输出给加法器592,其中PP1[1:0]+AI[1:0]=bIA(x)[1:0]。
加法器592可以求加法器591的输出与存储在和数寄存器583中的值的两个LSB SI[1:0]的和,并且可以输出求和结果给模数选择器570。
模数选择器570可以选择模数MM1[n+1:0],从而(S(x)I+bIA(x)+qIM(x))的两个LSB变成“00”。在Montgomery算法中,模数的LSB MMI
总是一(“1”)。因此,可以根据(S(x)I+bIA(x))和M[1]来确定qI。
在图19中说明了模数选择器570的编码方案。
为了选择MMI[n+1:0],模数选择器570可以向多路复用器510输出用于选择三个值0,M和2M之一的选择信号SEL_M1[1:0]。多路复用器510可以在多项式模乘模式(即,SEL_FLD为“1”时)下将选择信号SEL_M1[1:0]输出给多路复用器120。多路复用器120可以接收模数M的值和选择信号SEL_M1[1:0],并且向累加器580提供输出MMI[n+1:0]。
在图20中说明了累加器580的更详细的电路配置。与图13中所说明的累加器170b类似,累加器580包括连续n+2个5-2压缩器,其可分为全压缩器和简化压缩器,其中n是模数M的位长度。累加器580可以包括图13中所说明的累加器170b的部件,以及多路复用器组620和多路复用器640和650。多路复用器组620被放置在多路复用器组610和全加器630之间。
在整数模乘模式(SEL_FLD=“0”)下,来自多路复用器组610的输出可以经由多路复用器组620被输入给全加器630,而来自全加器630的进位输出可以被传送给低位压缩器的进位输入。累加器580的整数模乘模式可以具有与图13中所说明的累加器170b相同的操作。
图21说明了根据本发明的示例性实施例的第k位多路复用器组610和620。类似于图12中所说明的多路复用器组400,多路复用器组610可以包括第一到第三多路复用器611,612和613,并且接收第一到第六输入601-606。多路复用器组400和610可以接收相同的信号,并且进行类似的操作,因此,将不更详细地描述多路复用器组610。
在多项式模乘模式期间可以提供所述多路复用器组620,以对来自多路复用器540的第二解析值AI[n+1:2]和第一解析值PPI[n+1:2]求和。第二解析值AI[n+1:2]的两个LSB可以通过多路复用器560输出作为CW[1:0],以将其输入给累加器581。由此,由累加器580将CW[1:0]与第一解析值的所述两个LSB PPI[1:0]相加。所述多路复用器组620可以包括第四和第五多路复用器621和622。第四多路复用器621可以接收来自第二多路复用器612的输出和来自多路复用器540的第二解析值AI[k]。第五多路复用器622可以接收来自第三多路复用器613的输出和“0”。第四和第五多路复用器621和622可以在整数模乘模式(SEL_FLD=“0”)下分别输出来自第二和第三多路复用器的输入,并且输出AI[k]和“0”。多路复用器的输出I12和I13可以被提供给全加器630。
回到图20,在多项式模乘模式(SEL_FLD=“1”)期间,第k多路复用器640和650可以向第k压缩器的进位输入选择提供第二解析值MI[k]。这可以被执行,以对第一解析值MMI[n+1:0]和第二解析值MI[n+1:0]求和,从而获得qIM(x)。
多路复用器650响应来自模数选择器570的选择信号SEL_M2,可以将模数M[k]或“0”作为第二解析值MI[k]输出给多路复用器640。多路复用器640可以在整数模乘模式(SEL_FLD=“0”)下向低位压缩器的进位位提供进位寄存器582的第k进位位,并且可以在多项式模乘模式(SEL_FLD=“1”)下向其提供来自多路复用器650的第二解析值MI[k]。
在图17中说明了示例性乘法器3000。为了执行整数模乘和多项式模乘二者,所述乘法器3000可以包括图2中所说明的乘法器的部件和几个附加部件。
对本发明的描述实际上仅仅是示例性的,所以未脱离本发明要旨的变化确定为在本发明的示例性实施例的范围内。这样的变化不被看作是脱离了本发明的精神和范围。例如,这里所公开的多路复用器可以具有多种比例值(ratiovalue)。同样的,在本发明的示例性实施例中所描述的多路复用器和其它部件可以包括单个多路复用器(部件)或者具有可变输入的单独的多路复用器(部件)。同样的,控制信号可以被切换,从而值0和1表示相反的结果。在这里,本发明的示例性实施例的进一步变化对于本领域普通技术人员来说是显而易见的,这样的变化确定为在本发明的保护范围内。
进一步,虽然几个示例性乘法器1000、2000、3000已经使用示例性部件和/或特征和/或变化进行了描述,如本领域普通技术人员将了解的一样,在这里所述的每一个示例性部件和/或特征和/或变化可以被单独,以任意组合,或在任意乘法器中使用。
对本发明的示例性实施例的描述实际上仅仅是示例性的,所以未脱离本发明要旨的变化确定为在本发明的示例性实施例的范围内。这样的变化不被看作是脱离了本发明的精神和范围。
权利要求
1.一种多倍模数选择器,包括模数重编码器,用于接收n位的模数M、前一和数、以及当前部分乘积,以产生选择信号;以及多路复用器,用于接收4个输入-M,0,M和2M,并根据选择信号选择输入中的一个。
2.如权利要求1所述的多倍模数选择器,其中输入-M是通过使模数M反相而获得的。
3.如权利要求1所述的多倍模数选择器,其中输入2M是通过移位模数M而获得的。
4.如权利要求1所述的多倍模数选择器,其中模数M被存储在寄存器中。
5.如权利要求1所述的多倍模数选择器,其中模数重编码器进一步产生输入给累加器的多倍模数否定指示信号NEG_MM。
6.如权利要求1所述的多倍模数选择器,其中n位的模数M包括第二最低有效位M[1]和前一和数和当前部分乘积的和数SPPI[1:0]。
7.如权利要求1所述的多倍模数选择器,其中选择信号包括两位SEL_MM[1:0]。
8.一种累加器,包括以进位存储模式进行运算的多个压缩器,每一个压缩器都接收多倍模数、部分乘积、相应的当前和数来产生相应的下一和数以及相应的下一进位;和数寄存器,用于接收来自各个压缩器的相应的下一和数,以输出相应的更新后的当前和数;以及进位寄存器,用于接收来自各个压缩器的相应的下一进位,以输出相应的更新后的当前进位。
9.如权利要求8所述的累加器,其中和数寄存器和进位寄存器是分离的寄存器。
10.如权利要求8所述的累加器,其中多倍模数是由模数产生的。
11.如权利要求10所述的累加器,其中n是模数的位长度,而压缩器包括n+3个压缩器。
12.如权利要求11所述的累加器,其中模数被存储在n位寄存器中。
13.如权利要求8所述的累加器,其中部分乘积是由被乘数和乘数获得的。
14.如权利要求13所述的累加器,其中所述被乘数的位长度是n+1。
15.如权利要求14所述的累加器,其中所述被乘数被存储在(n+1)位寄存器中。
16.如权利要求13所述的累加器,其中,如果n是偶数,那么乘数的位长度是n+2,而如果n是奇数,那么其位长度是n+1。
17.如权利要求16所述的累加器,其中,如果n是偶数,那么乘数被存储在(n+2)位的寄存器中,而如果n是奇数,那么乘数被存储在(n+1)位的寄存器中。
18.如权利要求8所述的累加器,其中每一个压缩器是5:2压缩器。
19.如权利要求8所述的累加器,其中第一组压缩器还接收补偿字,以产生相应的下一和数和相应的下一进位。
20.如权利要求19所述的累加器,其中该第一组压缩器是完全压缩器。
21.如权利要求19所述的累加器,其中第二组压缩器不接收补偿字。
22.如权利要求21所述的累加器,其中该第二组的多个压缩器是简化压缩器。
23.如权利要求8中所述的累加器,其中部分乘积和多倍模数每一个都是n+2位。
24.如权利要求19所述的累加器,其中补偿字是2位。
25.如权利要求19所述的累加器,其中完全压缩器包括三个全加器。
26.如权利要求22所述的累加器,其中简化压缩器包括一个半加器和两个全加器。
27.如权利要求8所述的累加器,进一步包括进位传送加法器,用于接收最后更新的当前和数和最后更新的当前进位,以输出最终和数;以及最终寄存器,用于存储该最终和数。
28.如权利要求8所述的累加器,其中压缩器以进位存储模式和进位传送模式两种模式进行运算。
29.如权利要求9所述的累加器,其中进位存储模式和进位传送模式由控制信号来确定。
30.如权利要求28所述的累加器,其中第一组压缩器还接收补偿字,以产生相应的下一和数和相应的下一进位。
31.如权利要求30所述的累加器,其中该第一组压缩器是完全压缩器。
32.如权利要求30所述的累加器,其中第二组压缩器不接收该补偿字。
33.如权利要求32所述的累加器,其中该第二组压缩器是简化压缩器。
34.如权利要求33所述的累加器,其中每一个简化压缩器都包括多路复用器组,用于将该简化压缩器重新配置成以所述进位存储模式和进位传送模式两种模式进行运算。
35.如权利要求34所述的累加器,其中每一个多路复用器组包括三个2:1多路复用器。
36.如权利要求33所述的累加器,其中每一个简化压缩器都包括多路复用器组,用于将可重新配置的该简化压缩器重新配置成根据控制信号或者以所述进位存储模式或者以进位传送模式进行运算。
37.如权利要求36所述的累加器,其中该进位存储模式包括从当前压缩器的中间全加器发送到当前压缩器的底部全加器的第一信号,从较低压缩器的顶部加法器发送到当前压缩器的底部全加器的第二信号,以及从较低压缩器的中间全加器发送到当前压缩器的底部全加器的第三信号。
38.如权利要求36所述的累加器,其中该进位传送模式包括从较低压缩器的底部全加器发送到较高压缩器的多路复用器组的第一信号,和从较高压缩器的多路复用器组发送到较高压缩器的底部全加器的第二信号。
39.如权利要求33所述的累加器,其中该简化压缩器的每一个都包括多路复用器组,用于接收当前压缩器的中间全加器的和数,较低压缩器的相应的更新后的当前进位,较低压缩器的第一和第二输出,当前压缩器的更新后的当前和数,以及较低压缩器的相应的下一进位,以输出第一到第三输出。
40.如权利要求31所述的累加器,其中该完全压缩器包括三个全加器。
41.如权利要求33所述的累加器,其中该简化压缩器包括一个半加器,两个全加器和三个2:1多路复用器。
42.一种Montgomery乘法器,包括多倍模数选择器,用于将-M,0,M和2M之一选择作为多倍模数,其中,M是n位的模数;booth重编码器,用来获得部分乘积值;以及累加器,用于累加第二值,以获得Montgomery乘法器的结果。
43.如权利要求42所述的乘法器,进一步包括模数寄存器,用于在其中存储模数值;被乘数寄存器,用于在其中存储被乘数值;乘数寄存器,用于存储乘数值;AND门,用于组合由被乘数值和乘数值产生的两个值;以及两个加法器,用于组合来自累加器和AND门的值,以输出组合值,其中将该组合值输入到多倍模数选择器。
44.一种产生多倍模数的方法,包括接收模数;以及接收前一和数和当前部分乘积,其中该模数、前一和数、以及当前部分乘积用于产生多倍模数值-M,0,M,和2M。
45.如权利要求44所述的方法,进一步包括仅接收该模数的一部分,该部分是该模数的第二最低有效位。
46.如权利要求44所述的方法,进一步包括仅接收前一和数以及当前部分乘积的一部分,所述部分是该前一和数以及当前部分乘积的两个最低有效位。
47.如权利要求44所述的方法,进一步产生选择信号,用于选择多倍模数值之一。
48.如权利要求47所述的方法,进一步产生多倍模数否定指示信号,用于反相所选值。
49.一种产生部分乘积的方法,包括接收乘数;以及产生部分乘积选择信号,部分乘积允许信号,部分乘积否定指示信号,以产生至少一个部分乘积值。
50.如权利要求49所述的方法,进一步包括将该乘数移位两位。
51.一种累加方法,包括接收多个多倍模数、部分乘积、相应的当前和数、以及相应的当前进位,以产生相应的下一和数和下一进位;产生更新后的当前和数和更新后的当前进位;重复该接收和产生步骤,直到使用乘法器操作数产生了以冗余表示法表示的结果;以及执行进位传送加法,以产生以标准表示法表示的结果。
52.如权利要求51所述的累加方法,其中该重复步骤是由进位存储加法器执行的进位存储加法。
53.如权利要求51所述的累加方法,其中执行进位传送加法的步骤是由进位传送加法器执行的。
54.如权利要求53所述的累加方法,进一步包括产生切换信号。
55.如权利要求54所述的累加方法,进一步包括使用该切换信号,在进位存储加法和进位传送加法之间进行切换。
56.一种执行基数2NMontgomery乘法的方法,其中N>1,包括接收被乘数、模数和乘数;对与被乘数、模数和乘数相关的多个输入执行进位存储加法,以产生以冗余表示法表示的结果;以及执行进位传送加法,以产生以标准表示法表示的结果。
57.如权利要求56所述的方法,其中进位存储加法由进位存储加法器执行,而进位传送加法由进位传送加法器执行。
58.如权利要求56所述的方法,其中该进位存储加法和该进位传送加法由累加器执行。
59.如权利要求56所述的方法,进一步包括产生切换信号。
60.如权利要求59所述的方法,进一步包括使用该切换信号,在进位存储模式和进位传送模式之间进行切换。
61.一种执行基数2NMontgomery乘法的方法,其中N>1,包括接收被乘数、模数和乘数;以进位存储模式对与被乘数、模数和乘数相关的多个输入进行累加,来产生以冗余表示法表示的结果;以及以进位传送模式对以冗余表示法表示的结果进行转换,以产生以标准表示法表示的结果。
62.一种多倍模数选择器,包括模数重编码器,用于接收n位的模数M,前一和数和当前部分乘积,以产生第一选择信号;模数选择器,用于接收n位的模数M,该前一和数,该当前部分乘积,以及被乘数,以产生第二选择信号;以及多路复用器,用于接收输入-M,0,M,和2M,并在整数模乘模式下基于该第一选择信号选择所述输入之一,以及在多项式模乘模式下基于该第二选择信号选择所述输入之一。
63.如权利要求62所述的多倍模数选择器,其中该输入-M是通过反相模数M而获得的。
64.如权利要求62所述的多倍模数选择器,其中该输入2M是通过移位模数M而获得的。
65.如权利要求62所述的多倍模数选择器,其中将该模数M存储在寄存器中。
66.如权利要求62所述的多倍模数选择器,其中该模数重编码器进一步产生输入到累加器的多倍模数否定指示信号(NEG_MM)。
67.如权利要求62所述的多倍模数选择器,其中n位的模数M包括第二最低有效位M[1]和该前一和数与当前部分乘积的和数SPPI[1:0]。
68.如权利要求62所述的多倍模数选择器,其中该第一选择信号包括两位SEL_MM[1:0]。
69.如权利要求62所述的多倍模数选择器,其中该模数选择器进一步产生输入到累加器的多倍模数累加指示信号SEL_M2。
70.如权利要求62所述的多倍模数选择器,其中该被乘数包括两位SSPPI[1:0]。
71.如权利要求62所述的多倍模数选择器,其中该第二选择信号包括两位SEL_M1[1:0]。
72.一种Montgomery乘法器,包括多倍模数选择器,用于在整数模乘模式下将-M,0,M和2M之一选择作为多倍模数,而在多项式模乘模式下将0,M和2M之一选择作为多倍模数,其中M是n位的模数,以输出多倍模数累加指示信号SEL_M2;booth重编码器,用于提供第一值,用于获得部分乘积值;以及累加器,用于对第二值求和,以获得Montgomery乘法器的结果,其中,所述累加器在多项式模乘模式下,基于该多倍模数累加指示信号SEL_M2,对模数M和第二值求和。
73.如权利要求72所述的Montgomery乘法器,进一步包括模数寄存器,用于在其中存储模数值;被乘数寄存器,用于在其中存储被乘数值;乘数寄存器,用于在其中存储乘数值;AND门,用于组合该被乘数值和该乘数值;以及两个加法器,用于组合来自该累加器和该AND门的值,以输出组合值,其中将该组合值输入到该多倍模数选择器。
74.如权利要求72所述的Montgomery乘法器,其中该多倍模数选择器包括模数重编码器,用于接收n位的模数M、前一和数和当前部分乘积,来产生第一选择信号;模数选择器,用于接收该n位的模数M、该前一和数、该当前部分乘积、以及被乘数,来产生第二选择信号;以及多路复用器,用于接收输入-M,0,M,和2M,并在整数模乘模式下根据该第一选择信号选择该输入之一,以及在多项式模乘模式下根据该第二选择信号选择输入0,M和2M之一。
75.如权利要求72所述的Montgomery乘法器,其中该booth重编码器包括第一选择器,用于接收乘数来产生第三选择信号SEL_PP[1:0];第二选择器,用于接收该乘数来产生第四选择信号SEL_A1[1:0];以及多路复用器,用于接收输入-M,0,M,和2M,并在整数模乘模式下根据该第三选择信号选择该输入之一,以及在多项式模乘模式下根据该第四选择信号选择输入0,A和2A之一。
76.一种用于接收n位的模数M、前一和数、当前部分乘积和被乘数来产生第二选择信号的模数选择器,包括模数选择器单元,用于接收该n位的模数M、该前一和数、该当前部分乘积、以及该被乘数,来产生选择信号,其用于选择输入给多路复用器的三个值0,M,和2M之一和输入给累加器的模数累加指示信号。
77.一种booth重编码器,包括第一选择器,用于接收乘数来产生第一选择信号SEL_PP[1:0];第二选择器,用于接收该乘数来产生第二选择信号SEL_A1[1:0];以及多路复用器,用于接收第一输入-M,0,M,和2M,并且在整数模乘模式下根据该第一选择信号选择该第一输入之一,以及接收第二输入0,A和2A,并在多项式模乘模式下根据该第二选择信号选择该第二输入之一。
全文摘要
提供了一种在Montgomery模乘模块的模乘运算中降低功耗和/或提高计算速度的方法。编码方案降低了对用于获得多倍模数值的加法器或存储部件的需求,并且进位存储加法与进位传送加法的使用提高了乘法模块的计算速度。
文档编号G06F7/52GK1570848SQ20041005521
公开日2005年1月26日 申请日期2004年4月25日 优先权日2003年4月25日
发明者孙熙宽, 尹重喆 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1