CN100504758C - 多字乘法-累加电路和蒙哥马利模乘法-累加电路 - Google Patents

多字乘法-累加电路和蒙哥马利模乘法-累加电路 Download PDF

Info

Publication number
CN100504758C
CN100504758C CNB2004100581735A CN200410058173A CN100504758C CN 100504758 C CN100504758 C CN 100504758C CN B2004100581735 A CNB2004100581735 A CN B2004100581735A CN 200410058173 A CN200410058173 A CN 200410058173A CN 100504758 C CN100504758 C CN 100504758C
Authority
CN
China
Prior art keywords
mac
multiplication
data
register
storer
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.)
Expired - Fee Related
Application number
CNB2004100581735A
Other languages
English (en)
Other versions
CN1648853A (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.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
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 Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Publication of CN1648853A publication Critical patent/CN1648853A/zh
Application granted granted Critical
Publication of CN100504758C publication Critical patent/CN100504758C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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/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
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products

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)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种适用于使用单口存储器的多字乘法-累加电路和蒙哥马利模乘法-累加电路。该电路由乘法-累加(MAC)运算器和周边的寄存器组成。该MAC运算器具有位宽不同的被乘数和乘数输入端口,以计算从存储器读出的多字数据的乘积的和。寄存器用作要被提供给MAC运算器的单独的输入端口的多字数据的缓冲存储装置。对在每个时钟周期中被提供给MAC运算器的数据量被调节,使得由MAC运算器在一个时钟周期中所消耗和产生的数据总量将等于或小于存储器在一个时钟周期中所能传输的最大数据量。该特征使得能够使用带宽有限的单口存储器,而不会对MAC运算器的使用效率造成负面影响。

Description

