CN1366234A - 运算电路和运算方法 - Google Patents

运算电路和运算方法 Download PDF

Info

Publication number
CN1366234A
CN1366234A CN01143738A CN01143738A CN1366234A CN 1366234 A CN1366234 A CN 1366234A CN 01143738 A CN01143738 A CN 01143738A CN 01143738 A CN01143738 A CN 01143738A CN 1366234 A CN1366234 A CN 1366234A
Authority
CN
China
Prior art keywords
register
memory
read
storer
port
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
CN01143738A
Other languages
English (en)
Other versions
CN1221891C (zh
Inventor
高野光司
佐藤证
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1366234A publication Critical patent/CN1366234A/zh
Application granted granted Critical
Publication of CN1221891C publication Critical patent/CN1221891C/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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/40Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using contact-making devices, e.g. electromagnetic relay
    • G06F7/44Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Electromagnetism (AREA)
  • Complex Calculations (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)

Abstract

本发明提供一种运算电路和运算方法,其目的是通过使用具有双端口或单端口的通用存储器,解决蒙特高玛俐乘法器在存储器存取时遇到的瓶颈问题。提供7和8两个存储器,以便存储在存储器中并且为了操作必须被读取的变量可以记录在不同的存储器中。此后,在对应流水线处理的读取阶段中,从存储器7读取某个变量并装入寄存器5,同时,从存储器8读取其他变量并装入其他寄存器中。

Description

运算电路和运算方法
                         技术领域
本发明涉及一种运算(arithmetic)电路和运算方法,具体地说,涉及一种用于公开密钥密码系统的优选的模乘法速度提高。
                         背景技术
对于信息传送,为保持信息的机密性并且为了数字认证目的,采用公开密钥密码术(非对称密码术)。公开密钥密码术是一种用于信息传送的密码系统,一种用于使用由公开密钥和保密密钥组成的一对密钥传送信息的密码术方法。发送者使用接收者的公开密钥加密明文,并且当解码密文时,使用只有接收者知道的保密密钥。按照公开密钥密码术,由于与共用密钥密码术(对称密码术)不同,不需要通信者共享和采用单一的共用密钥,并且由于公开密钥的广泛公开不牵涉明显的风险,与不限数量的人通信时保持秘密是可能的。此外,当公开密钥密码术采用来进行数字认证或准备数字签名时,可以建立不熟悉的人的可信度和可靠度。因此,可以迅速地断定,对于通过诸如因特网这样的通信系统支持的网络社会,以及对于进入了这样的网络社会的商业交易来说,公开密钥密码术是必不可少的技术。
RSA(Rivest-Shamir-Asleman algorithm,里韦斯特-沙米尔-阿德莱曼算法)是最流行的公开密钥密码术。由RSA提供的安全是基于对于一个很大的整数的离散对数问题的,或者基于在素数分解中遇到的困难。例如,通过使用公开密钥(e,n)按照关系式C=Me(mod n)(M由小于整数n的块形成),将明文M加密成密文C。为了解码密文C,必须执行离散对数问题(使用a、y和p,获得满足y=ax(mod p)的x),并且必须求解由O(2SQRT(log n))所代表的量(SQRT是用于提供平方根的函数)。当整数n是一个具有至少等于或者大于512位,最好是等于或者大于1024位长度的值时,在实用时间内破译密码是困难的。
可是,当使用与公开密钥(e,n)具有下面关系的保密密钥(d,n)时,
ed(mod lcm(p-1,q-1))=1,n=pq(其中p和q是足够大的素数),
通过使用关系式M=Cd(mod n)(其中lcm(a,b)提供a和b的最小公倍数),可以容易地获得明文M。
通过使用指数的二进制表示,重复模平方运算和模乘法运算,使得对于模乘法运算要求指数是最多两倍位长度。
可是,上述模乘法运算甚至要求比对称密码术比如DES(Data EncryptionStandard,数据加密标准)所要求的还要多的计算量。因此,需要准备和使用一种尽可能有效率的算法。
蒙特高玛俐(Montgomery)乘法方法是一种用于增加上面模幂运算中模平方运算和模乘法运算的速度的方法。正如皮特·L·蒙特高玛俐(Peter L.Montgomery)在“计算数学”,1985年4月44卷第170号,第519-522页的“无试除的模乘法”(Mathematics of computations,Vol.44,No.170 April 1985,pp.519-522“Modular Multiplication Without Trial Division”)中所描述那样,蒙特高玛俐乘法方法是在要求的计算比为其反复执行减法的除法所要求的少的同时,通过重复加法、乘法和移位运算来执行模乘法运算的一种方法。蒙特高玛俐乘法的基本计算部分P≡XYR-1(mod n)使用伪码1.x被表示在下面。应注意,在P≡XYR-1(mod n)中R=(2r)m和N≡-n-1(mod 2r)。此外,应注意,在伪码中行号被加到每行的左面(下文中使用这个原则)。
(1.1)             p=0;
(1.2)             for(i=0;i<m;i++){
(1.3)                t=(p0+xiy0)N(mod 2r);
(1.4)                P=(P+xiY+t·n)/2r
(1.5)             }
(1.6)          if(P≥n)  P=P-n;
如在伪码1.x中所示,基本部分的重复计算执行如下。首先,将X划分成m块xi(X=(xm-1,xm-2,...,x1,x0)),并且将xiY与Y的部分乘积加法重复m次(行号1.2至1.5)。此时,每次累加乘积“t·n”以使得p0等于0,这里p0是中间结果P的最低块(行号1.4)。在这种情况下,t在行1.3中定义。此外,P被右移r位,即被乘以2-r(行号1.4)。应注意,以后通过执行r位移动操作m次获得2-rm=R-1
假设使用一个32位的乘法器执行512位的蒙特高玛俐乘法,则循环被重复512/32=16次。在上述伪码中,为了简单,比如xi·Y或t·n被表示成32位×512位;而实际上,512位中的Y和n的每一个都划分成适合于计算的32位块。也就是说,在该计算中,P的部分乘积加法是一个m=16的双循环。使用双循环执行蒙特高玛俐乘法的示例过程采用伪码2.x展示在下面。
(2.1)             p=0;
(2.2)             for(i=0;i<m;i++){
(2.3)                t=(p0+xiy0)(mod 2r);
(2.4)                t=t·N(mod 2r);
(2.5)                c=0;
(2.6)             for(j=0;j<m;j++){
(2.7)                    tmp=pj+xi·yj+c;
(2.8)                    tmp=tmp+t·nj
(2.9)                    if(j!=0)pj-1=tmp(mod 2r);
(2.10)            c=tmp/2r
(2.11)        }
(2.12)        Pm-1=c;
(2.13)      }
(2.14)      if(P≥n)  P=P-n;
在这个情况下,X、Y和n被分成m块,即,
X=(xm-1,xm-2,...,x1,x0)
Y=(ym-1,ym-2...,y1,y0)
n=(nm-1,nm-2,...,n1,n0)
假设采用一个乘法器,那么为了计算中间结果tmp需要两个乘积加法。变量pi、xi、yj、t和nj是r位长度的数字,变量c是从较低模块的进位。在上述伪码2.x中,在j循环的一次迭代中,执行2r位长的数xi·yi和t·nj的加法和r+1位长的数pj和c的加法(行号2.6至2.11),所以在乘积加法之后的中间结果tmp是2r+1位长的数。tmp的低r位被作为变量pj存储,高r+1位被作为变量c存储(行号2.9至2.10)。
相反,xi·yj和t·nj的加法可以按照两个单独的循环执行,如使用伪码3.x的下例所示。
(3.1)           P=0;
(3.2)           for(i=0;i<m;i++){
(3.3)               c=0;
(3.4)               for(j=0;j<m;j++){
(3.5)               tmp=pj+xi·yj+c;
(3.6)           pj=tmp(mod 2r);
(3.7)               c=tmp/2r
(3.8)               };
(3.9)               pm=c;c=0;
(3.10)          t=p0·N(mod 2r);
(3.11)          for(j=0;j<m;j++){
(3.12)              tmp=pj+t·nj+c;
(3.13)              if(j!=0)pj-1=tmp(mod 2r);
(3.14)              c=tmp/2r
(3.15)          };
(3.16)          Pm-1=pm+c;
(3.17)       };
(3.18)       if(P≥n)  P=P-n;
在伪码3.x的例子中,变量pj具有r位长,变量tmp具有2r位长。
对于2.x和3.x两个伪码的任何一个的情况,在用于蒙特高玛俐乘法的双循环之后所获得的结果P小于2n。可是,由于不能保证结果P等于或小于n,所以在必要时,要求“P=P-n”(行号2.14和3.18)。
在对于伪码2.x和3.x的例子中,pj基本上是存储在将结果P划分成m块的r位寄存器中的正值。可是在伪码2.x的例子中,位于2.12行的“Pm-1=c”中的c最大是r+1位。此时,当位数可被r位除尽时,有一位溢出。因此,必须对最高有效位执行特殊处理,以使其缩减到m或者必须将循环迭代计数增加到m+1。在本说明书中,为了简化解释,假设在上面两个代码的示例中,j循环迭代的计数是m。应注意,在两个示例的行2.14和3.18上的比较计算“if(P≥n)”中必须考虑符号位。
可以按照伪码2.x和3.x所示的方法执行蒙特高玛俐乘法。可是,通过对计算周期详尽仔细的研究,本发明人发现变量的寄存器分配和存储器结构对计算的执行有很大的影响。现在将描述讨论结果。
参考其中使用伪码2.x的情况,具有r位长的变量N在i循环(伪码2.2至2.13)中被反复使用也不会改变它的值,并且变量t和xi在j循环(伪码2.6至2.11)中被反复使用而没有改变它们的值。因此,一旦变量N、t和xi已经被计算出来或者从存储器中读取,它们就可以被存储在寄存器中,并且被反复使用,直到退出循环。在j循环中使用的变量tmp和c被直接分配到寄存器,其它变量存储在其中能执行独立地址的读取和写入的通用双端口存储器中。此外,假设沿着流水线执行存储器读取处理序列、计算和存储器写入。可是,在这种情况下,由于计算和存储器写入在仅一个周期后就被终止,所以存储器读取构成执行中的瓶颈。由于这个原因,现在将考虑投入到存储器读取中的周期数。
首先,对于行2.1上的处理P=0,当为了执行在行2.7上的计算,即,tmp=pj+xi·yj+c,第一次读取变量pj时,只需要复位这个值。因此,不需要操作周期。
对于对位于行2.3和2.4上的变量t的计算,即,t=(p0+xiy0)(mod 2r)和t=t·N(mod 2r),不同于被分配到寄存器中的变量N,为了读取变量p0、xi和y0需要三个周期,应注意,因为行2.3上获得的结果对于寄存器直接进行分配(如上所述),所以不必读取变量t。对于行2.5上的“c=0”,它也象对于P=0的处理那样,不需要操作周期。
当处理序列进入j循环时,对于在行2.7上执行的计算tmp=pj+xi·yj+c,为了读取变量pj和yj需要两个周期。变量xi在这里不需要读取因为在行2.3上计算变量t时读取了它。此外,变量c也不需要读取因为,象以前谈到的那样,它被直接分配到寄存器。
对于行2.8上执行的计算,即,tmp=tmp+t·nj,需要一个周期来读取变量nj,但是不需要读取变量tmp和t,原因是它们被直接分配到寄存器,如上所述。
在对于行2.9上的计算的实际硬件操作,即,
Pj-1=tmp(mod 2r)
c=tmp/2r中,“tmp=tmp+t·nj”必须被直接写入变量pj-1和c,而不是临时分配到寄存器tmp。因此,两个计算都不需要操作周期。
对于在行2.12上退出j循环的处理后立即执行的计算Pm-1=c,该流水线处理不需要操作周期。
因此,在i循环中的操作周期数是3+m(2+1)=3m+3。然后,这个值乘以i循环的m,即
m(3m+3)=3m2+3m。
可是,由于i=0引起pj=0,如上所述,因此pj不需要读取,并且输入只需要被复位到0。因此,总的来说,对于i循环,从上述结果中减去m,从而获得
3m2+3m-m=3m2+2m
在行2.14中的比较处理中,“if(P≥n)”,通过减法运算“P-n”决定哪个值更大哪个值更小,所以需要2m个周期,并且在处理最终退出流水线之前需要两个周期。因此,总的来说,需要的周期数是3m2+4m+2。这是其中流水线操作可以在不受干扰的前提下执行的情况。当操作位的数量不比乘法器使用的数量大太多时,即,当块计数m少时,要写入的值必须立即读取,因此对于存储器的存取,增加一等待开销。应注意,当块计数是从四到五时,不出现这个问题。此外,由于对于比如二或者三这样的小块数的情况,使用蒙特高玛俐方法不是很有效,所以不需要考虑上述问题。换句话说,m2项的系数3不会由于双循环而剧烈变化。此外,流水线处理可能在j循环之前或者之后受到干扰,因此最终获得的周期数可能不同。可是,即使在这种情况下,在双循环中,m2项的系数3也不会变化,并且最终的周期数与上面描述的值不会有太大的不同。
现在类似地讨论伪码3.x的范例如下。对于行3.1中对于“P=0”的处理,当为了执行在行3.5上的计算tmp=pj+xi·yj+c,而第一次读取变量pj时,P的值只需要被复位到0,所以,不需要操作周期。对于行3.1上对于“c=0”的处理,它也象在伪码2.x的例子中那样,不需要操作周期。
当处理进入第一个j循环时(行号3.4至3.8),对于在行3.5上执行的计算,即tmp=pj+xi·yj+c,读取pj和yj需要两个周期,并且第一个循环必须读取xi。对于行3.6上的计算,即,
pj=tmp(mod 2r)
c=tmp/2r,象在伪码2.x的例子中那样,由于tmp被直接写入pj和c,不需要周期。因此,对于第一个j循环的周期计数是2m+1。
在处理退出第一个j循环之后,因为流水线处理在行3.9上执行的计算“Pm=c;c=0;”不需要周期,而对于在行3.10上执行的计算t=p0·N(mod 2r),读取p0和N需要两个周期。
在此之后,处理进入第二个j循环(行号3.11至3.15),对于在行3.12上执行的计算tmp=pj+t·nj+c,读取pj和nj需要两个周期。应注意,因为t和c被直接写入寄存器,不需要读取它们。在行3.13上执行的下列计算中,
pj-1=tmp(mod 2r)
c=tmp/2r,象在伪码2.x的例子中那样,不需要周期。因此,第二个j循环需要的周期数是2m。然而,在处理退出第二个j循环之后,对于在行3.16上执行的计算,即,Pm-1=pm+c,读取pm需要一个周期。
因此,i循环需要的操作周期数是(2m+1)+2+2m=4m+4。在i循环中这个周期计数乘以m,获得m(4m+4)=4m2+4m。可是,如上所述,当i=0时不需要读取pj,并且输入必须而且仅仅被复位到0,总的来说,i循环需要的周期数减少m,为4m2+4m-m=4m2+3m。在行3.18上执行的比较处理即if(P≥n)中,为了使用减法操作“P-n”决定哪个值更大哪个值更小,需要2m个周期,并且退出流水线处理需要两个周期。结果,总的来说,需要的周期数是4m2+5m+2。伪码3.x的例子需要的周期数增加m2,原因是由于在该j循环的单一迭代中不执行对于tmp的部分乘积加法,所以按行号3.4至行号3.8写到存储器的变量pj按行号3.11至行号3.15进行读取。伪码3.x的例子比伪码2.x的例子更有利,原因是即使需要许多周期,进位也比伪码2.x的少一位,且可以存入r位的块中,因此需要较少数量的寄存器。因此,在控制的复杂性和电路大小方面,伪码3.x的例子更有利。图7是表示用于伪码3.x的蒙特高玛俐乘法器数据通路单元的电路图,图8是对于当块计数m=4时通过这个乘法器执行的接近最后的循环迭代的定时图。应注意,象在伪码2.x的例子中那样,总的来说,由于流水线阶段的数量,读取周期的数量可能稍微改变。
考虑相对存储器读取定时,在蒙特高玛俐乘法的速度中的增加。由于在双循环中执行两次乘法,好象直接通过使用两个乘法器就能使处理速度加倍。可是,如上所述,存储器读取构成瓶颈。为了消除这个瓶颈,可以使用具有独立读取的两个读端口和一个写端口的三端口存储器。通过使用三端口存储器,可以增加操作速度,可是支持这种存储器的技术积累有限。因此,使用三端口存储器可能变成登记蒙特高玛俐乘法器为IP核心宏的障碍。此外,三端口存储器需要大的电路尺寸,并且不适合于对缩小尺寸的需要。
                         发明内容
因此,本发明的一个目的是在使用具有双端口或者单端口的通用存储器时,解决在蒙特高玛俐乘法器中由存储器存取瓶颈引起的问题。因此,可以获得较高的性能和缩小尺寸的元件,并且可以提供一种低成本的密码术电路。
现在给出本发明的概要。根据运算电路和运算方法,在单一周期中执行的算术运算需要的并且必须从存储器中读取的变量可以被存入不同的存储器中,并且可以在单一读取阶段中同时读取。按这种方法,可以使读取等待时间减到最小,并且可以改善计算性能。此外,不需要使用比如三端口存储器这样的复杂电路或者需要巨大硬件资源的电路作为用来存储变量的存储器,而只要通过使用具有双端口或者仅单端口的通用存储器就行了,也可以轻易地构成IP核心,并且电路尺寸可以减到最小。
本发明被列举如下。根据本发明,一个运算电路包括:多个寄存器;运算单元,用于将输入该多个寄存器的值当作输入;以及多个存储器,其中在使用由运算单元执行的流水线处理中同一读取阶段期间,执行从多个存储器向多个寄存器读出多个变量。此外,根据本发明,一种使用包括具有多个输入寄存器和多个存储器的运算单元的运算电路的运算方法包括步骤:执行基于存储在输入寄存器中的值的算术运算;在输入寄存器或存储器中写入算术运算的结果;并且在同一流水线阶段期间,从多个存储器读取多个变量并且在多个输入寄存器中存储这些变量。
运算单元可以是基于分别被输入到第一寄存器、第二寄存器、第三寄存器和第四寄存器的具有r位长度的值x1、x2、x3和x4的、用于提供对于x1+x2·x3+x4的具有2r位或者2r+1位长度的操作结果Q的乘法器加法器。在这种情况下,多个存储器包括第一存储器和第二存储器。在接着流水线处理的操作阶段的写入操作结果的阶段中,将操作结果Q的低r位QL记录到第一存储器,将操作结果Q中排除QL位后的高位QH记录到第四寄存器,同时在接着该写入阶段后从这些寄存器读取变量的阶段中,从第一存储器读取变量x1并存入第一寄存器,并且从第二存储器读取变量x3并存入第三寄存器。此外,第一存储器和第二存储器可以是具有一个数据写入端口和一个数据读取端口的双端口存储器,或者第一存储器可以是具有一个数据写入端口和一个数据读取端口的双端口存储器,而第二存储器可以是具有一个用于数据写入和读取端口的单端口存储器。
另外,运算单元可以是基于分别被输入到第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器和第六寄存器的具有r位长度的值x1、x2、x3、x4、x5和x6的,用于提供对于x1+x2·x3+x4·x5+x6的具有2r位或者2r+1位长度的操作结果Q的乘法器加法器。在这种情况下,这多个存储器包括第一存储器、第二存储器和第三存储器。在接着流水线处理的操作阶段后用于写入操作结果的阶段中,将操作结果Q的低r位QL记录到第一存储器,将操作结果Q中排除QL位后的高位QH记录到第六寄存器;同时在接着写入阶段后用于读取变量到寄存器的阶段中,将变量x1从第一存储器读取并存入第一寄存器,而将变量x3从第二存储器读取并存入第三寄存器,并且将变量x5从第三存储器读取并存入第五寄存器。此外,第一存储器是具有一个数据写入端口和一个数据读取端口的双端口存储器,第二存储器和第三存储器是具有一个用于数据写入和读取的端口的单端口存储器。
通过本发明获得的具体效果如下。当存取存储器时蒙特高玛俐乘法器所遇到的瓶颈可以通过使用通用双端口存储器或者单端口存储器进行消除。因此,在缩小电路尺寸的同时可以获得高级性能,并且可以提供低成本的密码处理硬件。
附图说明
图1是表示适用于根据本发明的第一实施例的示例性蒙特高玛俐乘法器的数据通路部分的方框图。
图2是表示用于由适用于伪码3.x的图1中的电路执行的处理的定时的定时图。
图3是表示适用于根据本发明的第二实施例的示例性蒙特高玛俐乘法器的数据通路部分的方框图。
图4是表示用于由适用于伪码3.x的图3中的电路执行的处理的定时的定时图。
图5是表示适用于根据本发明的第三实施例的示例性蒙特高玛俐乘法器的数据通路部分的方框图。
图6是表示用于由适用于伪码2.x的图5中的电路执行的处理的定时的定时图。
图7是表示适用于关于伪码3.x的常规蒙特高玛俐乘法器的数据通路部分的电路方框图。
图8是表示当块计数m=4时,用于图7中最后循环的附近的定时的定时图。
                      具体实施方式
现在参考附图本详细描述本发明的优选实施例。然而应注意,本发明可以通过多种不同的实施例实现,并不局限于这里讨论的实施例。在实施例描述部分使用相同的参考数字表示对应或者同一单元。
(实施例1)
图1是表示适用于根据本发明的第一实施例的示例性蒙特高玛俐乘法器的数据通路部分的方框图。这个实施例中的蒙特高玛俐乘法器包括:乘法器加法器1,输入寄存器2至5,多路复用器6和两个存储器7和8(存储器A和存储器B)。
乘法器加法器1将寄存器2和5的输入值(r位长)加到寄存器3和4的输入值(r位长)的乘积上,并获得具有2r位长的输出tmp。即从加法输入pj和c及乘法输入yj和xi获得输出tmp=pj+yj·xi+c。乘法器加法器1可以由比如众所周知的全加器FA和半加器HA组成。在图1中,诸如xi(0)这样的值表示通过提取与圆括号中的数字对应的位获得的适用于变量xi的值。
数据被从存储器7和8读取,并输入到输入寄存器2至5中,或者将从乘法器加法器1的输出直接输入到这些寄存器。多路复用器6是用于接收三个输入并提供一个输出的转换器。
存储器7和8是通用的双端口存储器,即,通过使用两个独立端口之一执行数据写或者数据读的存储器。双循环处理中的中间变量P(pj)记录在存储器7(存储器A)中,其它变量X(xi)、Y(yj)、n(nj)和N及最终结果P(pj)记录在存储器8(存储器B)中。存储器7和8是双端口存储器,不构成对于IP核心形成的障碍,并且不增加电路的面积。
在这个实施例执行的算术运算中,数据的读取、计算和写入被作为流水线处理来执行。即,并行地执行从存储器读取数据到寄存器的阶段、基于输入到寄存器的值的算术运算阶段和在寄存器或者各存储器中写入操作结果的阶段。
图2是表示用于由适用于伪码3.x例子的图1中的电路执行的处理的定时的定时图。在图2中,表示了当m=4时接近最终循环的情况。在这个和下面的定时图中,使用描绘在相同背景色中的灰色或者白色表示流水线处理(数据读取和计算及结果写入)。在图表的左端,读目标存储器(存储器A(读),存储器B(读)),寄存器(pj(寄存器5),yj,nj和N(寄存器4),c(寄存器2),和xi和t(寄存器3)),和写入目标存储器(存储器A(写),存储器B(写))被用作索引。在表格的每个行中,表示在读取阶段从每个存储器读取的数据、在操作阶段在每个寄存器中装入的数据以及在写入阶段要写入的数据。
在执行伪码3.x的例子中的第一个j循环的处理(行号3.4至3.8),比如,在图2的i循环=3中对于第一个j=0至3的处理中,首先,在对于j=0的循环中,从存储器7(存储器A)读取p0并输入到寄存器5(pj),并且从存储器8(存储器B)读取y0并输入到寄存器4(yj,nj,N)(读取阶段)。与读取阶段同时地执行前面周期的操作阶段(行3.16上的计算处理)及其前项的写入阶段(将p2写入存储器7(存储器A)并且将高位tmpH写入寄存器c)。
然后,在对于j=1的读取阶段,从存储器7(存储器A)读取p1并装入寄存器5(pj),并且从存储器8(存储器B)读取y1并装入寄存器4(yj,nj,N)。同时,基于先前读取的p0和y0,将前面阶段中获得并装入寄存器2(c)的操作结果(tmpH)和装入寄存器3(xi,t)的x3,执行行3.5上的操作(操作阶段)。此时,执行前面周期的写入阶段(p3在存储器7(存储器A)中的写入,高位tmpH在寄存器c(寄存器2)中的写入)。
此后,在对于j=2的读取阶段,从存储器7(存储器A)读取p2并装入寄存器5(pj),并且从存储器8(存储器B)读取y2并装入寄存器4(yj,nj,N)。同时,执行基于在前面周期读取并装入寄存器的数据的操作,并且将先前获得的操作结果的高位tmpH和低位p0(基于变量p0,x3,y0和c的结果)装入寄存器c并写入存储器7(存储器A)(写阶段)。按照这种方法,执行从p0和y0输入到记录结果的流水线处理。对于其它变量pj和yj执行同一处理。
在行3.9上执行的处理中,在各读周期之间插入一个空周期,并且在对于j=3的操作阶段之后,将寄存器c中的数据作为p4写入存储器7。
接下来,在行3.10上执行的处理中(t的计算),在同一读取阶段期间,从存储器7读取p0并写入寄存器3,并且从存储器8读取N并写入寄存器4。在下一写阶段中,将操作结果作为变量t写入寄存器4。
在行3.11至3.15上执行的处理中,象在第一个j循环中那样,第二个j循环在同一读取阶段,从存储器7和8分别读取pj和nj,并且使用先前输入的变量t和c执行行3.12上的操作。其后,操作结果的低位作为pj-1记录到存储器7(行号3.13),而高位装入寄存器c(行号3.14)。应注意,在第二个j循环期间,在对于j=0的处理中,c复位到0,并且当j=0时不记录操作结果的低位。
在行3.16上执行的处理中,从存储器7读取p4并装入寄存器5,并且将这个数据与寄存器c中的数据相加。结果作为p3存入存储器7。应注意,在最终的i循环的存储器写入处理中,pj不仅被存入存储器7而且被存入存储器8。
最后,在行3.18上执行的处理中,从存储器7读取pj和nj并装入各自的寄存器,并执行一个比较。即,将通过“P=P-n”中的减法获得的结果存储到在那里先前的结果P未被覆盖的存储器8(存储器B)中的一个位置。在存储器8(存储器B)中,存储当处理退出最终的j循环时获得的P和通过从P中减去n获得的P-n,并且当P-n是正数时,将P-n用作最终的结果,而当P-n是负数时,将P用作最终的结果。在处理已经退出最终的j循环之后,也将P简单地写入存储器7(存储器A),原因是对于为P-n执行的计算,P在n被从存储器8(存储器B)读取同时读取。
其后,终止对于伪码3.x的例子。在上述处理中,在同一读取阶段,从各存储器读取各个变量。因为提供两个存储器并且可能被同时读取的变量存储在分开的存储器中,所以这种处理是可行的。因此,与常规方法比较,可以缩短等待存储器读取时花费的时间,并且可以改善处理性能。
在上述处理中,读取阶段期间的周期数可以解释如下。第一个j循环需要m个周期,行3.9和3.10上执行的处理需要2个周期,第二个j循环需要m个周期,并且行3.16上执行的处理需要1个周期,因此对于在i循环中的处理,总共需要2m+3个周期。对于i循环,这个数被乘以m,所以获得2m2+3个周期。由于在其中i=0的周期期间,必须读取yj,而不需要读取pj,因此不需要m的减法。此外,行3.18上的比较需要m个周期,退出流水线处理需要2个周期。因此,最终获得的所需要的周期数是2m2+4m+2。而常规方法需要4m2+5m+2个读取周期,本发明需要该周期数的大约一半。
伪码3.x的例子已经采用来解释这个实施例;然而,如伪码2.x的例子所示,在单一j循环期间,xi·yj和t·nj可以加在一起。与伪码3.x比较,对于伪码2.x来说,等待变量pj的读取所花费的周期被减掉大约一半,所以总的来说,周期数是较少的。可是,当提供两个存储器并且象在这个实施例中那样分开使用时,通过两个伪码获得的效果没有差别。这是因为,象从图2显现的那样,可以从不同的存储器同时读取pj和yj或者pj和nj,并且没有额外的等待时间。在这个实施例中,即使对于伪码2.x,需要的周期数也可以减少到常规数的大约2/3,即3m2+4m+2。此外,由与通过减少对Pm-1的额外进位位长度并未增加到r+1位,因此不需要例外处理,并且可以简化电路结构。
(实施例2)
图3是表示适用于根据本发明第二实施例的示例性蒙特高玛俐乘法器的数据通路部分的方框图。除了存储器8(存储器B)是单端口存储器,即对于数据读取和数据写入都使用相同端口以外,这个实施例中的运算电路与第一个实施例中的相同。在这个实施例中,由于使用单端口存储器作为存储器8,缩减了存储器的尺寸,从而可以获得较小的电路。
图4是表示由适用于伪码3.x的例子的、图3中的电路执行的处理的定时的定时图。在图4中,表示了当m=4时接近最终循环的情况。如图4中所示,直到i循环被终止为止,该处理与第一实施例相同。在执行P=P-n的处理中,由于在这个实施例中使用单端口存储器作为存储器8,最终的计算结果pj被写入存储器7(存储器A),而不是写入存储器8(存储器B)。然而,pj最终被从存储器7(存储器A)传送到存储器8(存储器B)。即,在最终结果P的修正期间,当P≥n时P-n被确定为最终结果;可是,直到已经执行了减法为止,才可以确定P≥n是否成立。因此,在第一个实施例中,P和P-n都被写入存储器8(存储器B),并且根据减法的结果选择它们中的一个,可是在这个实施例中,P和P-n仅被写入存储器7(存储器A),并且根据减法的结果它们中的一个被写到存储器8(存储器B)。结果,可以使用单端口存储器作为存储器8(存储器B),并且可以缩小存储器尺寸,唯一损失是周期数增加到m+1。这个实施例需要的周期数是2m2+5m+3,而当伪码2.x使用单端口存储器常规地进行处理时,周期数是4m2+5m+2,并且当处理伪码3.x时,需要的周期数是6m2+7m+2。因此,本发明所表现出来的优越性非常突出。
(实施例3)
图5是表示适用于根据本发明第三实施例的示例性蒙特高玛俐乘法器的数据通路部分的方框图。这个实施例的蒙特高玛俐乘法器包括乘法器加法器9、输入寄存器10至15和三个存储器16、17和18(存储器A,存储器B1和存储器B2)。
乘法器加法器9增加输入值(r位长的寄存器11(t寄存器)和寄存器12(nj,N寄存器),寄存器13(xi寄存器)和寄存器14(yj寄存器)的输入值(r位长)的乘积,和寄存器10(c寄存器)的输入值(r+1位长),及寄存器15(pj寄存器)的输入值(r位长度))的乘积,并作为输出提供具有2r+1位长的tmp。即,乘法器加法器9具有两个乘法器,并且从对应pj、c的加法输入、对应yj,xi的乘积输入和对应t,nj的乘积输入获得输出tmp=pj+yj·xi+t·nj
寄存器与第一实施例中的那些寄存器一样,存储器16(存储器A)是通用双端口存储器,并且存储器17和18(存储器B1和B2)是单端口存储器。由于使用了这些通用存储器,而遇到了关于IP核心信息的障碍,并且存储器的数量增加可以通过使用单端口存储器而带来的电路面积的缩小进行补偿。
图6是表示由适用于伪码2.x例子的、图5中的电路执行的处理的定时的定时图。在图5中,表示了当m=4时接近最终循环的情况。
首先,在第一个i循环中执行t的计算(伪码2.3和2.4)。从存储器16中读取p0,从存储器17中读取x3并且从存储器18中读取y0。在一个读取阶段期间执行这些数据读取处理。使用读取的变量在行2.3上执行处理,并且将计算结果的低位tmpL装入t寄存器。与计算并行地从存储器17读取N,并且使用t和N行执行行2.4上的计算。操作结果的低位tmpL被装入t寄存器,并且在整个循环中使用t的该值。在这个情况下,整个循环也使用先前读取的x3
接下来,当处理进入j循环时,从存储器16、17和18读取p0、n0和y0,并且在同一周期期间装入pj寄存器,n、N寄存器和yj寄存器。其后,执行使用c、t和x3的数据的操作,并且操作结果的低位作为pj-1写入存储器16,而高位被装入寄存器c(行号2.9和2.10)。在j循环的j=0的处理中,c被复位到0。此外,在j=0时,不存储通过该操作获得结果的低位。
在行2.14的处理中,c寄存器保留的数据作为pm被记录到存储器16。此后,对于P=P-n和对于从存储器A至存储器B的数据传送处理与第二实施例中的相同。
根据这个实施例,由于提供两个乘法器和三个存储器,所以能同时读取三个变量,并且最多可以通过使用两个乘法器执行数据读取。
对于这个实施例,需要的周期数如下。在i循环中t的计算需要两个周期,j循环需要m个周期,而对伪码2.x的处理需要一个周期,所以对于在i循环中的处理,需要的总的周期是m+3。根据i循环的迭代,该结果m+3被乘m次,获得周期数为m2+3m。由于在其中i=0的周期期间必须读取xi和yj,因此即使不必读取pj,也不需要减少m。此外,关于行2.14上的比较和存储器间传输处理需要2m周期,并且退出流水线需要两个周期。因此,最终需要的周期数是m2+5m+2。需要的周期数不但与现有技术相比有很大缩小,而且与第一和第二实施例相比也有缩减。由于m2项对需要的周期数影响极大,特别是当m的值增加时,由这个实施例产生的效果依然比较显著。并且当使用对于这个实施例的电路时,可以消除在使用两个乘法器时,在存储器存取期间遇到的瓶颈,并且可以相当减少需要的周期数。
本发明已经通过参考实施例进行了解释。可是本发明不局限于这些实施例,并且在不脱离本发明的范围的情况下可以进行各种修改。比如,在该实施例中,使用单端口存储器或者双端口存储器,但是本发明也可以应用到三端口存储器。

Claims (16)

1.一种运算电路,包括:
多个寄存器;
运算单元,用于将输入所述多个寄存器的值作为输入;以及
多个存储器,
其中在由所述运算单元执行的使用流水线处理的同一读取阶段期间,执行从所述多个存储器到所述多个寄存器的多个变量的读取。
2.如权利要求1的运算电路,其特征在于,所述运算单元是基于分别输入到第一寄存器、第二寄存器、第三寄存器和第四寄存器的具有r位长的值x1、x2、x3和x4的、用于提供对于x1+x2·x3+x4的具有2r位或者2r+1位长的操作结果Q的乘法器加法器。
3.如权利要求2的运算电路,其特征在于,所述多个存储器包括第一存储器和第二存储器;并且其中,在接着所述流水线处理的操作阶段的用于写入操作结果的阶段中,将所述操作结果Q的低r位QL记录到所述第一存储器,并将在所述操作结果Q中排除所述QL位后的高位QH记录到所述第四寄存器,在接着所述写入阶段的用于从所述寄存器读取变量的阶段,从所述第一存储器读取变量x1并存入所述第一寄存器,并同时从所述第二存储器读取变量x3并存入所述第三寄存器。
4.如权利要求3的运算电路,其特征在于,所述第一存储器和所述第二存储器是具有一个数据写入端口和一个数据读取端口的双端口存储器。
5.如权利要求3的运算电路,其特征在于,所述第一存储器是具有一个数据写入端口和一个数据读取端口的双端口存储器,而所述第二存储器是具有一个用于数据写入和读取的端口的单端口存储器。
6.如权利要求1的运算电路,其特征在于,所述运算单元是基于分别输入到第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器和第六寄存器的具有r位长的值x1、x2、x3、x4、x5和x6的、用于提供对于x1+x2·x3+x4·x5+x6的具有2r位或者2r+1位长的操作结果Q的乘法器加法器。
7.如权利要求6的运算电路,其特征在于,所述多个存储器包括第一存储器、第二存储器和第三存储器;其中,在接着所述流水线处理的操作阶段的用于写入操作结果的阶段,将所述操作结果Q的低r位QL记录到所述第一存储器,并将在所述操作结果Q中排除所述QL位后的高位QH记录到所述第六寄存器;并且其中,在接着所述写入阶段的用于读取变量到所述寄存器的阶段,同时从所述第一存储器读取变量x1并存入所述第一寄存器、从所述第二存储器读取变量x3并存入所述第三寄存器和从所述第三存储器读取变量x5并存入所述第五寄存器。
8.如权利要求7的运算电路,其特征在于,所述第一存储器是具有一个数据写入端口和一个数据读取端口的双端口存储器,并且所述第二存储器和所述第三存储器是具有一个用于数据写入和读取的端口的单端口存储器。
9.一种使用包括运算单元的运算电路的运算方法,其特征在于,该运算单元具有多个输入寄存器和多个存储器,该方法包括步骤:
执行基于存储在所述输入寄存器中的值的算术运算;
在所述输入寄存器或存储器中写入所述算术运算的结果;并且
在同一流水线阶段期间,从所述多个存储器读取多个变量并在所述多个输入寄存器中存储所述变量。
10.如权利要求9的运算方法,其特征在于,所述运算单元是基于分别输入到第一寄存器、第二寄存器、第三寄存器和第四寄存器的具有r位长的值x1、x2、x3和x4的、用于提供对于x1+x2·x3+x4的具有2r位或者2r+1位长度的操作结果Q的乘法器加法器。
11.如权利要求10的运算方法,其特征在于,所述多个存储器包括第一存储器和第二存储器,该方法进一步包括:
在所述运算单元的流水线处理中,用于在所述第一存储器中记录所述操作结果Q的低r位QL,并且在所述第四寄存器中记录在所述操作结果Q中排除所述QL位后的高位QH的写入步骤;以及
在所述流水线处理中的该同一读取阶段,执行从所述第一存储器中读取变量x1和在所述第一寄存器中存储所述变量x1、从所述第二存储器中读取变量x3和在所述第三寄存器中存储所述变量x3的读取步骤。
12.如权利要求11的运算方法,其特征在于,所述第一存储器和所述第二存储器是具有一个数据写入端口和一个数据读取端口的双端口存储器。
13.如权利要求11的运算方法,其特征在于,所述第一存储器是具有一个数据写入端口和一个数据读取端口的双端口存储器,而所述第二存储器是具有一个用于数据写入和读取的端口的单端口存储器。
14.如权利要求9的运算方法,其特征在于,所述运算单元是基于分别输入到第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器和第六寄存器的具有r位长度的值x1、x2、x3、x4、x5和x6的、用于提供对于x1+x2·x3+x4·x5+x6的具有2r位或者2r+1位长度的操作结果Q的乘法器加法器。
15.如权利要求14的运算方法,其特征在于,所述多个存储器包括第一存储器、第二存储器和第三存储器,该方法进一步包括:
在所述运算单元的流水线处理中,用于在所述第一存储器中记录所述操作结果Q的低r位QL,并且在所述第六寄存器中记录在所述操作结果Q中排除所述QL位后的高位QH的写入步骤;并且
在所述流水线处理的同一读取阶段,执行从所述第一存储器中读取变量x1和在所述第一寄存器中存储所述变量x1、从所述第二存储器中读取变量x3和在所述第三寄存器中存储所述变量x3并且从所述第三存储器中读取变量x5和在所述第五寄存器中存储所述变量x5的读取步骤。
16.如权利要求15的运算方法,其特征在于,所述第一存储器是具有一个数据写入端口和一个数据读取端口的双端口存储器,而所述第二和第三存储器是具有一个用于数据写入和读取的端口的单端口存储器。
CNB011437383A 2000-12-19 2001-12-19 运算电路和运算方法 Expired - Lifetime CN1221891C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2000386069A JP3709553B2 (ja) 2000-12-19 2000-12-19 演算回路および演算方法
JP386069/2000 2000-12-19
JP386069/00 2000-12-19

Publications (2)

Publication Number Publication Date
CN1366234A true CN1366234A (zh) 2002-08-28
CN1221891C CN1221891C (zh) 2005-10-05

Family

ID=18853225

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB011437383A Expired - Lifetime CN1221891C (zh) 2000-12-19 2001-12-19 运算电路和运算方法

Country Status (8)

Country Link
US (1) US6772942B2 (zh)
EP (1) EP1217512B1 (zh)
JP (1) JP3709553B2 (zh)
KR (1) KR100441036B1 (zh)
CN (1) CN1221891C (zh)
AT (1) ATE440320T1 (zh)
DE (1) DE60139597D1 (zh)
TW (1) TW530260B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360281A (zh) * 2011-10-31 2012-02-22 中国人民解放军国防科学技术大学 用于微处理器的多功能定点mac运算装置
CN101782846B (zh) * 2009-01-15 2012-08-08 夏普株式会社 用于蒙哥马利乘法的运算电路及密码电路
CN102999313A (zh) * 2012-12-24 2013-03-27 飞天诚信科技股份有限公司 一种基于蒙哥马利模乘的数据处理方法
CN101751242B (zh) * 2009-12-22 2013-08-21 无锡中星微电子有限公司 一种数据处理方法及系统
CN106156614A (zh) * 2015-03-25 2016-11-23 北京南瑞智芯微电子科技有限公司 一种抵抗故障攻击的防护方法和装置
CN108153512A (zh) * 2016-12-06 2018-06-12 Gsi 科技公司 四步关联全加器

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2404487A (en) * 2003-07-31 2005-02-02 Sony Uk Ltd Access control for digital storage medium content
JP4408712B2 (ja) 2004-01-26 2010-02-03 富士通マイクロエレクトロニクス株式会社 多倍長データ積和演算処理回路及びモンゴメリ積和剰余演算回路
JP4544870B2 (ja) 2004-01-26 2010-09-15 富士通セミコンダクター株式会社 演算回路装置
JP4663421B2 (ja) * 2005-06-24 2011-04-06 日本電信電話株式会社 離散対数演算装置、方法及びプログラム
US8028015B2 (en) * 2007-08-10 2011-09-27 Inside Contactless S.A. Method and system for large number multiplication
TW201217993A (en) * 2010-10-20 2012-05-01 Huafan University employing operation on decomposed matrices to reduce operation amount for single matrix per unit time for light-weighting matrix operation process in simpler operation circuit
KR101633960B1 (ko) 2013-08-27 2016-06-27 배종훈 유아 세정보조기구
JP6193699B2 (ja) * 2013-09-27 2017-09-06 株式会社ソシオネクスト 演算回路
TWI549090B (zh) * 2014-08-29 2016-09-11 Portable sensing operation device
IL239880B (en) * 2015-07-09 2018-08-30 Kaluzhny Uri Simplified montgomery multiplication
TWI575924B (zh) * 2015-10-06 2017-03-21 瑞昱半導體股份有限公司 解密裝置、方法及電路
TWI580243B (zh) * 2015-10-06 2017-04-21 瑞昱半導體股份有限公司 解密裝置、方法及電路
CN109814838B (zh) * 2019-03-28 2024-04-12 贵州华芯半导体技术有限公司 获取加解密运算中的中间结果组的方法、硬件装置和系统

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3689893A (en) * 1969-05-09 1972-09-05 Olivetti & Co Spa Accounting machine processor
US4539635A (en) * 1980-02-11 1985-09-03 At&T Bell Laboratories Pipelined digital processor arranged for conditional operation
US4488252A (en) * 1982-02-22 1984-12-11 Raytheon Company Floating point addition architecture
JPS6198476A (ja) * 1984-10-19 1986-05-16 Casio Comput Co Ltd カードターミナル
US4985848A (en) * 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
US5146592A (en) * 1987-09-14 1992-09-08 Visual Information Technologies, Inc. High speed image processing computer with overlapping windows-div
US4955024A (en) * 1987-09-14 1990-09-04 Visual Information Technologies, Inc. High speed image processing computer with error correction and logging
US4862407A (en) * 1987-10-05 1989-08-29 Motorola, Inc. Digital signal processing apparatus
KR920006283B1 (ko) * 1988-02-19 1992-08-03 미쯔비시덴끼 가부시끼가이샤 디지탈신호 처리방식
US5337395A (en) * 1991-04-08 1994-08-09 International Business Machines Corporation SPIN: a sequential pipeline neurocomputer
JP2906792B2 (ja) * 1991-11-15 1999-06-21 日本電気株式会社 ディジタルプロセッサ及びその制御方法
US5260898A (en) * 1992-03-13 1993-11-09 Sun Microsystems, Inc. Result cache for complex arithmetic units
JPH07253965A (ja) * 1994-03-16 1995-10-03 Fujitsu Ltd 積和演算器
KR0138859B1 (ko) * 1994-12-06 1998-06-15 양승택 다중 명령어 다중 데이타형 신경망 전용 디지탈 어레이 프로세서 및 이를 이용해 구성된 시스템
JPH0969061A (ja) * 1995-08-30 1997-03-11 Sony Corp ビデオ信号用プロセツサ
AU7550496A (en) * 1995-10-06 1997-04-28 Advanced Micro Devices Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
JP3743789B2 (ja) * 1996-10-24 2006-02-08 株式会社ルネサステクノロジ メモリとプロセサとが同一チップ上に形成されたマイクロコンピュータ
GB2318890B (en) 1996-10-31 2001-01-31 Motorola Ltd Co-processor for performing modular multiplication
US6026421A (en) 1997-11-26 2000-02-15 Atmel Corporation Apparatus for multiprecision integer arithmetic
JP3616897B2 (ja) * 1998-01-27 2005-02-02 富士通株式会社 モンゴメリ法による乗算剰余計算装置
US5939693A (en) * 1998-02-02 1999-08-17 Motorola Inc. Polynomial calculator device, and method therefor
JP3829504B2 (ja) * 1998-02-16 2006-10-04 株式会社デンソー 情報処理装置
DE69828150T2 (de) 1998-03-30 2005-12-15 Rainbow Technologies Inc., Irvine Vom Rechenaufwand her effizientes modulares Multiplikationsverfahren und Gerät
US6560754B1 (en) * 1999-05-13 2003-05-06 Arc International Plc Method and apparatus for jump control in a pipelined processor

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101782846B (zh) * 2009-01-15 2012-08-08 夏普株式会社 用于蒙哥马利乘法的运算电路及密码电路
CN101751242B (zh) * 2009-12-22 2013-08-21 无锡中星微电子有限公司 一种数据处理方法及系统
CN102360281A (zh) * 2011-10-31 2012-02-22 中国人民解放军国防科学技术大学 用于微处理器的多功能定点mac运算装置
CN102360281B (zh) * 2011-10-31 2014-04-02 中国人民解放军国防科学技术大学 用于微处理器的多功能定点乘加单元mac运算装置
CN102999313A (zh) * 2012-12-24 2013-03-27 飞天诚信科技股份有限公司 一种基于蒙哥马利模乘的数据处理方法
CN102999313B (zh) * 2012-12-24 2016-01-20 飞天诚信科技股份有限公司 一种基于蒙哥马利模乘的数据处理方法
CN106156614A (zh) * 2015-03-25 2016-11-23 北京南瑞智芯微电子科技有限公司 一种抵抗故障攻击的防护方法和装置
CN106156614B (zh) * 2015-03-25 2018-12-28 北京南瑞智芯微电子科技有限公司 一种抵抗故障攻击的防护方法和装置
CN108153512A (zh) * 2016-12-06 2018-06-12 Gsi 科技公司 四步关联全加器
CN108153512B (zh) * 2016-12-06 2020-11-10 Gsi 科技公司 四步关联全加器
US11604850B2 (en) 2016-12-06 2023-03-14 Gsi Technology Inc. In-memory full adder

Also Published As

Publication number Publication date
JP2002207589A (ja) 2002-07-26
KR100441036B1 (ko) 2004-07-21
TW530260B (en) 2003-05-01
US6772942B2 (en) 2004-08-10
ATE440320T1 (de) 2009-09-15
EP1217512B1 (en) 2009-08-19
EP1217512A3 (en) 2008-03-05
US20020074391A1 (en) 2002-06-20
DE60139597D1 (de) 2009-10-01
CN1221891C (zh) 2005-10-05
EP1217512A2 (en) 2002-06-26
KR20020050105A (ko) 2002-06-26
JP3709553B2 (ja) 2005-10-26

Similar Documents

Publication Publication Date Title
CN1221891C (zh) 运算电路和运算方法
Samardzic et al. Craterlake: a hardware accelerator for efficient unbounded computation on encrypted data
Liu et al. Efficient ring-LWE encryption on 8-bit AVR processors
Roy et al. HEPCloud: An FPGA-based multicore processor for FV somewhat homomorphic function evaluation
Wang et al. VLSI design of a large-number multiplier for fully homomorphic encryption
Jung et al. Accelerating fully homomorphic encryption through architecture-centric analysis and optimization
Seo et al. SIDH on ARM: faster modular multiplications for faster post-quantum supersingular isogeny key exchange
Kammler et al. Designing an ASIP for cryptographic pairings over Barreto-Naehrig curves
CN1735881A (zh) 用于执行计算操作的方法和系统以及一种设备
CN1577257A (zh) 具有取整和移位的单指令多数据整数高位乘法
Anastasova et al. Time-efficient finite field microarchitecture design for curve448 and ed448 on cortex-M4
Zhai et al. Accelerating encrypted computing on intel gpus
CN1648853A (zh) 多字乘法-累加电路和蒙哥马利模乘法-累加电路
Wang et al. HE-Booster: an efficient polynomial arithmetic acceleration on GPUs for fully homomorphic encryption
CN101014948A (zh) 单指令多数据处理器结构中的互连
Longa Efficient algorithms for large prime characteristic fields and their application to bilinear pairings
CN117240601B (zh) 加密处理方法、加密处理电路、处理终端及存储介质
Nedjah et al. Massively parallel modular exponentiation method and its implementation in software and hardware for high-performance cryptographic systems
CN115348002A (zh) 一种基于多字长乘法指令的Montgomery模乘快速计算方法
CN1696894A (zh) 大数模乘计算乘法器
Seo et al. Consecutive operand-caching method for multiprecision multiplication, revisited
CN110232289A (zh) 椭圆曲线密码的高速倍点运算方法
Cui et al. High-speed elliptic curve cryptography on the NVIDIA GT200 graphics processing unit
WO2023141936A1 (en) Techniques and devices for efficient montgomery multiplication with reduced dependencies
CN1811698A (zh) 大数模幂系统的硬件高基实现方法

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20051005