CN1605059A - 蒙哥马利乘法器中的流水线内核 - Google Patents

蒙哥马利乘法器中的流水线内核 Download PDF

Info

Publication number
CN1605059A
CN1605059A CN02824949.6A CN02824949A CN1605059A CN 1605059 A CN1605059 A CN 1605059A CN 02824949 A CN02824949 A CN 02824949A CN 1605059 A CN1605059 A CN 1605059A
Authority
CN
China
Prior art keywords
time slot
multiplication
calculate
multiplier
product
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN02824949.6A
Other languages
English (en)
Other versions
CN100382011C (zh
Inventor
G·T·M·胡伯特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Vlsi Technology Co ltd
Original Assignee
Koninklijke Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1605059A publication Critical patent/CN1605059A/zh
Application granted granted Critical
Publication of CN100382011C publication Critical patent/CN100382011C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/728Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves

Abstract

一种安排用于以素数为模将第一长整数实体与第二长整数实体进行相乘的乘法器设备。特别地,它包括一种流水线乘法器内核,同时以蒙哥马利方式执行全部的乘法运算。

Description

蒙哥马利乘法器中的流水线内核
本发明涉及一种乘法器设备,用于以素数为模将第一长整数实体乘以第二长整数实体,该乘法器设备包括一种流水线乘法器内核,并被安排用于以蒙哥马利方式执行所有的乘法运算。
发明背景
以素数为模的长整数乘法是一种基本和重复的运算,这些运算用于所谓的公共密钥系统和各种其它的应用。为了有效地使用这种应用,应该将乘法的执行时间最小化。因此,本发明尤其涉及一种如权利要求1前序部分所述的设备。为了上述目的,已经提出了通过使用一种乘法和归约运算(reduction operation)的组合的各种方法和设备。特别是,所述结果的最高有效部分实际上常常用来作用于所述归约。然而,本发明已经意识到这种最高有效部分的展开将实质上延迟所有的运算,尤其当现有硬件应该以最大可能高的工作周期使用时,这时由于这种乘法的次序必须以一种连续的方式来执行。
发明概述
因此,本发明的一个目的是提供一种如前序部分所述的乘法器设备,其中与现有技术相比,使用实际结果的最低有效部分作用于归约,同时提高实际使用所述硬件的时间片,以便能够处理这种基本的和长序列的乘法。
因此,现在根据本发明的其中一个方面,其特征在于根据权利要求1的特征部分。实际上,根据本发明的组合使其更容易保持流水线被充满,因此在叠加运算中缩短平均计算时间。所述乘法器设备可用于GF(p)以及GF(2n)中的运算,其中p为素数。
在独立权利要求中阐述了本发明的其它有利方面,这些权利要求限定了本发明的基本组件应用的有利扩展,或者应用领域。
附图说明
参照公开的优选实施例,并特别参照所附附图,在下文将更加详细地讨论本发明的这些和其它方面以及优点,附图示出了:
图1,流水线乘法器的方框图;
图2,用于长整数乘法X*Y+W的方框图;
图3,用于长整数乘法Xi.Y+W的方框图;
图4,用于伽罗瓦域(Galois field)GF(2n)的流水线乘法器;
图5,无进位传送加法器的结构;
图6,图示中间进位和求和量的图。
优选实施例详述
1.流水线乘法器
流水线乘法器被设计成在每个时钟周期接收两个将被相乘的新数字。两者的乘积在许多级中计算,并当所有级已经运算过时准备好该乘积。例如,对于32*32位的乘法,级数可以是17(16个用于乘法和1个用于最后的加法)。每个时钟周期,计算下一个乘积,但是仅在17个时钟周期后准备好结果。所以在同一个时钟周期至多同时处理17个乘积。
对于一种高效的流水线乘法器,已经设计出长整数计算从而保持流水线被充满。一种必须避免的情况是新的计算依靠正在进行的计算结果。在这种情况必须插入等待状态。这就是为什么设计蒙哥马利乘法器用于不同于类似RSA计算的椭圆曲线计算的原因。
紧接着所述乘法,乘法器执行两步加法P=X.Y+A+B。其中一步加法两个长整数乘法所必需的,其中该乘法必须被分成许多基本的32*32位乘法。
流水线乘法器能够被设计用于不同的位数,例如8*8或16*16。
2.蒙哥马利乘法
蒙哥马利乘法计算乘积P=x.y.R-1 mod p。这里,x和y是要被相乘的输入,p是乘法的模数。此外,R=2n,其中n是该系统的位数,例如1024用于类似RSA的系统,和160用于椭圆曲线。作为一个实例选择一种具有17级的32*32位乘法器。
3.利用基数B的蒙哥马利乘法
这种方法适用于很大的值Nw以及RSA。
·B=232,假定32位的处理器字长。
·R=BNw,Nw是长整数的32位字的数目。
·a[i]是数字a的第i个32位字。
·T[0]是临时变量T的最低有效32位部分。
预先存储的常量:
·m’=-(p-1)mod B(32位宽)
·素数p
输入:a mod p,b mod p
输出:蒙哥马利乘积:MonPro(a,b)=a.b.R-1mod p
运算如下:
T=0
For i=0 to Nw-1
  {T=T+a[i].b;                   //Nw乘法
    Ui=T[0].m’mod B;         //1乘法
    T=(T+Ui.p)/B                  //Nw乘法
  }
if T>p then T=T-p
4.对于512位操作数的计算
在我们的实例中,a和b由16个32位字组成。首先从i=0开始计算T=T+a[i].b。
第一个计算在时隙0开始,最后一个计算在时隙15开始。在时隙16增加一个等待周期。
在时隙17准备好第一个结果T[0]。然后我们从这个时隙开始计算乘积Ui=T[0].m’,该乘积在时隙34输出。
下一系列的计算是T=(T+Ui.p)/B,其在时隙34开始,并在时隙49结束。其第一个结果在时隙51输出,但因为该结果总是为零所以将其丢弃。第二个结果是在时隙52输出。
从时隙52开始,重新开始循环。当前一轮结果准备好时,它立刻使用前一轮的结果。
这里有16轮,所以时隙总数是16*52=832。
在时隙848准备好完全的结果。
5.对于1024位操作数的计算
首先从i=0开始计算T=T+a[i].b。
我们以计算最初的17个乘积开始。
第一个结果T[0]在时隙17准备好。在该时隙中我们计算乘积Ui=T[0].m’,该乘积在时隙34输出.从时隙18直到32,我们计算T=T+a[i].b的剩余的乘积。
下一系列计算(T+Ui.p)/B从时隙34开始并在时隙65结束。当在时隙66开始新一轮计算时,准备好第一个结果。
这里有32轮,所以时隙总数是32*66=2112。
在时隙2128准备好完全的结果。
6.对于2048位操作数的计算
首先从i=0开始计算T=T+a’[i].b’。
我们以计算最初的17个乘积开始。
第一个结果T[0]在时隙17准备好。在该时隙中我们计算乘积Ui=T[0].m’,该乘积在时隙34输出。从时隙18到Nw,我们计算剩余的乘积。
下一系列计算(T+Ui.p)/B从时隙Nw开始,并在时隙2Nw-1结束。
当在时隙2Nw开始新一轮计算时,准备好第一个结果。
这里有Nw轮,所以时隙总数是Nw.(2Nw+1)。
在时隙Nw.(2Nw+1)+17(对于2048位,等于8273)准备好完全的结果。
7.利用基数R的蒙哥马利乘法
该算法适用于小值Nw,也适用于椭圆曲线。
·B=232(假定为32位的处理器字长)
·R=BNw(Nw是长整数的32位字的数目)
预先存储的常量:
·m’=-(p-1)mod R(m’是Nw32位宽)
·素数p
输入:a mod p,b mod p
输出:MonPro(a,b)=a.b.R-1 mod p
T=a.b
U=T.m’mod R
T’=T+U.p
T=T/R
if T>p then T=T-p
对于GF(2n)上的系统,所有加法都是按模2计算。这里,m’是多项式B=α32倒数。
8.计算方法
首先,计算T=a.b的完全积。这需要Nw 2次乘法。然后准备好T的第一个结果,因此我们在此之后就可以立刻开始。对于乘积T.m′,我们仅需要计算比R更小的乘积。
·在时隙17准备好乘积T[0].T[0]*(m[0]..m[Nw-1])的计算在时隙Nw 2开始,并需要Nw次乘法。
·在时隙17+Nw准备好乘积T[1].T[1]*(m[0]..m[Nw-2])的计算在时隙Nw 2+Nw开始,并需要Nw-1次乘法。
·在时隙17+2Nw准备好乘积T[2].T[2]*(m[0]..m[Nw-3])的计算在时隙Nw 2+2Nw-1开始,并需要Nw-2次乘法,等等。
·在时隙17+j.Nw准备好乘积T[j].T[j]*(m[0]..m[Nw-j-1])的计算在时隙Nw 2+(2Nw-j+1).j/2开始,并需要Nw-j次乘法,等等。
·在时隙17+(Nw-1).Nw准备好乘积T[Nw-1].T[Nw-1]*m[0]的计算在时隙Nw 2+(Nw+2).(Nw-1)/2开始,并需要1次乘法。
可以证明,对于Nw≥5,在新的乘积T[j]*m[0]开始之前,总是准备好乘积T[j]。因此,不需要等待周期。
·U[0]在时隙Nw 2+17准备好。从该时刻起,计算乘积U.p。
·最后一次乘法在时隙Nw 2+(Nw+2).(Nw-1)/2+1开始。对于Nw=5,最后一次乘法在在时隙40开始,并且U[0]在时隙42开始。因此这里就要求有两个等待周期。对于更大的值Nw,就不需要有等待周期。
·U.p的计算占用Nw 2个时隙。
·对于Nw>5,时隙总数是2.Nw 2+(Nw+2).(Nw-1)/2+1
·对于Nw=5,时隙总数是67个时隙。
·完全的结果在时隙2.Nw 2+(Nw+2).(Nw-1)/2+18准备好。
9.改进的布斯(BOOTH)算法
改进的布斯算法设计为用被乘数的两位来作部分乘法。这使部分乘法的数量减少了一半。
首先重新编码乘数Y,其中y’i可以具有值-2,-1,0,+1和+2(有符号数字符号)。
y’i=-2.yi+1+yi+yi-1(仅为i的偶数值定义)
Y=y′30.230+y′28.228+…+y′0.20
yi’=-2.yi+1+yi+yi-1
yn=0
p = Σ i = 1 , odd n - 1 y ′ i . 2 i . X = Σ i = 1 , odd n - 1 ( - 2 y i + 1 + y i + y i - 1 ) . 2 i . X =
= - X Σ i = 1 , odd n - 1 y i + 1 . 2 i + 1 + X . Σ i = 1 , odd n - 1 y i . 2 i + 2 X . Σ i = 1 , odd n - 1 y i - 1 . 2 i - 1 =
= - X Σ i = 2 , even n y i . 2 i + X . Σ i = 1 , odd n - 1 y i . 2 i + 2 X . Σ i = 0 n - 2 y i . 2 i =
= - X Σ i = 0 , even n - 2 y i . 2 i + X . Σ i = 1 , odd n - 1 y i . 2 i + 2 X . Σ i = 0 n - 2 y i . 2 i + y 0 . X =
= X . Σ i = 0 n - 1 y i . 2 i + y 0 . X = X . Y + y 0 . X
为了得到正确的结果,我们必须从乘积减去y0.X。
10.并行进行的减法
X=x31.231+x30.230+…x1.21+x0.20
Y=y31.231+y30.230+…y1.21+y0.20
W=w31.231+w30.230+…w1.21+w0.20
Z=X.Y+W。
在这方面,图1是流水线乘法器实施例的方框图。这里,具有星号的圆圈执行乘法运算,但具有加号标记的圆圈执行加法运算,诸如一种包括进位存储运算的加法运算。各种方框将临时保留那里指示的量。为了更清楚起见,各种相互连接示出了一道将被传送的位的位排列顺序。在右侧,一列方框用于引入必要的修正项。
左侧部分计算Z=X.Y+W+y0.X。这个末项是该算法的人为项,右侧部分与其它计算并行减去该末项。这就是本发明。
以下实施例公开了乘法是怎样建立的,但这种实现可以在细节上有所偏差。
在第一个时隙计算Z0=X.Y(1∶0)+W0并将它存储在寄存器Z0中。°X被传送到第二X寄存器,且Y(31∶2)被传送到第二Y寄存器。
在第二个时隙计算Z1=X.Y(3∶2)+Z0并将它存储在寄存器Z1中。此外,X被传送到第三X寄存器,且Y(31∶2)被传送到第三Y寄存器。
而且计算-y0*X(1∶0),并把它加到Z(1∶0),等等。
在第16个时隙计算Z15=X.Y(31∶30)+Z15,并将它存储在寄存器Z15中。
此外还计算-y0*X(31∶30),并把它加到Z(31∶30)。
现在,Z15包含了64位。
在最后的时隙(#17),较高的32位传送到Z16和Z15,并且两个修正位被加到前面的Z16值,然后输出。
当进行长整数乘法时,与X0,X1,…,XNw-1组合输入Nw次Yi。在长整数计算开始时,Z16设置为0。仅当X0.Yi+W达到输出Z时,然后才加Z16=0。
11.对于GF(2n)的蒙哥马利乘法
椭圆曲线计算也可以通过域GF(2n)来定义。
在这个域中所有的加法(这里通过“+”来表示)都是模2计算(异或)。
这个域中的多项式具有最多n-1次的幂。
所以当n=32时,X和Y的多项式定义如下(所有系数都是0或1):
X=x3131+x3030+…x11+x00
Y=y3131+y3030+…y11+y00
还有一个不可约的多项式p,被定义为:
p=pnn+pn-1n-1+…p11+P0α0
乘积P=X.Y mod p通过以下式子来计算:
(xn-1n-1+xn-2n-2+…x1.c1+x00).(yn-1n-1+yn-2n-2+…y11+y00)mod p。
然后由多项式p来除乘积X.Y,余数就是结果。余数的幂总是小于p的幂。
X,Y和p都可用长整数来表示。
约化乘积的计算可以通过正常乘积计算来进行,并具有这样的修改,内部加法利用模2计算进行。然后除了模2加以及保留余数以外,照常规进行除法。
然而,还能够更快地进行蒙哥马利乘法。
12.蒙哥马利乘法
蒙哥马利乘法把许多素数(不可约多项式)加到(部分)乘积中,这样乘积被一个诸如α32或α160的适当因数R可除尽。对于给定多项式的二进制表示,可以考虑用232或2160代替。这里,m’定义为m’=p-1 modR,其中p-1定义为p.p-1 mod R=1
现在,通过以下修改能够应用相同的算法:
·乘法器中的加法运算是模2的。
·省略最后的减法。
这种方案的进一步细节。除了上述的以外,各种其它细节、实施例、和说明将在下面作为补充的形式提出。
13.长整数乘法器和加法器
定义:
·X=xNw-1.BNw-1+…+x2.B2+x1.B1+x0.B0
·Y=yNw-1.BNw-1+…+y2.B2+y1.B1+y0.B0
·Pi=piNw.BNw-1+…+pi2.B2+pi1.B1+pi0.B0
·P=p2Nw-1.B2Nw-1+…+p2.B2+p1.B1+p0.B0
·B=232
·m=Nw-1
长整数乘法涉及很多两个32位字的乘法。该实施例使用一种流水线32位乘法器(参见图1和4),这种乘法器在每个时隙接收三个新32位操作数(X*Y+Z)。这种乘法器速度非常快。然而,这种乘法的输出仅在17个时隙后准备好。所以最多可以有17个乘法同时计算。可是,当想要与正在进行相乘的结果相乘的时候,必须等待将该结果被准备好。这样能够引入等待周期,因此它将降低性能。
Z=X.Y+W
    Z=X.{Y0.B0+Y1.B1+..YmBm}+W
    Z,X和W具有大小为Nw-1的32位字。Yi具有32位宽。
    W=W0.B0+W1.B1+..WmBm}
中间结果Wi=Wi1.B0+Wi2.B1+..Wi.m+1Bm
·计算P0=X.Y0+W。结果以P0=W0.B+Z0分解。
·计算P1=X.Y1+W0。结果以P1=W1.B+Z1分解。
·计算P2=X.Y2+W1。结果以P2=W2.B+Z2分解。
·…
·计算Pm=X.Ym+Wm-1
·对于j≥m,Zj=Pm.j
所以我们需要一个函数来计算Pi=X.Yi+Wi
在这方面,图2是一个用于计算(X*Y+W)的方案的方框图。
Pi=X.Yi+W
这个计算是前述计算的一部分。
X和W具有大小为m=(Nw-1)的32位字。
Yi具有32位宽。
·计算S1=x0.yi+w0。S1以Z1.B+P0分解。
·计算S2=x1.yi+w1+Z1。S2以Z2.B+P1分解,等等。
·计算Sm=Xm.yi+Wm+Zm-1。Sm以Pm+1.B+Pm分解。
在图3中已经示出了相关的实施例,该图是一个用于根据(X*Y+W)执行长整数乘法的方案的方框图。
利用图1的流水线乘法器计算S=x.y+w+z,已在上文讨论。
·为了在GF(2n)上计算,加法是模2计算的。所以没有进位。
14.流水线乘法器
X=x31.231+x30.230+…x1.21+x0.20
Y=y31.231+y30.230+…y1.21+y0.20
W=w31.231+w30.230+…w1.21+w0.20
Z=X.Y+W.
左侧部分计算Z=X.Y+W+y0.X。末项是所用算法的人为项。右侧部分减去所述末项。
下面给出了一种想法,即乘法是怎样建立的,但实现可能在细节上有所偏差。
在第一个时隙中,计算Z0=X.Y(1∶0)+W0并把它存储在寄存器Z0中。X被传送到第二X寄存器并且Y(31∶2)被传送到第二Y寄存器。
在第二个时隙中,计算Z1=X.Y(3∶2)+Z0并把它存储在寄存器Z1中。X被传送到第三X寄存器并且Y(31∶2)被传送到第三Y寄存器。
此外,计算-y0*X(1∶0)并把它加到Z(1∶0)。
在第16个时隙中,计算Z15=X.Y(31∶30)+Z15并把它存储在寄存器Z15中。
此外,计算-y0*X(31∶30)并把它加到Z(31∶30)。现在Z15包括64位。
在最后一个时隙(#17)中,较高的32位被传送到Z16和Z15中,并且两个修正位被加到输出的Z16的前值。
进行如在第13段中描述的长整数乘法,然后与X0,X1,...,XNW-1组合输入Nw次Yi。当X0.Yi+W达到输出Z时,那么就代替加Z16的内容而不加任何内容。Z16具有第13段中Zi的函数:从一个乘法传送到下一个乘法的那个部分。
15.改进的布斯算法
首先重新编码乘法器Y,其中y’i仅可以具有值-2,-1,0,+1和+2(有符号的数字表示)。
y′i=-2.yi+1+yi+yi-1(仅对i的偶数值定义)
Y=y′30.230+y′28.228+…+y′0.20
例如当y=29dec=011101bin时,那么y′=(2 11)sd=2.24-1.22+1=29dec,其中 1表示-1。
使用的这些公式是在以前段落中公开的有关改进布斯算法的内容(第9段)。
为了得到正确的结果,我们必须从乘积y0.X中减去。
用2相乘就是左移1位被乘数。
部分乘积被以一种2根值表示法编码,其中每个乘积都可以具有值-1,0或+1。
现在以16级来计算乘积。在每级中计算y′i.X.2i的部分乘积,并把它相加到在前结果中,例如当x=53dec=110101bin和y=29(y’=(2 11)sd)时,那么
对于32位操作数,要进行15个加法。在一个普通全加器中,这花费非常长的时间,因为进位必须波动通过。为了防止这种现象,我们将使用一种无进位传送加法器。在这方面,图5示例了一种无进位传送加法器的方案。
16.冗余二进制计数法
加法器的被加数和加数都使用一种冗余二进制计数法,这种方法也是一种有有符号数字表示法。具有一个固定根2和一个数字组{ 1,0,1},其中 1表示-1。一个n位数字的冗余二进制整数Y具有值yn-12n-1+yn-22n-2+…+y1.21+y0.20,其中yi可以具有值-1,0或1。
在冗余二进制计数法中可以有多种方式表示一个整数,例如[0101]SD2=[011 1]SD2=[1 101]SD2=[1 11 1]SD2=[10 11]SD2=5dec。只有‘0’具有唯一的表示:[00…0]。
从标准二进制计数法变换到冗余二进制计数法是简单的:两者都是一样的。
从冗余二进制计数法变换到标准二进制计数法通过以下减法来进行:Xbin=X+-X-,其中X+是通过用‘0’替代所有的‘ 1’而从Xsd2中得到的,X-是通过用‘0’替代所有的‘1’和用‘ 1’替代所有的‘1’而从Xsd2中得到的。
例如,当X=[10 1  1]SD2=5dec时,那么X+=[1000]bin=8dec和X-=[0011]bin=3dec
通过用‘ 1’替代所有的‘1’和用‘1’替代所有的‘ 1’来对一个变量求反。例如,当X=[10 1  1]SD2=5dec,那么-X=[ 1011]SD2=-5dec
我们将一个变量编码如下(参见表1):
X 输出x+x- 输入x+x-
0 00 00
1 10 1x
1 01 x1
表1对于GF(p)以冗余二进制计数法对X进行编码(x=任意)。从来不使用组合11。
因此,当输入X并且X=1时,比条件x+=1充分。同样,当X= 1时,也比x-=1充分。
17.无进位传送加法器
所选择的表示法是,在下一个数字吸收可能的进位,并不影响下一个进位。因此,这种加法器的速度比32位全加器快得多。
至于32*32位乘法器,有16个加法(包括在前乘法的上面最高有效字)。然后仅在末端,所述冗余二进制计数法转换成标准二进制计数法。这种转换不是自由传送的。
加法以(在概念上)2步来进行。首先计算中间和si以及中间进位ci。在下一步,两者都转换成最终和(sumi)。该中间进位可以最可能取决于在前和当前的数字值,但不取决于再早一些的值。
ci和si满足以下等式:2ci+si=xi+yi。而且ci-1和si这样选择,使得两者既不是1也不是1。
在这方面,图6所示为生成中间进位和求和量的图。
和Si=ci+si-1将不再生成一个新的进位:
·类型1,3,4和6:ci-1+si=ci-1
·类型2a,5a:ci-11,也就是0或1,所以ci-1+si1或0。
·类型2b,5b:ci-1≠1,也就是0或 1,所以ci-1+si是1或是0。
这通过以下实例说明:
X          [10 10 100 1]sd2=87des
Y          [1 1100 11 1]sd2=101des
           ---------+
S           0100 1110
C           1 100010 1
             ---------+
Sum          1 11000 100=188des
18.转换为标准二进制计数法
在最后一级,结果被转换成标准二进制计数法。X=X+-X-,其中X+由所有xi +构成,以及X-由所有的xi -构成。
因为xi +和xi -决不会同时为1,所以我们不需要全减器。因此,我们尝试一种不同的方法。
我们将从右边到左边移去所有的 1
当不从右边借位时:
·当下一个数字是‘1’时,那么就保存该数字并且没有到左边的借位。
·当下一个数字是‘0’时,那么就保存该数字并且没有到左边的借位。
·当下一个数字是‘ 1’时,那么就用‘1’替代该‘ 1’并且有到左边的一个借位。
当有来自右边的借位时:
·当下一个数字是‘1’时,那么就用‘0’替代该‘1’,并且没有到左边的借位。
·当下一个数字是‘0’时,那么就用‘1’替代该‘0’,并且有到左边的一个借位。
·当下一个数字是‘ 1’时,那么就用‘0’替代该‘ 1’并且有到左边的一个借位。
然而,当最左的数字是‘1’和最右的数字是‘ 1’时,并且它们之间的所有数字是‘0’时(10…0 1),这将产生一个非常大的延迟。
为了减小该延迟,我们把32位分成8组,每组4位。
·当最左的非零数字是‘ 1’时,那么产生一个到下一个左边组的借位。
·当该组中有至少一个‘1’时,从右边组来的一个借位不传送到下一个组。
19.对于GF(2N)的乘法器逻辑
X=x3131+x3030+…x11+x00
Y=y3131+y3030+…y11+y00
W=w3131+w3030+…w11+w00
对于这些向量的表示,在上述公式中可以看到用‘2’来代替‘α’。
Z=X.YW。
Z = Σ i = 0 31 Σ j = 0 31 x i . y j α i + j
Zi=(y2iy2i+1.α).X+Zi
在GF(2n)中没有等式用于布斯编码。
在第一个时隙中(参见图4),计算X.Y(1∶0)W并把它存储在寄存器Z0中。X被传送到第二X寄存器以及Y(31∶2)被传送到第二Y寄存器(Y)。
在第二个时隙中,计算X.Y(3∶2)Z0并把它存储在寄存器Z0中。X被传送到第二X寄存器以及Y(31∶4)被传送到第三Y寄存器(Y)。
在第16个时隙中,计算Z15=X.Y(31∶30)Z15并把它存储在寄存器Z15中。
现在Z15包括64位。
在最后一个时隙(#17)中,较高32位被传送到Z16以及Z15被加到输出的在前Z16值。
进行如在第13段中描述的长整数乘法,那么与X0,X1,...,XNW-1组合输入Nw次Yi。当X0.YiW达到输出Z时,那么代替加Z16的内容而不加任何内容。Z16具有第13段中Zi的函数:从一个乘法传送到下一个乘法的那个部分。
特别是,图4示例了一种用于在GF2n中运算的流水线乘法器实施例的方案。
加法
加法是2变量的exor。没有进位。
编码
因为我们想与GF(p)的逻辑组合所述逻辑,所以我们将使用以下冗余编码。这里X=x+^x-,其中^表示一种逻辑“OR”功能。
X 输出x+x- 输入x+x-
0 00 0x
1 10 1x
1 10 X1
表2用于对GF(2n)以冗余二进制计数法编码X(x=任意)
20.用于GF(p)和GF(2n)的逻辑
两种乘法器级都将使用以下结构zj=ai.xj-1bi.xj
GF(p)
GFp=1
y′i=-2.yi+1+yi+yi-1(仅用于奇数i,参见以下表3)
yi+1 yi yi-1 y′i ai bi signi
0 0 0 0 0 0 1
0 0 1 1 0 1 1
0 1 0 1 0 1 1
0 1 1 2 1 0 1
1 0 0 -2 1 0 0
1 0 1 -1 0 1 0
1 1 0 -1 0 1 0
1 1 1 0 0 0 0
              表3用于GF(p)的编码
GF(2n)
GFp=0
ai=yi-1
bi=yi
zj +=zj=ai.xj-1bi.xj
zi -=0
组合
bi=yiGFp.yi-1
zj +=(ai.xj-1bi.xj).yi+1
z j - = ( a i . x j - 1 ⊕ b i . x j ) . y i + 1 ‾ . GFp
21.无传送进位加法
类型 xi yi xi-1 yi-1 f2 f5 h 中间进位ci 中间和si
1 1x 1x xx xx 0 0 x 10 00
2a 1x00 001x x0x0 x0x0 11 00 11 10 01
2b 1x1x0000 00001x1x x1xxx1xx xxx1xxx1 1111 0000 0000 00 10
3 00 00 xx xx 0 0 x 00 00
4 1xx1 x11x xxxx xxxx 00 00 xx 00 00
5a 00x1 x100 x0x0 x0x0 00 11 11 00 01
5b 0000x1x1 x1x10000 x1xxx1xx xxx1xxx1 0000 1111 0000 01 10
6 x1 x1 Xx xx 0 0 x 01 00
                               表4中间进位及和
表4与利用根据表1编码的图6类似。
h = x i - 1 ‾ . y i - 1 - ‾
si +=(f2∧f5). h
si -=(f2∧f5).h
Si=ci-1+si.
ci-1 +ci-1 - si +si - Si +Si -
00 00 00
00 1x 10
00 x1 01
1x 00 10
1x 1x -
1x x1 00
x1 00 01
x1 1x 00
x1 X1 -
              表5总和Si
22.GF(2n)
Si=xiyi
看来如果我们取消GF(p)系统中的进位,根据GF(p)规则生成的Si则产生正确的答案,Si根据表2被编码。
组合逻辑
Figure A0282494900192
h = x i - 1 ‾ . y i - 1 ‾
Figure A0282494900194
ci -=(xi.yi∧f5. h).GFp
si +=(f2∧f5). h
si -=(f2∧f5).h
Figure A0282494900195
Figure A0282494900196
23.从冗余二进制到二进制的转换输入是一个xi={ 1,0,1}的向量X。输出是一个yi={0,1}的向量Y。向量X被划分为每组4位的8个组,i=4m+n(n=0..3,m=0..7)。在各组之间:
·当这个组中最左边非零数字是‘ 1’时,生成组借位gm
·当所述组没有任何‘1’时,传送组借位gm-1
在各组中:
·当数字是‘ 1’时,生成一个借位bi
·当数字不是‘1’时,传送一个借位bi-1:bi=bi-1
bi-1 xi +xi - yi bi
0 00 0 0
0 1x 1 0
0 x1 1 1
1 00 1 1
1 1x 0 0
1 x1 0 1
表6一个组中的输出和借位
对于i≠0,4,8,…,28,yi=(xi +∧xi -)bi-1
对于i=0,4,8,…,28,yi=(xi +∧xi -)g4i-1
24.GF(2n)
由于不存在借位,因此转换很简单。如果我们抑制所有的借位,那么GF(p)的电路将给出正确的答案。
组合逻辑:
Figure A0282494900203
对于i≠0,4,8,…,28,yi=(xi +∧xi -)(bi-1.GFp)
对于i=0,4,8,…,28,yi=(xi +∧x1 -)(g4i-1.GFp)
流水线乘法器
如图1中所示的流水线乘法器也能用于GF(2n),但是在右侧部分的-Y[0]被设置为‘0’。上面描述了所有其它改进。

Claims (6)

1.一种乘法器设备,该设备被安排用于以素数为模将第一长整数实体与第二长整数实体相乘,所述设备其特征在于包括一个流水线乘法器内核,同时以蒙哥马利方式执行全部的乘法。
2.如权利要求1所述的设备,还被安排用于实现改进的布斯算法。
3.如权利要求2所述的设备,还被安排用于以并行结构减去y0*X。
4.如权利要求1所述的设备,被安排用于以各个多项式的形式乘以所述第一和第二整数实体,并且在伽罗瓦域GF(2n)中以一个不可约的多项式为模。
5.如权利要求1所述的设备,其被应用于执行一种类似RSA的计算。
6.如权利要求1所述的设备,其被应用于执行一种椭圆曲线计算。
CNB028249496A 2001-12-14 2002-12-05 蒙哥马利乘法器中的流水线内核 Expired - Lifetime CN100382011C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP01204908.6 2001-12-14
EP01204908 2001-12-14

Publications (2)

Publication Number Publication Date
CN1605059A true CN1605059A (zh) 2005-04-06
CN100382011C CN100382011C (zh) 2008-04-16

Family

ID=8181444

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028249496A Expired - Lifetime CN100382011C (zh) 2001-12-14 2002-12-05 蒙哥马利乘法器中的流水线内核

Country Status (8)

Country Link
US (1) US7395295B2 (zh)
EP (1) EP1459167B1 (zh)
JP (1) JP4619657B2 (zh)
CN (1) CN100382011C (zh)
AT (1) ATE316668T1 (zh)
AU (1) AU2002353282A1 (zh)
DE (1) DE60208926T2 (zh)
WO (1) WO2003052584A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105373366A (zh) * 2015-10-12 2016-03-02 武汉瑞纳捷电子技术有限公司 一种生成大素数的方法及装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7240204B1 (en) * 2000-03-31 2007-07-03 State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Scalable and unified multiplication methods and apparatus
WO2003021423A2 (en) * 2001-09-04 2003-03-13 Microunity Systems Engineering, Inc. System and method for performing multiplication
US7395295B2 (en) * 2001-12-14 2008-07-01 Nxp B.V. Pipeline core in Montgomery multiplier
US7266577B2 (en) * 2002-05-20 2007-09-04 Kabushiki Kaisha Toshiba Modular multiplication apparatus, modular multiplication method, and modular exponentiation apparatus
FI115862B (fi) * 2002-11-06 2005-07-29 Nokia Corp Menetelmä ja järjestelmä kertolaskuoperaation suorittamiseksi ja laite
US7532720B2 (en) * 2003-10-15 2009-05-12 Microsoft Corporation Utilizing SIMD instructions within montgomery multiplication
US7664810B2 (en) * 2004-05-14 2010-02-16 Via Technologies, Inc. Microprocessor apparatus and method for modular exponentiation
KR100670780B1 (ko) * 2004-10-29 2007-01-17 한국전자통신연구원 유한체 GF(2^m)에서의 하이브리드 곱셈 연산 장치및 연산 방법
FR2884005B1 (fr) * 2005-04-01 2007-06-01 Thales Sa Methode d'implementation de la multiplication modulaire de montgomery et son dispositif
US8667040B2 (en) 2010-12-03 2014-03-04 Via Technologies, Inc. Mechanism for carryless multiplication that employs booth encoding
TWI489375B (zh) * 2010-12-03 2015-06-21 Via Tech Inc 無進位乘法裝置及其處理方法
US8645448B2 (en) 2010-12-03 2014-02-04 Via Technologies, Inc. Carryless multiplication unit
US8635262B2 (en) * 2010-12-03 2014-01-21 Via Technologies, Inc. Carryless multiplication preformatting apparatus and method

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513133A (en) * 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
JP2000132376A (ja) * 1998-10-27 2000-05-12 Fujitsu Ltd 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体
WO2000038047A1 (en) * 1998-12-18 2000-06-29 Motorola Inc. Circuit and method of cryptographic multiplication
JP2000353077A (ja) * 1999-04-07 2000-12-19 Matsushita Electric Ind Co Ltd 多倍長演算装置
US7240204B1 (en) * 2000-03-31 2007-07-03 State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Scalable and unified multiplication methods and apparatus
JP2001296993A (ja) * 2000-04-12 2001-10-26 Toyo Commun Equip Co Ltd 有限体上の乗算回路
US7395295B2 (en) * 2001-12-14 2008-07-01 Nxp B.V. Pipeline core in Montgomery multiplier
DE10260660B3 (de) * 2002-12-23 2004-06-09 Infineon Technologies Ag Modulare Multiplikation mit paralleler Berechnung der Look-Ahead-Parameter u.a. bei der kryptographischen Berechnung
DE10260655B3 (de) * 2002-12-23 2004-06-24 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen einer Multiplikation mit einer Verschiebung des Multiplikanden, insbesondere bei der kryptographischen Berechnung

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105373366A (zh) * 2015-10-12 2016-03-02 武汉瑞纳捷电子技术有限公司 一种生成大素数的方法及装置

Also Published As

Publication number Publication date
DE60208926D1 (de) 2006-04-13
AU2002353282A8 (en) 2003-06-30
WO2003052584A3 (en) 2004-05-21
JP2005513532A (ja) 2005-05-12
US7395295B2 (en) 2008-07-01
JP4619657B2 (ja) 2011-01-26
DE60208926T2 (de) 2006-08-31
EP1459167B1 (en) 2006-01-25
EP1459167A2 (en) 2004-09-22
CN100382011C (zh) 2008-04-16
ATE316668T1 (de) 2006-02-15
US20050033790A1 (en) 2005-02-10
AU2002353282A1 (en) 2003-06-30
WO2003052584A2 (en) 2003-06-26

Similar Documents

Publication Publication Date Title
CN1148643C (zh) 模幂运算装置
CN1265280C (zh) 扩展整数的计算域的范围
CN1186714C (zh) 高基除法器及方法
CN1320769C (zh) 编码器、解码器以及数据传送系统
CN1605059A (zh) 蒙哥马利乘法器中的流水线内核
CN1129066C (zh) 处理器及其运算方法以及数据处理器
CN1205538C (zh) 用于多精度整数算术运算的装置
CN1252587C (zh) 移位分组数据的方法、装置和处理数字音频信号的系统
CN1163870C (zh) 声音编码装置和方法,声音译码装置,以及声音译码方法
CN1831754A (zh) 一种椭圆曲线密码系统及实现方法
CN1312630A (zh) 基于分块加密方式的加密装置与方法及译码装置与方法
CN1221909C (zh) 并行处理方法中的作业分配方法及并行处理方法
CN1199177C (zh) 可抑制电路规模能进行高速纠错的纠错装置和解码装置
CN1770864A (zh) 基于avs的4×4离散余弦变换的快速并行装置及其方法
CN1841443A (zh) 计算方法、计算设备以及计算机程序
CN1262072C (zh) 码分多址移动通信系统中的编码/解码设备和方法
CN1226039A (zh) 指数计算装置和解码装置
CN1778066A (zh) 参数生成设备,加密系统,解密系统,加密设备,解密设备,加密方法,解密方法,及其程序
CN1468396A (zh) 并行计数器和用于执行乘法的逻辑电路
CN1926768A (zh) 信号处理装置和方法及信号处理程序和记录该程序的记录介质
CN1839550A (zh) 解码可变长度前缀码的方法
CN1957384A (zh) 电子元件和数据处理方法
CN1682214A (zh) 矩阵运算装置
CN1867890A (zh) 执行模乘的方法和用2n位的数执行欧几里德乘法的方法
CN1930547A (zh) 用于元素的指数或标量乘法的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: NXP CO., LTD.

Free format text: FORMER OWNER: KONINKLIJKE PHILIPS ELECTRONICS N.V.

Effective date: 20070914

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20070914

Address after: Holland Ian Deho Finn

Applicant after: NXP B.V.

Address before: Holland Ian Deho Finn

Applicant before: Koninklijke Philips Electronics N.V.

C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190325

Address after: Delaware

Patentee after: VLSI Technology Co.,Ltd.

Address before: Holland Ian Deho Finn

Patentee before: NXP B.V.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20080416