多字乘法-累加电路和蒙哥马利模乘法-累加电路
技术领域
本发明涉及多字乘法-累加(MAC)电路和蒙哥马利(Montgomery)模MAC电路。更具体地说,本发明涉及适于执行蒙哥马利算法的模乘法和累加的多字MAC电路,以及涉及基于该电路的蒙哥马利模MAC电路。
背景技术
近年来,也被称为电子商务(e-commerce)的在线交易市场得到了快速地发展,其中在网络上发生涉及资金转移的商业行为。人们比以前更加频繁地在网络上交换诸如他们的信用卡号码的个人信息。这些重要的个人信息必须得到保护,以免受恶意第三方的窃听以及篡改攻击。因此,使用加密技术以确保电子商务中信息传输的安全是必须的。
一种现代的加密算法——公钥密码系统采用被称为公钥和私钥的一对密钥。发送者使用接收者的公钥对他/她的信息加密,接收者使用他/她自已的秘密的私钥对接收到的信息解密。假设,例如某人正在在线商店购买物品。在线商店的服务器将它们的公钥发送给购买者,使得他/她可以以加密的形式发送他/她的信用卡号码和其他信息。商店能够使用它们的私钥对接收到的信息译码。该系统的优点在于,公钥对公众是完全可得知的。即,公钥密码系统允许我们可以和公开了它们的密钥的任何人进行安全的通信。
公钥算法的一个例子是RSA,该算法是用三位设计人Ron Rivest、Adi Shamir和Leonard Adleman的名字命名的。RSA密码系统依赖于大整数的质数分解的困难性,使用模乘过程来确保密文的安全。即,当给定某个数字x和整数n时,对于计算机来说,计算出x的幂模n相对容易,这里的“模”(mod)是用于计算除以n所得余数的运算符。但是,由于质数分解的困难性,所以当n非常大时,完成逆过程非常地难,这意味着起始数字x不能被轻易地重现。RSA正是基于模算法的这个性质。
但是,RSA与比如数据加密标准(DES)的对称密码系统相比,需要对模乘的更大量的计算,并且这一情况导致需要更快的算法。蒙哥马利(Montgomery)模乘方法是减少计算负担的方案之一。当选择与整数N互质的基数R使得R>N时,蒙哥马利算法从满足0≤T≤R×N的输入值T计算T×R-1mod N(即,T×R-1除以整数N的余数),其中模N被表示为不可约的N阶多项式。R-1指代基数R模N的乘法逆元;即,R和R-1满足R×R-1=1。通过重复进行加法、乘法和移位运算,而不需要要求重复减法的耗时的除法,该算法实现了“模N”的计算。这尤其在N非常大时,是一个显著的优点。具体可见:P.L.Montgomery所著的“ModularMultiplication without Trial Division”,Mathematics of Computation,第44卷,第170期,第519~521页,1985年。
更具体地说,使用输入值A、B、C、R、N和ND,算法以如下方式进行:
T=A×B+C         ............(1)
M=T×ND mod R    ............(2)
X=(M×N+T)/R     ............(3)
Y=X—N           ............(4)
其中,ND满足条件R×R-1—N×ND=1,T和M是表示中间变量的变量。X和Y是输出值,其中,当Y>0时,X将被选作计算的最终输出值,当Y≤0时,Y将被选作最终输出值。每个输入值A、B、C和N将以例如长度为2048位的多字数据的形式给出,并且在给定存储器区域中被存储为一系列数据字。基数R是2的幂(例如,22048),并且存储器仅存储它的指数(该例子中是2048),而不是R本身的值。基本上,输入值ND是类似其他输入值的多字数据。但是,在实际计算中只需要ND的有限数目的位,这取决于所使用的乘法器的位宽。其原因将在后面讨论。
第一等式(1)是乘积求和运算,这通常通过使用具有固定运算数据宽度(例如,32位)的乘法器-累加器(MAC运算器),被实现为(d,e)=a×b+c+d的迭代,其中d和e分别表示在每次迭代中所获得结果的较高位和较低位,并且其中d被返回输入侧以在其后的迭代中使用。更具体地说,下面示出了用于执行第一等式(1)的算法:
(1.1)for(i=0to s-1){
(1.2)     a:=A[i]
(1.3)     d:=0
(1.4)     for(j=0 to s-1{
(1.5)        b:=B[j]
(1.6)        if(i==0)c=C[j]
(1.7)        else c=T[i+j]
(1.8)        (d,e):=a×b+c+d
(1.9)         T[i+j]:=e
(1.10)   }
(1.11)   T[i+s]:=d
(1.12)}
该过程包括使用循环变量i和j的双重循环结构,其中从行1.4到1.10的内循环嵌套在从行1.1到1.12的外循环中,使得迭代计算将从较低位进行到较高位。在行1.1、1.4和1.11中的符号s表示通过将数据长度除以字长得到的常数。括号[]用于指向变量的特定数据字,从其最低有效的字算起。例如,在字长为32位的情况中,A[0]表示变量A底端的32位。
图11是传统的多字MAC电路的框图。该多字MAC电路900由存储器901、MAC运算器902和寄存器903、904、905、906和907组成。存储器901存储用于计算的给定的多字输入值A、B和C。这些输入值A、B和C被从存储器901中读出,并通过寄存器903、904和905逐字被提供给MAC运算器902。MAC运算器902计算A×B+C,结果T经由寄存器907被回写到存储器901中。
图11的传统多字MAC电路900如下进行前述算法。假设,有一个控制电路(未示出)产生循环变量i和j,并将它们提供给存储器901作为它的地址输入。输入值A[i]、B[j]和C[j]是字的数组,每个字的宽度为W位。多字MAC电路900从存储器901读出各输入值A[i]、B[j]和C[j]的值,其中可以读取T[i+j]替代C[j]。这些A[i]、B[j]和C[j]被设定到寄存器903、904和905中,分别作为用于MAC运算器的输入a、b和c的新的数据。MAC运算器902计算(d,e):=a×b+c+d(即,执行行1.8),并且将结果d和e发送到它们对应的寄存器906和907。前一个寄存器906允许d返回到MAC运算器902,作为下一次循环的输入,而后一个寄存器907将e提供给存储器901以替换T[i+j]。
传统的多字MAC电路900以上述的方式进行前面的算法。该过程包括在外循环开始处(行1.2)读取被乘数a之后,在内循环的每次迭代中从存储器901读取输入值b和c,并将输出值e写入到存储器901。为了不停止流水线而以全时钟速率运行MAC运算器902,要求存储器901具有每个时钟周期传输3个字的能力。推荐使用多口存储器设备或多个单独的存储器设备,作为给存储器901足够带宽的解决方案。例如,参见日本专利申请公开No.2002-207589的图1。
返回参考(1)到(5)的算法,第三等式(3)基本上以与(1)同样的方式被执行。由于除数R是2的幂,所以可以简单地通过将被除数右移来完成除以R的运算。前三个等式(1)、(2)和(3)可以逐个地进行,但是由于多字的值ND必须以其全长进行计算,所以该方法并不必然有效。对于这方面,在C.K.Koc,“High-Speed RSA Implementation”,技术报告TR201,RSA实验室,第2.0版,11月,第48~49页,1994年中描述了一种改进的处理技术。根据该文章中所建议的算法,第一等式(1)从底端位到顶端位逐步地计算中间变量T。每次出现T的新值时,该过程对值T的底端的字执行等式(2),从而确定另一个中间变量M的底端的字。利用T和M的这些局部值,该过程前进到等式(3)以计算输出值X的对应的部分。尽管等式(1)中的ND实际上是多字值,但是改进的算法并不同时需要所有的字,而只是每次一个字。
发明内容
本发明提供了一种多字乘法-累加(MAC)电路,该电路能够对每个被提供为多字数据的给定输入值进行MAC运算。该电路包括如下的元件:(a)为多个多字数据提供存储的存储器;(b)MAC运算器,该MAC运算器具有不同位长的被乘数和乘数输入端口,用于计算从存储器读出的多字数据的乘积的和;和(c)用于将多字数据提供给MAC运算器的多个寄存器,其中在每个时钟周期中要被提供的数据量被调节,使得由所述MAC运算器在一个时钟周期中所消耗和产生的数据总量将等于或小于存储器在一个时钟周期中所能传输的最大数据量。
当结合以举例方式图示了本发明优选实施例的附图时,本发明的上述以及其他目的、特征和优点将在下面的说明中变得清楚。
附图说明
图1是根据本发明实施例的多字MAC电路的概念图。
图2示出了根据本发明更具体的实施例的蒙哥马利模MAC电路的结构。
图3示出了在本发明实施例中所使用的MAC运算器的结构。
图4示出了根据本发明实施例的存储器管理。
图5示出了控制命令寄存器的示例。
图6和图7是示出了根据本发明实施例的蒙哥马利模MAC电路的操作的时序图的第一和第二部分。
图8是具有单个MAC运算器的蒙哥马利模MAC电路的框图。
图9是具有三个MAC运算器的蒙哥马利模MAC电路的框图。
图10示出了MAC运算器的结构,该MAC运算器的多输入加法器被中间寄存器分为两级。
图11是传统的多字MAC电路的框图。
具体实施方式
在“背景技术”部分中,我们已经讨论了多字MAC电路为何需要具有高数据传输能力的存储器。但是,为此目的而使用多口存储器将导致芯片尺寸变大。此外,为个别的变量分配单独的存储器使得布线设计更加困难。另一方面,单口存储器占用的芯片空间较少,但是它的传输数据的能力限于每个时钟周期一个字,这对于MAC运算器来说太慢而不能在每个时钟周期产生输出。这意味着,由于缺乏足够的存储器带宽,MAC运算器不能呈现所希望的性能。回想例如为执行等式(1)所设计的多字MAC电路900。因为这种传统的电路仅仅允许在依次接收了3个单字输入值A、B和C之后才开始,所以它耗费至少3个时钟周期来产生单个MAC结果。
鉴于上述情况,本发明的一个目的是提供一种适于利用单口存储器的更加有效的多字乘法-累加电路。
本发明的另一个目的是提供一种适于利用单口存储器的更加有效的蒙哥马利模乘法-累加电路。
多字MAC电路
下面将参考附图对本发明优选的实施例进行详细地说明,其中假设基数R是2的幂,并且N是奇数。
图1是根据本发明实施例的多字乘法-累加(MAC)电路的概念图。为了从给定的多字输入数据A、B和C计算A×B+C,所图示的多字MAC电路10包括存储器11、MAC运算器12和寄存器13、14、15、16和17。存储器11是单口存储器,用于存储输入值A、B和C以及接收计算结果,其中的每个都是例如长度为2048位的多字数据。存储器11的数据宽度由指代“word”的符号“W”标注。即,存储器11提供每个时钟周期一个字(1W)的数据传输速度。
输入三个输入值A、B和C,MAC运算器12进行被乘数A和乘数B的乘法,然后将C与乘积相加,其中被乘数和乘数的数据宽度是不同的。更具体地说,被乘数A的宽度是三个字(3×W),而乘数B的宽度是三分之一个字(W/3)。MAC运算器12从这样的输入值计算A×B+C,并输出结果。
图1最上面的寄存器13存储了A的三个字(3×W)的部分,A是由多个字构成的输入值。括号中的值用作指明输入值的特定部分的索引。具体地说,在A[i]中的索引i在0≤i≤s-1的范围内变化,其中s表示构成输入值A的数据字的数目(即,s等于由A的数据长度除以字长W)。从而,A[i]指从零算起的第i个字,A[0]是最低有效的字。寄存器13存储A[i]、A[i+1]和A[i+2],它们是A的第i个字到第(i+2)个字。这三个字被输入到MAC运算器12作为输入“a”。
下两个寄存器14和15被用来存储输入值B和C,每个寄存器中一个字。这些寄存器14和15中的每一个都起到读取缓冲器的功能,其将给定数据存储一段时间,同时在每次被请求的时候输出所存储的数据的一部分。即,它们通过与时钟信号(未示出)同步地每次发送它们所存储的数据的三分之一(W/3),向MAC运算器12提供输入值“b”和“c”。这样的缓冲功能能够很容易地通过将它们设计为移位寄存器来实现。
倒数第二个寄存器16存储了MAC运算器输出的较高的三个字(3×W)的部分,被称为输出“d”,用于被MAC运算器12自身用作下一次运算周期的输入。相应地,MAC运算器12计算(d,e):=a×b+c+d。
最下面的寄存器17存储了MAC运算器输出的最低的三分之一个字(W/3)的部分,被称为“e”输出。该寄存器17起到写缓冲器的功能,其从MAC运算器12接收输出数据,每次三分之一个字(W/3),并且当累加的数据大小到达一个字(W)时将其写到存储器11中。
照这样来安排寄存器13到17。注意,通过MAC运算器输入端口的不一样的位宽,在每个时钟时刻要被提供给MAC运算器12的数据量被优化,使得被提供给MAC运算器12和由MAC运算器12产生的数据总量将与存储器11所能提供的数据传输速率相平衡。在图1的例子中,MAC运算器12在一个时钟周期中消耗B和C的寄存器值的三分之一(W/3),并且在该周期中产生长度为三分之一个字(W/3)的结果值。注意,因为MAC输出的前三个字(3×W)被返回到寄存器16以在下一个时钟周期中使用,所以没有考虑它们。从而,在当前情况中,在每个单个的时钟周期中,所产生和消耗的数据总量等同于一个字(W),这等于我们为存储器11所假设的最大数据传输能力(W每时钟周期)。该带宽计算证明了使用单口存储器是合理的。
与传统的具有相等输入位宽的MAC运算器不同,本发明的MAC运算器12具有位宽不同的被乘数和乘数的输入端口,用于计算乘积的和。所提出的MAC运算器12的这种非对称设计允许通过使用合适加速技术来提高性能,加速技术比如是分布式进位处理(将在后面说明)和流水线数据处理(也将在后面说明)。此外,对于它们的实现所需的门电路数目,所提出的MAC运算器12与传统的MAC运算器是相当的。
图1的多字MAC电路10如下操作。根据本发明的实施例,多字MAC电路10执行具有双循环结构的算法,除了对寄存器的数据宽度的选择之外,其与传统电路的算法类似。即,其通过重复外循环和内循环,进行MAC运算。外循环从较低位到较高位向MAC运算器12提供输入值A,每次3个字(3W),而内循环提供另外的输入值B和C,每次三分之一个字(W/3)。
开始的时候,多字MAC电路10访问存储器11三次,以读取多字输入数据A的指定部分(A[i]、A[i+1]、A[i+2]),首先发生的是A的底端的三个字。从存储器11所读出的这三个字的值被设定到寄存器13中,用于由MAC运算器12用作它的“a”输入。然后,另外两个读周期接着从存储器11将另外的输入数据B和C的一个字长的部分设定在它们对应的寄存器14和15中。B和C的这些值不是被整个地提供,而是每次只提供W/3给MAC运算器12,以用作它的“b”和“c”输入。
MAC运算器12在一个时钟周期中计算(d,e):=a×b+c+d,产生了三又三分之一个字(3×W+W/3)的输出数据。“d”输出,或MAC输出的较高三个字的部分,被发送到寄存器16。该寄存器值“d”将被用作随后的时钟周期的输入,在该时钟周期中,寄存器14和15将提供“b”和“c”输入的下三分之一(W/3)。另一方面,“e”输出,或MAC输出的最低三分之一个字,被发送到寄存器17以缓冲。该寄存器17的内容直到它被“e”输出的三个实例充满时,将被传输到存储器11。
内循环过程以上述方式结束它的第一次迭代,消耗了在寄存器14和15中的单个字的数据。然后,第二次迭代开始于从存储器11将多字输入值B和C的接下来的有效字加载到它们对应的寄存器14和15中,从而允许MAC运算器12以如上所述的同样的方式计算(d,e):=a×b+c+d。
因为在多字MAC电路10中所使用的存储器是单口存储器,所以不可能同时读出B和C的新的值。为了将这些从寄存器14和15提供给多字MAC电路10的两个输入B和C同步,举例来说,前一寄存器14具有比另一寄存器15更多的位。于是,将B加载到寄存器14的存储器读周期首先发生,该寄存器通过它的扩展位将数据移位,这期间其另一寄存器15能够从存储器11接收C。于是,两个寄存器的值同时到达它们各自的MAC运算器12的输入端口,每次W/3,从而使得MAC运算器12能够继续运行而不中断。这将在下面详细地说明。
在完成对输入数据B和C的所有字的MAC运算时,多字MAC电路10通过读出输入数据A的接下来的有效的三个字,而前进到外循环过程的下一次迭代。在加载新的一组A[i]、A[i+1]和A[i+2]时,多字MAC电路10执行更多的迭代,直到A的整组数据字都被进行了计算。
利用本发明的上述电路结构,MAC运算器12能够使用带宽有限的单口存储器进行操作,而在其使用中不牺牲效率。即,所提出的电路能够在每个时钟周期产生其输出,从而使得可以提供有效的多字乘法器-累加器。
蒙哥马利模乘法-累加
我们将描述作为图1的多字MAC电路10的一个应用的蒙哥马利模乘法-累加。我们所提出的过程用给定的输入数据A、B、C和N执行蒙哥马利模乘法-累加,并将结果X和Y以及Y的符号输出到单口存储器。为了举例说明的目的,我们假设输入数据A、B、C和N的长度为256位,基数R是2256,并且另外的输入数据ND的长度为64位。该过程还使用变量T和M来表示中间结果。给定的256位的输入值A和B每个都被划分为16位的段,被如下表示:
A(255:0)={a15,a14,a13,a12,...a3,a2,a1,a0};
B(255:0)={b15,b14,b13,b12,...b3,b2,b1,b0};
其中,a15和b15是最顶端的段,而a0和b0是最底端的段。该表示法也适用于其他的值和变量C、N、T、M、X和Y。
使用上面定义的输入值和变量,蒙哥马利模乘法-累加的算法如下进行:
T=A×B+C                 ..........  (5)
M={t3,t2,t1,t0}×ND mod 264...     (6)
X=(M×N+T)/264            ........... (7)
Y=X-N                    ............ (8)
其中,当Y>0时,X将被选作计算的最终结果,而当Y≤0时,Y将被选作计算的最终结果。注意,这里在等式(6)和(7)中的除数不是R=2256本身,而是264。这是因为该算法使用了我们先前参考C.K.Koc的“High-Speed RSA Implementation”所提到的技术。更具体地说,在计算等式(5)的过程中,从较低端到较高端按照步进的方式确定中间变量T。每次当T的新的部分变得可用时,算法通过引用T的底端的字计算等式(6),来确定另一中间变量M底端的字。然后,通过将T和M的这些值应用到等式(7)获得输出值X。
图2示出了根据本发明实施例的蒙哥马利模乘法器-累加器(MAC)电路100的结构。为了实现等式(5)到(8)的蒙哥马利模乘法-累加算法,所图示的电路100使用了串联的两个MAC模块110和120,每一个都具有如图1所示的多字MAC电路10的功能。这些MAC模块110和120被耦合到存储器(在图2中未示出)。本实施例的蒙哥马利模MAC电路100还包括减法单元130来计算等式(8)。
尽管图2没有将其示出,但是蒙哥马利模MAC电路100还包括64位宽的单口存储器,其只允许在一个时钟周期中对单个地址的要么读取要么写入的访问。该存储器存储用于计算的输入值A、B、C和N,以及接收将作为计算结果而获得的输出值X和Y。它也可以作为中间变量T和M的临时存储装置。专用于存储其他输入值R和ND的寄存器在图2中也没有被示出,由于它们的数据宽度较小,因此与存储器分开设置。
第一MAC模块110负责等式(5),为此,它使用MAC运算器111(称为“第一MAC运算器”,以与第二MAC模块中的对应部分相区别)和它周边的数据寄存器,这些寄存器包括:A寄存器(A-REG)112、B寄存器(B-REG)113、C寄存器(C-REG)114和D寄存器(D-REG)115。给定输入值A、B和C,第一MAC运算器111计算A×B+C,其中被乘数A和乘数B具有不同的位宽。具体地说,第一MAC运算器111为得到乘积项A×B而进行64位乘16位的乘法。
A寄存器112存储从存储器中读出的给定的多字输入值A的64位部分。B寄存器113存储从存储器中读出的给定的多字输入值B的64位部分,其与时钟信号(未示出)同步地从最低的字开始每次16位地被传输到第一MAC运算器111。此外,B寄存器113具有32位容量的附加缓冲器,因此是“64+32位”。虽然存储器不允许在单个时钟周期中同时读出两个输入值B和C,但是可以通过比C提前两个周期读取B,将B和C同时提供给第一MAC运算器111。
在外循环的第一次迭代中,C寄存器114存储从存储器中读出的给定的多字输入值C的64位部分。在外循环第二次和随后的迭代中,它被用来存储输出值X。C寄存器114自身每次右移16位,因此在与时钟信号(未示出)同步地从最低的字开始将数据传输到第一MAC运算器111。
D寄存器115存储第一MAC运算器111所产生的80位的中间变量T的较高64位。该D寄存器115实际被提供为68位宽的寄存器,以存储由第一MAC运算器111产生并被发回给第一MAC运算器111的四个进位位,这将在下面说明。
利用上述寄存器的配置,第一MAC运算器111以每个时钟周期16位的速率取得输入值B和C。尽管MAC输出具有80位的宽度,但是较高64位将用作下一个时钟周期的MAC输入,这意味着输出数据的净数仅是16位。在这种情况中,每个单个时钟周期中所产生和消耗的数据总量是48位,这低于我们对单口存储器所假设的最大数据传输能力(每个时钟周期64位)。
第二MAC模块120由MAC运算器121(第二MAC运算器)和它周边的数据寄存器组成,这些寄存器包括:F寄存器(F-REG)122、G寄存器(G-REG)123、E寄存器(E-REG)124和H寄存器(H-REG)125。第二MAC运算器121负责等式(6)和(7)。在计算{t3,t2,t1,t0}×ND时,第二MAC运算器121集中于较低的64位,以获得模264的运算。然后将等式(6)的结果应用到随后的等式(7)的处理,于是得到M×N+T。
在计算等式(6)时,F寄存器122存储从另一寄存器(未示出)接收的输入值ND。当计算等式(7)时,它存储从I寄存器133(后面将说明)接收的中间变量M。
G寄存器123存储从存储器中读出的给定的多字输入值N的64位部分。该G寄存器123在每个时钟周期自身右移16位,从而从最低的位开始将N的值提供给第二MAC运算器121。但是,当计算等式(6)的M时,G寄存器123将加载另一个中间变量T的较低16位,以由第二MAC运算器121使用。
E寄存器124存储从等式(5)获得的中间变量T的较低16位,以由第二MAC运算器121使用。当计算等式(6)时,将E寄存器124设为零,因为中间变量T的最低64位{t3,t2,t1,t0}在那时进入了G寄存器123。
H寄存器125存储第二MAC运算器121所产生的80位中的较高64位。该H寄存器125实际上为68位宽的寄存器,另外的四个位的部分存储由第二MAC运算器121所产生并被发回第二MAC运算器121的进位位,如将在下面所说明的。
利用上述寄存器的配置,在处理等式(6)中,第二MAC运算器121以每个时钟周期16位的速率取得中间变量T的值。尽管所产生的MAC输出具有80位的宽度,但是它的较高64位被用作下一个时钟周期的MAC输入,这意味着仅仅是剩余的16位被视为真正的输出。因此,在每个单个时钟周期中所产生和消耗的与等式(6)有关的数据总量是32位。
当计算等式(7)时,第二MAC运算器121以每个时钟周期16位的速率取得输入值N以及中间变量T,同时在每个时钟周期产生16位的输出数据。这些数据消耗和产生加起来一共是48位。从上面的计算可以看出,所需的数据速率低于我们对单口存储器所假设的最大数据传输能力(每个时钟周期64位)。
减法单元130由16位的减法器131和它相关联的寄存器组成,这些寄存器包括:J寄存器(J-REG)132、I寄存器(I-REG)133、K寄存器(K-REG)134以及进位寄存器135和136。16位的减法器131负责等式(8),用于产生最后的计算结果。J寄存器132存储从存储器读出的多字输入值N的64位部分。该J寄存器132每个时钟周期自身右移16位,从而从最低的位开始将N提供给16位减法器131。
I寄存器133接收第二MAC模块120的16位的输出,其要么是由等式(6)获得的中间变量M,要么是等式(7)右侧的M×N+T的值。当中间变量M累积到64位时,它被提供给F寄存器122,以由第二MAC模块120计算等式(6)。M×N+T的值在除以264之后将被写入到存储器中。该除法可以通过跳过存储器写的前四个时钟周期来实现,即,抛弃M×N+T的最低64位。更详细的细节将在下面进行讨论。
K寄存器134累加等式(8)的Y,该值每次从16位的减法器131输出16位,直到数据数量达到64位,并准备好被传输到存储器。
MAC运算器的结构
在讨论图2的蒙哥马利模MAC电路100的操作的细节之前,我们将描述如何构建MAC运算器111和121以及如何管理存储器,并给出控制命令寄存器的例子。
图3示出了在本发明实施例中所使用的MAC运算器的结构。如从该图可以看出的,第一MAC运算器111被设计来进行(64位×16位+16位+64位)的计算,从而输出80位。AIN[63:0]指代输入值A的64位数据,它从图2中所说明的A寄存器112被提供。BIN[15:0]指代输入值B的16位数据,它从B寄存器113被提供。类似地,CIN[15:0]表示输入值C的16位数据,它从C寄存器114被提供。DIN[63:0]指代从D寄存器115所提供的64位数据,其保存了80位宽MAC输出中的顶端的64位。XOUT[79:0]指代第一MAC运算器111的80位的输出数据。YOUT[3:0]和YIN[3:0]表示第一MAC运算器111的4位的进位输出和进位输入,前者被发送到D寄存器115,后者接收自D寄存器115。
第一MAC运算器111由部分乘积发生器201、多输入加法器块202以及多个16位进位加法器203到207组成。部分乘积发生器201计算AIN和BIN的部分乘积,其被标为AB00[63:0]到AB15[63:0]。尽管没有示出细节,但是该部分乘积发生器201被构建为包含四组并联布置的16×16部分乘积电路的与(AND)阵列。多输入加法器块202将这些部分乘积AB00[63:0]到AB15[63:0]、CIN和DIN加总。五个16位的进位加法器203到207共同承担分解进位位的任务。它们仅被要求在每个时钟周期中解决它们自己16位的输出。
进位加法器203到207接收四个进位输入YIN[3:0],并产生四个进位输出YOUT[3:0],对输出数据的每16位部分产生一位进位输出。进位输出YOUT[3:0]被设定在D寄存器115中,以便在MAC操作随后的周期中用作进位输入YIN[3:0]。进位加法器的这种结构使进位信号传播的延迟最小化,并且其因此减少了电路的最后结果的延迟时间,这使得可以提高工作时钟的频率。
当第一MAC运算器111的AIN和BIN具有不同的位宽时,进位加法器的位宽可以被确定为使得它适合AIN或BIN中较小的那一个。
对于位宽的设置进一步地说,传统的MAC运算器具有(W)×(W)+(W)+(W)的结构,其中W表示一个字的长度,因此它们的进位加法器具有宽度W。另一方面,在本实施例中的第一MAC运算器111具有64×16+16+64或(2W)×(W/2)+(W/2)+(2W)的结构,其中字宽W是32位,因此它的全体进位加法器203到207具有宽度W/2或16位。当传统的MAC运算器产生与所提出的第一MAC运算器111相同量的输出时,后者由于其输出延迟时间较小,因此能够更快地运行。必须注意到,如本实施例中的那些的具有被划分开的进位处理体系结构的MAC运算器在计算结束时将需要一些额外的时间来处理待处理的进位。但是,这种被划分开的体系结构的缺点可以从其更高的工作时钟频率及由此得到的运算时间的减少的优势中得到很好地补偿,尤其是在要处理的数据比算术运算器的字长要长得多的多字MAC应用中。尽管我们已经讨论了第一MAC模块110中的第一MAC运算器111,这也适用于第二MAC模块120中的第二MAC运算器121。
存储器数据管理
下面我们将说明在本发明的实施例中如何管理存储器。本实施例的蒙哥马利模MAC电路100被设计成与单个的一体的存储器系统一起运行,该存储器系统存储不同种类的用于计算的数据。每段被存储的数据能够通过它的头地址(top address)及数据长度进行识别。应当可以在计算开始之前为所有的输入值A、B、C和N,以及输出值X和Y分配适当的存储器区域。
尽管在附图中没有明确示出,但是蒙哥马利模MAC电路100处在中央处理单元(CPU)或其他规定输入数据和计算结果的设备的控制下,在下面将其称为“外部控制器”。该外部控制器必须依据等式(8)中所进行的减法运算的结果,选择X或Y作为它的最终计算输出。选择要输出哪一个的步骤将增加外部控制器的存储器管理任务的复杂性。
图4示出了根据本发明实施例的存储器管理。除上述外部控制器外,蒙哥马利模MAC电路100提供多个指针寄存器,作为它的存储器管理机制的一部分。这些指针寄存器保存每个存储器区域的头地址,而不进行复制。在图4的示例中,“Amem”、“Bmem”...“Nmem”是被外部控制器用来指定存储器上的数据区域的名称,它们与单独的指针寄存器唯一地相关联。即,一个指针寄存器允许外部控制器指定单个的特定数据区域。例如,当外部控制器指定“Amem”时,它引用从由与该名称“Amem”相关联的指针寄存器指向的物理存储地址“011000”开始的数据区域。
图5示出了控制命令寄存器的示例。所图示的控制命令寄存器可以由外部控制器读取和写入。如图4所说明的,在存储器中所定义的数据区域通过它们的名称“Amem”到“Nmem”而被引用,为它们的每一个都指派了唯一的四位代码。为了给每个输入值分配存储空间中的区域,图5的控制命令寄存器具有被命名为“N arg”、“A arg”等的六个四位字段,这里“arg”是“自变量”的缩写。这些自变量字段将由表示具体数据区域的四位代码所填充。
图5的控制命令寄存器的长度是32位,其中bit[3:0](最低的四位)为输出值Y指定数据读/写(R/W)区域,bit[7:4]为另一输出值X指定工作区域,其中如果需要的话,X和Y将交换它们的位置。术语“工作区域”指代用于临时数据的存储器区域,其内容可以用其他数据重写或变得不确定。bit[11:8]为输入值C指定数据读/写区域。类似的,bit[15:12]和bit[19:16]分别为另外的输入值B和A指定数据读/写区域。bit[23:20]为另一输入值N指定读/写区域。最后,bit[31]是用于开始或停止计算的控制位。
利用上述存储器管理机制,在读或写特定的输入或输出数据时,蒙哥马利模MAC电路100确定出将使用哪个物理存储器区域。这通过识别由外部控制器已经指定作为数据源或目标的每个数据区域名称,以及引用与该名称相关联的指针寄存器来实现。然后,蒙哥马利模MAC电路100以我们在等式(5)到(8)中已经描述的方式开始计算。所得到输出值X和Y被存储在它们各自的所指定的存储器区域中。如果最后的等式(8)产生Y<0,那么蒙哥马利模MAC电路100必须交换X和Y。该任务能够通过简单地交换相应的指针寄存器的内容(即,所分配的数据区域的头地址)来完成。
外部控制器先前通过指定它们各自的数据区域名称定义了输出数据区域和工作区域。通过改变指针寄存器的值,在保持数据区域名称和它们的预期数据内容之间的关联的一致性的同时,能够移动或交换存储器中的数据条目。这一特征帮助了外部控制器管理存储器区域。
蒙哥马利模乘法-累加过程可以包括存储器值和比如“0”或“1”的常数值之间的运算,如在T=A×1+0的计算中。命令寄存器允许指定常数“0”或“1”,以替代数据区域名称,因此不再需要将这些常数值写入到存储器中。如图5所示,命令寄存器中的自变量字段可以包括特殊代码,该特殊代码不是被指定用于存储器区域的,而是用于常数值的。以这种方式为蒙哥马利模MAC电路100提供常数值。
上述存储器管理机制和控制算法使得外部控制器易于管理蒙哥马利模MAC电路100。虽然这样的机制和算法能够被实现为外部控制器本身的一部分,但是如果外部控制器是能力不足以处理这些任务的嵌入式处理器,则可以不选择该选项。在这种情形中,上述被集成在蒙哥马利模MAC电路100中的指针寄存器将极大地帮助外部控制器来管理存储器中的大量数据,因而使得蒙哥马利模MAC电路100能够表现出它的全部性能。
蒙哥马利模MAC电路的操作
现在参考图6和图7的时序图,我们将更加详细地讨论图2的蒙哥马利模MAC电路100是如何操作的。
图6和图7是示出根据本发明实施例的蒙哥马利模MAC电路的操作的时序图的第一和第二部分。在该时序图最顶端的一行上所示出的是时钟周期序号,其后是指示来自外部控制器的存储器读或写操作的“存储器访问”。标题为“存储器读数据”和“存储器写数据”的第三和第四行分别示出了从存储器读出的数据和向存储器写入的数据。随后的行表示图2中所描述的蒙哥马利模MAC电路100的每个寄存器的值。它们是:A寄存器112的全部64位、B寄存器113的较低16位、C寄存器114的较低16位、D寄存器115的全部64位、E寄存器124的全部16位、F寄存器122的全部64位、G寄存器123的较低16位、H寄存器125的全部64位、I寄存器133的较高16位、J寄存器132的较低16位以及K寄存器133的较高16位。
该时序图中所用符号如下:“-”短划线标记表示计算的中间结果。阴影表示“不确定”。在I寄存器133的行中所示出的划叉标记“×”指代不需要处理的输出值。标注“无关”表示该值可以是“0”或“1”。
处理开始于对于给定输入值A的最低64位A{a3,a3,a1,a0}的步骤。直到T1的时间被用于计算等式(6)的中间变量M。来自外部控制器(未示出)的存储器读访问发生在时钟周期#1到#3,其将三个输入值B、A和C的64位部分依这样的顺序从存储器中读出,并将这些值设定到对应的寄存器中。具体地说,A{a3,a3,a1,a0}被设定到A寄存器112,B{b3,b3,b1,b0}被设定到B寄存器113,C{c3,c3,c1,c0}被设定到C寄存器114。这些值由第一MAC运算器111进行计算。
上述步骤之后的第一MAC运算是{a3,a3,a1,a0}×b0+c0,如早先所解释的那样,本实施例的第一MAC运算器111被设计来一次处理输入值B和C的16位,同时使用另外的输入值A的全部64位。该MAC运算产生中间变量T的较低16位或t0,其被发送到G寄存器123。G寄存器123中的t0的值被提供给第二MAC运算器121,与F寄存器122中的另一个64位的输入值ND一起用于等式(6)的计算。结果的底端16位,实际上是中间变量M的最低16位,进入到I寄存器133的最顶端16位。第一MAC运算器111对剩余的b1到b3以及c1到c3重复上述处理,从而使得I寄存器133通过自身移位来接收更多的16位结果m1、m2和m3。以这种方式,在I寄存器133中获得了M{m3,m3,m1,m0}。
对输出值X的计算开始于时间T1。存储器读周期发生在时钟周期#5,以取得输入值B的最低64位部分B{b3,b3,b1,b0},在下一周期之后的时钟周期,发生另一个读周期,以读取C的最低64位部分,或C{c3,c3,c1,c0}。如早先所提到的,由于B寄存器113具有长度为32位的附加缓冲器,所以B寄存器113和C寄存器114的底端16位被同时提供给第一MAC运算器111。由于A寄存器112已经加载有A的最低64位,所以第一MAC运算器111迅速执行等式(5),并从而每次16位地产生中间变量T。所得到的t0、t1、t2和t3以这一顺序被传输到E寄存器124,用于第二MAC运算器121。还被提供给对第二MAC运算器121的有:F寄存器122中的64位中间变量M和G寄存器123中的64位输入值N。N已经在时钟周期#8从存储器中被读出,并且它的四个16位段(n0、n1、n2和n3)逐个被发送到第二MAC运算器121。第二MAC运算器121计算等式(7),并将结果X设定到I寄存器133的顶端16位。但是,所得到的I寄存器133中的64位值将不被写入到存储器中,因为如我们早先所描述的,等式(7)涉及除以264。图6示出了有划叉标记(“×”)的被抛弃数据。
在时钟周期#9,发生另一个存储器周期,以读取输入值B的第二部分B{b7,b6,b5,b4}。之后是对于其他输入值C和N的类似的读周期,从而允许两个MAC运算器111和121分别计算等式(5)和(7)。所得到的输出值X被每次16位地发送到I寄存器133。当X{x3,x2,x1,x0}已经在I寄存器133中时,在时钟周期#18发生存储器写周期,从而将X的64位输出值存入存储器。
以大致相同的方式计算剩余的输出值X{x7,x6,x5,x4}、X{x11,x10,x9,x8}和X{x15,x14,x13,x12}。例外是计算输出值X的最后四个段X{x15,x14,x13,x12}的时候。在该计算期间,等式(5)中的输入值B和C被强制成为零,在等式(7)中,M是“无关”,N被设定为零。
这以A{a3,a2,a1,a0},即输入值A的前64位的段,结束第一步骤。下一个步骤在T2以A的第二段或A{a7,a6,a5,a4}开始。但是,与第一步骤不同,该新的步骤和随后的步骤使用在存储器中的先前的输出值X代替C。
然后以图7所示的方式处理第三段A{a11,a10,a9,a8}和第四段A{a15,a14,a13,a12}。在最后的步骤中,16位减法器131承担在等式(8)的执行中的任务,以产生Y的输出值。当第二MAC运算器121产生另外的输出X新的16位值时,16位的减法器131从J寄存器132接收输入值N{n3,n2,n1,n0}的各部分。由于在时钟周期#87的存储器读访问,N的值已经被加载到J寄存器132中了。减法运算的结果被每次16位地传输到K寄存器134,这在它们构成64位输出值Y{y3,y2,y1,y0}和在时钟周期#94被一起写入到存储器之前进行。但是,为了给这样的存储器写周期分配时间,需要暂时停止乘法-累加流水线。剩余的输出值Y{y7,y6,y5,y4}、Y{y11,y10,y9,y8}和Y{y15,y14,y13,y12}以与上面相同的方法被计算并被存入存储器中。
如从上面的说明能够看出的那样,所提出的蒙哥马利模MAC电路100在四个时钟周期的时期中产生三个64位的存储器读和一个64位的存储器写。该存储器带宽需求对于电路100足够小,以有效地使用数据宽度为64位的单口存储器进行操作,使得它的内部MAC运算器111和121能够以完全的时钟速率运行。
尽管我们已经说明了具有两个MAC运算器的示例性实施方式,但是本发明不应该限于该特定类型。作为另一种方法,可以引入分时技术,以通过使用单个MAC运算器来执行等式(5)到(7),而不会对MAC运算器使用的效率造成太多负面影响。
作为再一种方法,等式(5)到(7)可以由三个级联的MAC运算器同时处理。尽管其在计算M=T×ND中的较低的MAC运算器使用,但是由于该体系结构总体上提供了流水线上更稳定的数据流,因此它能够进行更快的计算。
此外,考虑到每个输入值A、B和N不是单个的字,而是由多个数据字组成的,因此也可以通过使用四个或更多的串联的MAC运算器对这样的输入值的多个数据字同时处理。这是另一种加快计算的方法。
单MAC运算器结构
图8是具有单个MAC运算器的蒙哥马利模MAC电路的框图。尽管该电路实际上需要用于等式(8)的减法器,但是由于我们已经在图2中对这样的电路的结构和功能进行了讨论,所以该框图就对此进行了省略。基于同样的理由,也从图示中省略了64位宽的用于存储输入值和输出值的单口存储器。
所图示的蒙哥马利模MAC电路300由MAC运算器301和其相关联的寄存器组成,这些寄存器包括:A寄存器(A-REG)302、B寄存器(B-REG)303、C寄存器(C-REG)304、D寄存器(D-REG)305和E寄存器(E-REG)306。前三个寄存器302到304被用来为MAC运算器301提供输入值,比如:64位的输入值A、B、C、N和ND;中间变量M和T;以及输出值X。
A寄存器302是65位的寄存器,其为MAC运算器301提供从存储器读出的A或ND或M的64位的值,并具有从64位部分扩展的1个附加位。B寄存器303存储从存储器读出的A、B、或N的64位的值,并将其每次16位地提供给MAC运算器301。B寄存器303具有附加的32个位,因此其总长度为96位。与此相似,C寄存器304存储从存储器读出的C、T或X的64位的值,并将每次16位地提供给MAC运算器301。
D寄存器305和E寄存器306接收MAC运算器301的输出。D寄存器305保存较高65位,以在下一个周期中用作MAC运算器301的输入,而E寄存器306则在每次进行MAC运算时接收最低的16位。当填充满它的64位容量时,E寄存器306将数据送出到存储器作为中间变量T或输出值X,或送出到A寄存器302作为中间变量M。
图8的蒙哥马利模MAC电路300通过对单个MAC运算器301的分时来处理所有的等式(5)到(7)。该MAC运算器301被配置来执行65×16+16+65(位)的MAC运算,并且根据下面所述的原因产生81位的输出。
在二进制方法用于求幂的情况中,作为蒙哥马利模乘法-累加的应用,该过程可能涉及平方运算(T=A×A),并因而希望加速这类计算。考虑到其双循环过程,可以通过如下过程将迭代的数目减少将近一半:如果i>j则跳过;如果i=j则计算T=T+A[i]×A[j];如果i<j则计算T=T+2×A[i]×A[j]。项2×A[i]×A[j]可以通过将A[i]×A[j]的结果左移1位来实现。在MAC运算器301中实现该功能将增加电路结构的复杂性,这将导致更长的判别途径。根据图8的结构,位移功能可以通过对A寄存器302增加1个附加位来实现,使得如果i<j,则经扩展的A寄存器302将自身左移,以将给定输入值A[i]乘2。本发明的这一方法成功的加快了计算,同时保持了MAC运算器301尽可能的简单。
三MAC运算器结构
尽管在说明本发明时我们已经假设使用单口存储器,但是用于存储输入值和输出值的存储器可以是多口存储器。如已经解释的那样,在最后阶段的进位处理可以被实现为用于更快计算的多个加法器。此外,由于本发明的用于乘数和被乘数的输入数据宽度不相同,所以在MAC运算器的设计中提供了更多的变化。这包括集成许多MAC运算器以增加计算速率,如将在图9中所描述的那样。这些流水线技术可以与多口存储器体系结构的优点相结合,这将使得可以进一步加速。
图9是具有三个MAC运算器的蒙哥马利模MAC电路的框图。该电路对于三个等式(5)到(7)中每一个使用一个专用的MAC运算器。尽管该电路实际上需要用于等式(8)的减法器,但是由于我们已经在图2中对这样的电路的结构和功能进行了讨论,所以该框图对此进行了省略。从图中也省略了用于输入值和输出值的存储器,对于该存储器,我们假设使用数据宽度为512位的三口存储器。
所图示的蒙哥马利模MAC电路400由三个MAC运算器411、421和431以及多个耦合到它们的寄存器组成。第一MAC运算器411计算等式(5),接收来自A寄存器(A-REG)412的输入值A、来自B寄存器(B-REG)413的B以及来自C寄存器(C-REG)414的C或X,其中X是计算的最终结果。MAC输出的顶端512位被设定到D寄存器(D-REG)415中,以用作第一MAC运算器411的下一个输入。
第二MAC运算器421计算等式(6),接收来自H寄存器(G-REG)422的512位的输入值ND、来自E寄存器(E-REG)423的中间变量T,其中T是第一MAC运算器411的最低32位输出。M寄存器(M-REG)424锁存MAC输出的顶端480位,并将它们返回到第二MAC运算器421,以用作下一个输入。
第三MAC运算器431在包括N寄存器(N-REG)432、P寄存器(P-REG)433、R寄存器(R-REG)435、X寄存器(X-REG)436和V寄存器(V-REG)437的周边寄存器以及被耦合到R寄存器(R-REG)435的多路转换器(MUX)434的合作下计算等式(7)。N寄存器432保存512位的输入值N。P寄存器433或保存512位的输入值N,或接收第二MAC运算器的输出(即,中间变量M)的最低32位。该P寄存器433为第三MAC运算器每次16位地提供它所存储的数据。多路转换器434选择第一MAC运算器的输出(即,中间变量T)的底端32位或其顶端480位。所选择的值被设定到R寄存器435,以用作第三MAC运算器431的输入。第三MAC运算器431的输出进入到两个寄存器:较低32位进入X寄存器436,较高512位进入V寄存器437。X寄存器436取得各个所产生的32位数据,并在被填满其512位的容量时,将这些数据发送到存储器作为输出值X。V寄存器437的512位数据被返回到第三MAC运算器431或被写入到存储器。
图10示出了MAC运算器的结构,该MAC运算器的多输入加法器通过插入中间寄存器而被分为两个块。所图示的MAC运算器411由部分乘积发生器501、多输入加法器块502、中间寄存器503、四输入加法器504以及544位的进位分解加法器505组成。部分乘积发生器501是16个部分乘积运算器501-1、501-2、...、501-16的平行阵列,其中的每个进行32位的值的乘法。
部分乘积发生器501接收来自A寄存器412的512位,它们被分配到16个部分乘积运算器501-1、501-2、...、501-16中,每个分配32位。另一方面,B寄存器413将它的底端32位提供给所有的部分乘积运算器501-1、501-2、...、501-16,同时每次自身右移32位。所得到的部分乘积在多输入加法器块502中被加总,并通过中间寄存器503被发送到四输入加法器504。该四输入加法器504还接收来自D寄存器415的512位的数据和来自C寄存器414的32位的数据,它们被加到A×B的值上。最后,544位的进位分解加法器505处理四输入加法器504的进位输出,从而将结果的顶端512位发送到D寄存器415,并将剩余的32位发送到E寄存器416。
上述结构使用中间寄存器503,来在多输入加法器块502和四输入加法器504之间的位置将第一MAC运算器411分为两级,因此使得这两级能够以流水线的方式操作。如果第一级(多输入加法器块502)和第二级(544位进位分解加法器505)在它们的延迟时间方面相等,那么第一MAC运算器411的处理速率将被最大化。第一级的延迟时间是乘数大小(即需要相加的项的数目)的函数。另一方面,第二部分的延迟时间是第一MAC运算器411输出位宽的函数。
考虑其被乘数和乘数的输入端口具有相同位宽的MAC运算器。由于在前的多输入加法级将比在后的进位分解级具有大得多的延迟时间,所以我们将不能够通过按照如上所述的相同的方式插入中间寄存器503来提高这类MAC运算器的速率。另一方面,本发明的第一MAC运算器411具有位宽不同的被乘数和乘数输入端口。这意味着可以选择适当的位宽,使得两级具有平衡的延迟时间。所提出的MAC运算器411从而可以具有流水线结构的总体性能优势。
第一MAC运算器411的上述特征也适用于第二MAC运算器421,因为它们结构相似。第三MAC运算器431除它具有513位加法器功能外,与其他的运算器基本类似。我们所以省略了对它们的说明。
下面给出图9的电路如何进行蒙哥马利模乘法-累加的概述,首先假设每个输入值不超过512位。
从给定的输入值A、B和C,以及输入值X的底端32位,第一MAC运算器411计算中间变量T,并输出它的底端32位。基于另一给定的输入值ND和在前一阶段所获得的中间变量T的底端32位,第二MAC运算器421计算另一个中间变量M,并输出它的底端32位。第三MAC运算器431接收另一给定的输入值N、从第二MAC运算器421所提供的中间变量M的底端32位以及从第一MAC运算器411所提供的中间变量T的底端32位。从这些输入,第三MAC运算器431计算输出值X,并发送其底端32位。三个MAC运算器411、421和431将它们各自的任务重复16次。在这些迭代结束时,图9的电路400将使D寄存器415中的中间变量T的顶端512位、V寄存器437中的输出值X的顶端512位、X寄存器436中的输出值的底端512位变得可用。之后,结束第三MAC运算器431的周期,其中其将由多路转换器434所选择的中间变量T的较高位与输出值X的较低位相加。该结果被设定到V寄存器437中,并且在该V寄存器437中的X的较高的位被写入到存储器中,作为计算的最终结果。
当数据大小大于512位时,图9的蒙哥马利模MAC电路400如下操作:首先,使用给定的输入值A的最低有效的512位,蒙哥马利模MAC电路400将上述过程重复16次,同时将所有产生的中间变量到M保存到P寄存器433中。然后,电路400将所得到的中间变量M传输到N寄存器432,并用从存储器读出的输入值N加载P寄存器433,这等同于交换N寄存器432和P寄存器433的内容。第三MAC运算器431继续每次32位地计算输出值X,接收512位的M、N的底端32位以及T的底端32位。通过对给定输入值A的整个长度重复上述过程,电路400获得了对超过512位的大输入值的蒙哥马利模乘法-累加。
结论
对上述说明概括地说,所提出的多字MAC电路具有至少一个拥有不同位宽的被乘数和乘数输入端口的MAC运算器。该MAC运算器周边有用于存储从存储器读出的数据的多个寄存器。由于在每个时钟周期中要被提供给MAC运算器的数据量被调整,使得在一个时钟周期中由MAC运算器所消耗和产生的数据总量将等于或小于存储器在一个时钟周期中所能传输的最大数据量。该MAC运算器能够使用带宽有限的单口存储器,而不牺牲其使用的效率。单口存储器没有多口存储器复杂,这意味着所提出的MAC电路可以被实现而不占用太多芯片空间。
所提出的MAC电路能够被用来使用RSA公钥密码系统对数据加密或解密,这涉及到模算术操作。因此,本发明适用于,但不限于,含有这样的密码芯片的ID卡或类似设备。
已经假设基数R是2的幂并且N是奇数,对本发明进行了说明。但是,我们并不试图将本发明限制于该条件。本发明在基数大于整数N且与整数N互质时,也能很好地工作。
前面被视为仅仅是对本发明的原理的示例表示。而且,由于许多的修改和改变对于本领域的普通技术人员来说是容易的,所以不希望将本发明限制于所图示和说明的具体构造和应用,因此,所有适合的修改和等同物可以被视为落入所附权利要求及其等同物中的发明范围之内。

Claims (8)

1.一种对每个被提供为多字数据的给定输入值进行乘法-累加运算的多字乘法-累加电路,包括:
为多个多字数据提供存储的存储器;
乘法-累加运算器,所述乘法-累加运算器具有位宽不同的被乘数和乘数输入端口,以计算从所述存储器读出的所述多字数据的乘积的和;
用于将所述存储器中所存储的所述多字数据的一部分存储作为要被输入到所述乘法-累加运算器的输入值的多个第一寄存器;和
用于将乘法-累加运算器的输出的一部分存储作为要在下一运算中使用的值的第二寄存器,
其中,所述多个第一寄存器向所述乘法-累加运算器提供输入值,使得在每个时钟周期中所要提供的输入值的数据量被调节成使得由所述乘法-累加运算器在一个时钟周期中所消耗和产生的数据总量将等于或小于所述存储器在一个时钟周期中所能传输的最大数据量。
2.根据权利要求1所述的多字乘法-累加电路,其中所述存储器是单口存储器。
3.根据权利要求1所述的多字乘法-累加电路,其中所述乘法-累加运算器包括多个进位加法器。
4.一种对从存储器读出的多字数据进行蒙哥马利模乘法-累加运算的蒙哥马利模乘法-累加电路,所述电路包括至少一个乘法-累加模块,所述模块包括:
乘法-累加运算器,所述乘法-累加运算器具有位长不同的被乘数和乘数输入端口,以计算从所述存储器读出的多字数据的乘积的和;和
用于将从所述存储器读出的所述多字数据的一部分存储作为要被输入到所述乘法-累加运算器的输入值的多个第一寄存器;和
用于将乘法-累加运算器的输出的一部分存储作为要在下一运算中使用的值的第二寄存器,
其中,所述多个第一寄存器向所述乘法-累加运算器提供输入值,使得在每个时钟周期中所要提供的输入值的数据量被调节成使得由所述乘法-累加运算器在一个时钟周期中所消耗和产生的数据总量将等于或小于所述存储器在一个时钟周期中所能传输的最大数据量。
5.根据权利要求4所述的蒙哥马利模乘法-累加电路,还包括与所述至少一个乘法-累加模块串联的另一个乘法-累加模块。
6.根据权利要求4所述的蒙哥马利模乘法-累加电路,其中所述存储器是单口存储器。
7.根据权利要求4所述的蒙哥马利模乘法-累加电路,其中所述乘法-累加运算器包括多个进位加法器。
8.根据权利要求4所述的蒙哥马利模乘法-累加电路,还包括指针寄存器,所述指针寄存器存储在存储器中的每段多字数据的头地址,其中:
所述指针寄存器与数据区域名称相关联,其中外部控制器通过所述数据区域名称指定在所述存储器中的数据源和目标,以及
通过不改变由所述外部控制器所指定的所述数据区域名称,而只交换被包含在与所述被指定的数据区域名称相关联的所述指针寄存器中的所述头地址,使两个数据源或两个目标被相互替代。
CNB2004100581735A 2004-01-26 2004-08-13 多字乘法-累加电路和蒙哥马利模乘法-累加电路 Expired - Fee Related CN100504758C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004017205A JP4408712B2 (ja) 2004-01-26 2004-01-26 多倍長データ積和演算処理回路及びモンゴメリ積和剰余演算回路
JP017205/2004 2004-01-26

Publications (2)

Publication Number Publication Date
CN1648853A CN1648853A (zh) 2005-08-03
CN100504758C true CN100504758C (zh) 2009-06-24

Family

ID=34650749

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100581735A Expired - Fee Related CN100504758C (zh) 2004-01-26 2004-08-13 多字乘法-累加电路和蒙哥马利模乘法-累加电路

Country Status (5)

Country Link
US (1) US8078661B2 (zh)
EP (1) EP1560110A1 (zh)
JP (1) JP4408712B2 (zh)
KR (1) KR100682354B1 (zh)
CN (1) CN100504758C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105814536A (zh) * 2013-12-28 2016-07-27 英特尔公司 Rsa算法加速处理器、方法、系统以及指令

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4544870B2 (ja) * 2004-01-26 2010-09-15 富士通セミコンダクター株式会社 演算回路装置
EP1975906B1 (en) 2006-01-13 2012-07-04 Fujitsu Ltd. Montgomery s algorithm multiplication remainder calculator
WO2008114315A1 (ja) 2007-03-19 2008-09-25 Fujitsu Limited Fault攻撃対策機能を搭載した組み込み装置
US8028015B2 (en) * 2007-08-10 2011-09-27 Inside Contactless S.A. Method and system for large number multiplication
JP5097138B2 (ja) * 2009-01-15 2012-12-12 シャープ株式会社 モンゴメリ乗算のための演算回路及び暗号回路
JP5175983B2 (ja) * 2009-09-24 2013-04-03 株式会社東芝 演算装置
US8478969B2 (en) * 2010-09-24 2013-07-02 Intel Corporation Performing a multiply-multiply-accumulate instruction
US9343124B1 (en) * 2011-07-29 2016-05-17 Altera Corporation Method and system for operating a multi-port memory system
US9081657B2 (en) * 2011-10-13 2015-07-14 Conexant Systems, Inc. Apparatus and method for abstract memory addressing
US9384168B2 (en) 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration
US10003460B2 (en) * 2013-10-10 2018-06-19 Nippon Telegraph And Telephone Corporation Secret quotient transfer device, secret bit decomposition device, secret modulus conversion device, secret quotient transfer method, secret bit decomposition method, secret modulus conversion method, and programs therefor
US11262982B2 (en) * 2018-07-23 2022-03-01 SK Hynix Inc. Computation circuit including a plurality of processing elements coupled to a common accumulator, a computation device and a system including the same
JP7129857B2 (ja) * 2018-09-07 2022-09-02 ルネサスエレクトロニクス株式会社 積和演算装置、積和演算方法、及びシステム
CN109669666B (zh) * 2018-11-06 2022-12-16 清华大学 乘累加处理器
CN109669670B (zh) * 2018-12-26 2020-09-22 贵州华芯通半导体技术有限公司 用于蒙哥马利模乘中的不均等分块的数据处理方法及装置
US20220114431A1 (en) * 2019-01-28 2022-04-14 Rambus Inc. Memory-integrated neural network
US11475102B2 (en) * 2019-02-21 2022-10-18 Samsung Electronics Co., Ltd. Adaptive matrix multiplication accelerator for machine learning and deep learning applications
CN109933304B (zh) * 2019-03-20 2022-06-21 成都三零嘉微电子有限公司 适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法
DE102020102453A1 (de) * 2020-01-31 2021-08-05 Infineon Technologies Ag Integrierte Schaltung zum modularen Multiplizieren von zwei ganzen Zahlen für ein kryptographisches Verfahren und Verfahren zur kryptographischen Verarbeitung von Daten basierend auf modularer Multiplikation
WO2021217034A1 (en) * 2020-04-23 2021-10-28 University Of Southern California Design of high-performance and scalable montgomery modular multiplier circuits
CN113076061A (zh) * 2021-03-18 2021-07-06 四川和芯微电子股份有限公司 单ram多模块数据的缓存方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG52303A1 (en) * 1993-12-20 1998-09-28 Motorola Inc Arithmetic engine
GB2291515B (en) * 1994-07-14 1998-11-18 Advanced Risc Mach Ltd Data processing using multiply-accumulate instructions
US5787025A (en) * 1996-02-28 1998-07-28 Atmel Corporation Method and system for performing arithmetic operations with single or double precision
US5941940A (en) * 1997-06-30 1999-08-24 Lucent Technologies Inc. Digital signal processor architecture optimized for performing fast Fourier Transforms
US5847981A (en) * 1997-09-04 1998-12-08 Motorola, Inc. Multiply and accumulate circuit
US6085210A (en) 1998-01-22 2000-07-04 Philips Semiconductor, Inc. High-speed modular exponentiator and multiplier
US6484194B1 (en) 1998-06-17 2002-11-19 Texas Instruments Incorporated Low cost multiplier block with chain capability
KR100322740B1 (ko) * 1998-07-10 2002-03-08 윤종용 모듈러 연산장치 및 그 방법
KR100325430B1 (ko) * 1999-10-11 2002-02-25 윤종용 상이한 워드 길이의 산술연산을 수행하는 데이터 처리장치 및 그 방법
US6557022B1 (en) * 2000-02-26 2003-04-29 Qualcomm, Incorporated Digital signal processor with coupled multiply-accumulate units
US6957242B1 (en) * 2000-10-26 2005-10-18 Cypress Semiconductor Corp. Noninterfering multiply-MAC (multiply accumulate) circuit
JP3709553B2 (ja) * 2000-12-19 2005-10-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 演算回路および演算方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A Scalable Architecture for Montgomery Multiplication. Alexandre F. Tenca ,Cetin K. Koc.Cryptographic Hardware and Embedded Systems. 1999
A Scalable Architecture for Montgomery Multiplication. Alexandre F. Tenca ,Cetin K. Koc.Cryptographic Hardware and Embedded Systems. 1999 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105814536A (zh) * 2013-12-28 2016-07-27 英特尔公司 Rsa算法加速处理器、方法、系统以及指令
US10187208B2 (en) 2013-12-28 2019-01-22 Intel Corporation RSA algorithm acceleration processors, methods, systems, and instructions

Also Published As

Publication number Publication date
JP4408712B2 (ja) 2010-02-03
US8078661B2 (en) 2011-12-13
CN1648853A (zh) 2005-08-03
KR100682354B1 (ko) 2007-02-15
EP1560110A1 (en) 2005-08-03
US20050165876A1 (en) 2005-07-28
JP2005209095A (ja) 2005-08-04
KR20050077001A (ko) 2005-07-29

Similar Documents

Publication Publication Date Title
CN100504758C (zh) 多字乘法-累加电路和蒙哥马利模乘法-累加电路
JP3525209B2 (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
EP1293891B2 (en) Arithmetic processor accomodating different finite field size
CN101097511B (zh) 使用折叠的模归约
JP2722411B2 (ja) モンゴメリ法によるモジュラリダクションの実施方法
JP3636740B2 (ja) モジュラ・乗算を遂行するための超小形電子系装置、および超小形電子系装置を使用する方法
US7277540B1 (en) Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
JP4955182B2 (ja) 整数の計算フィールド範囲の拡張
US6035317A (en) Modular arithmetic coprocessor comprising two multiplication circuits working in parallel
CN101826142B (zh) 一种可重构椭圆曲线密码处理器
CN100527072C (zh) 用于执行蒙哥马利型模乘法的装置及方法
CN103761068B (zh) 优化的蒙哥马利模乘硬件
KR20050088506A (ko) 다중 세정도를 지원하는 확장형 몽고메리 모듈러 곱셈기
CN101834723A (zh) 一种rsa算法及其ip核
IL97413A (en) Microcircuit for the implementation of rsa algorithm and ordinary and modular arithmetic in particular exponentiation with large operands
TW384447B (en) Processor with reconfigurable arithmetic data path
CN102122241A (zh) 一种适用于素域和多项式域的模乘模除器
Xie et al. Novel bit-parallel and digit-serial systolic finite field multipliers over $ GF (2^ m) $ based on reordered normal basis
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
Wang et al. TCPM: A reconfigurable and efficient Toom-Cook-based polynomial multiplier over rings using a novel compressed postprocessing algorithm
US6963644B1 (en) Multi-word arithmetic device for faster computation of cryptosystem calculations
Lee et al. Area-Delay Efficient Digit-Serial Multiplier Based on $ k $-Partitioning Scheme Combined With TMVP Block Recombination Approach
CN109284085B (zh) 一种基于fpga的高速模乘和模幂运算方法及装置
CN116561819A (zh) 一种基于Toom-Cook环上多项式乘法的加解密方法及环上多项式乘法器
US5912904A (en) Method for the production of an error correction parameter associated with the implementation of modular operations according to the Montgomery method

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: FUJITSU MICROELECTRONICS CO., LTD.

Free format text: FORMER OWNER: FUJITSU LIMITED

Effective date: 20081024

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

Effective date of registration: 20081024

Address after: Tokyo, Japan, Japan

Applicant after: Fujitsu Microelectronics Ltd.

Address before: Kanagawa

Applicant before: Fujitsu Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: FUJITSU SEMICONDUCTORS CO., LTD

Free format text: FORMER NAME: FUJITSU MICROELECTRON CO., LTD.

CP03 Change of name, title or address

Address after: Kanagawa

Patentee after: Fujitsu Semiconductor Co., Ltd.

Address before: Tokyo, Japan, Japan

Patentee before: Fujitsu Microelectronics Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090624

Termination date: 20200813