CN100356317C - 蒙哥马利乘法器处理元件中的部件精简 - Google Patents

蒙哥马利乘法器处理元件中的部件精简 Download PDF

Info

Publication number
CN100356317C
CN100356317C CNB028192451A CN02819245A CN100356317C CN 100356317 C CN100356317 C CN 100356317C CN B028192451 A CNB028192451 A CN B028192451A CN 02819245 A CN02819245 A CN 02819245A CN 100356317 C CN100356317 C CN 100356317C
Authority
CN
China
Prior art keywords
initial parameter
register
treatment element
memory element
accumulator register
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
CNB028192451A
Other languages
English (en)
Other versions
CN1561479A (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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN1561479A publication Critical patent/CN1561479A/zh
Application granted granted Critical
Publication of CN100356317C publication Critical patent/CN100356317C/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/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

Abstract

一种具有一串处理元件的蒙哥马利乘法器电路,通过使初始参数传播通过用于其他目的的寄存器,而在每个处理元件中使用更少的电路逻辑。每个处理元件中的累加寄存器被用来将初始参数传播通过所述串。在一个实施例中,初始参数首先被传播通过地址寄存器直到其到达所述串的末端,并随后通过累加寄存器以相反方向回送。在一个实施例中,使用在执行蒙哥马利乘法中所使用的同样的逻辑元件,以在蒙哥马利乘法器的处理元件中,预先计算蒙哥马利乘法中使用的至少一个参数的倍数。

Description

蒙哥马利乘法器处理元件中的部件精简
技术领域
本发明一般地涉及计算机。具体而言,本发明涉及在蒙哥马利(Montgomery)乘法器中使用的处理元件。
背景技术
许多应用对大的数所采用的算法使用了乘法和模块精简的组合,这些应用包括诸如Rivest-Shamir-Adleman(RSA)算法的公共密钥数据加密/解密。具体而言,RSA算法重复地实现XY mod Z的运算(X乘以Y除以Z的余数)。当处理大的数字(例如在基于RSA的数据安全中常用的1024位的数)时,此算法包括至少两个耗时的运算(乘法和除法)以及余数的检测。通常使用Montgomery乘法器来实现此算法。通过将X、Y和Z转换成诸如A、B和M的其他数,执行被转换的运算以及将结果逆转换,Montgomery乘法器使用该转换来在单次运算中执行XY mod Z。对于长序列的乘法,如果被转换的运算比实际的运算耗时更少,那么用Montgomery乘法器来确定最后答案的总时间可以显著地减少。
一些Montgomery乘法器使用线性脉动阵列(linear systolic array),即一串相同的处理元件(PE),其中每个PE对每个所涉及数的一部分(例如4位)进行处理。该串包含足够多的PE来容纳所涉及的最大的数,这包括中间结果。运算期间,在相邻的PE之间中间信息沿两个方向输入。
在传统的线性脉动阵列Montgomery乘法器(LSAMM)中,三个参数中的两个(通常是B和M)通过连接到每个PE的总线被预装到PE中。将多位的总线按线路连接到上百个PE所需的连接使得电路的复杂度显著增加。传统的LSAMM在每个PE中结合了解码电路来解码多位进位运算。每个PE必须包括专用来执行总线接口和进位解码操作的电路系统,所以总线操作和多位进位所需的总电路系统可通过将此额外逻辑乘以LSAMM中PE的数量而确定。因为Montgomery乘法器通常实现为具有固定量的可用电路系统的现场可编程门阵列(FPGA),所以所有额外的逻辑占用了许多门电路,否则这些门电路可用来增加PE的数量或者可用于其他功能。
在Montgomery乘法开始之前,至少一个参数的倍数必须被载入传统的Montgomery乘法器中。在软件中预先计算这些非常大的数的倍数是一个耗时的过程,这使得任何需要Montgomety乘法器的运算变慢。
发明内容
根据本发明的一个方面,提供了一种装置,该装置包括:线性脉动阵列蒙哥马利乘法器的第一处理元件中的第一存储元件;和所述第一处理元件中的第一累加寄存器,其被耦合到相邻的第二处理元件中的第二累加寄存器,来将第一初始参数传播通过所述第一和第二累加寄存器,所述第一累加寄存器还被耦合到所述第一存储元件,来将所述第一初始参数的一部分载入所述第一存储元件。
根据本发明的另一方面,提供了一种系统,该系统包括:处理器;存储器,其被耦合到所述处理器;和线性脉动阵列蒙哥马利乘法器中的一组串连处理元件,所述线性脉动阵列蒙哥马利乘法器被耦合到所述处理器,所述串连处理元件组具有累加寄存器,在开始蒙哥马利乘法之前,所述串连处理元件组将初始参数传播通过所述累加寄存器,并将来自所述累加寄存器的所述初始参数存储到所述处理元件中的存储元件中,其中所述累加寄存器将在所述蒙哥马利乘法期间保持中间结果。
本发明还提供了另一种装置,包括:线性脉动阵列蒙哥马利乘法器的第一处理元件中的第一存储元件;所述第一处理元件中的加法器,其被耦合到所述第一存储元件,来计算第一初始参数的倍数的一部分;和所述第一处理元件中的累加寄存器,其被耦合到所述加法器和所述第一存储元件,以将所述第一初始参数的倍数的所述部分载入所述第一存储元件;其中所述第一存储元件、所述加法器和所述累加寄存器还将用所述第一初始参数的倍数的所述部分来执行蒙哥马利乘法。
在本发明的一个实施例中,提供了一种方法,包括:将初始参数传播通过线性脉动阵列蒙哥马利乘法器中的一组处理元件;以及将所述初始参数载入所述处理元件组的存储元件中。在本发明的替换实施例中,提供了一种方法,包括:将初始参数和控制代码载入线性脉动阵列蒙哥马利乘法器,使得所述线性脉动阵列蒙哥马利乘法器中的处理元件将所述初始参数传播通过所述处理元件,并将所述初始参数载入所述处理元件中的存储元件中。
附图说明
通过参考以下说明和用来图示本发明实施例的附图,可以最好地理解本发明。在附图中:
图1示出了根据本发明一个实施例的系统。
图2示出了根据本发明一个实施例的Montgomery乘法器。
图3示出了根据本发明一个实施例的处理元件的示意图。
图4A示出了根据本发明的一个实施例,直接将初始参数载入处理元件串中的回送逻辑。
图4B示出了根据本发明的一个实施例,间接将初始参数载入处理元件串中的回送逻辑。
图5示出了根据本发明的一个实施例,使用回送逻辑的一种实现的流程图。
具体实施方式
在以下说明中,给出了大量的具体细节以提供对本发明的透彻理解。但是,应该理解到没有这些具体细节也可以实施本发明。在其他情况下,没有详细示出公知的电路、结构和技术,以免混淆本发明。
可以在硬件、软件或固件中实现本发明。本发明还可实现为存储在机器可读介质上的指令,该指令可被至少一个处理器读取并执行来运行这里所描述的操作。机器可读介质可包括能以机器(例如计算机)可读的形式存储或传送信息的任何结构。例如,机器可读介质可包括只读存储器(ROM);随机访问存储器(RAM);磁盘存储介质;光存储介质;闪存设备;电、光、声或其他形式的传播信号(例如载波、红外信号、数字信号等)以及其他。
本说明的各个部分用术语“右”、“左”、“右手”、“左手”、“最右”或“最左”来指本发明的多个部分。这些术语指的是图中所示出的相对方向,不应解释为对本发明物理实现的限制。
各个实施例使用线性脉动阵列Montgomery乘法器(LSAMM)设计,将初始参数的多个位载入具体的处理元件(PE)中并通过串行连接的PE串来传播这些位,这样就不再需要并行连接到所有PE的总线了。串行串中的多个PE不会阻止位组在PE之间被并行地转移。在本发明的上下文中,“传播”指将位组在PE串中从PE传送到PE。“传播通过”某个具体的PE包括以下的任意一种:1)开始传播(未从一个相邻的PE接收位组,但向另一个相邻的PE发送位组);2)结束传播(从一个相邻的PE接收位组,但不向另一个相邻的PE发送位组);和3)继续传播(从一个相邻的PE接收位组,并向另一个相邻的PE发送位组)。传播不要求每个位组都到达串中的每个PE。
在一个实施例中,LSAMM还使用执行Montgomery乘法的同一电路系统,来对参数所有所需的倍数进行预先计算。当与传统的LSAMM相比时,多次使用各个电路元件降低了每个PE所需的逻辑的数量。在一个实施例中,Montgomery乘法器实施为具有固定量的可用逻辑的FPGA。节省了电路系统就可在FPGA中包括更多的PE。
图1示出了根据本发明一个实施例的系统。在图1所图示的实施例中,系统100包括通过输入/输出(I/O)逻辑130和存储器总线160被耦合到LSAMM 150的处理器(CPU)110。在一个实施例中,系统100还包括耦合到I/O逻辑130的加速图形处理器(AGP)120和存储器140、以及将各个其他设备(未示出)耦合到I/O逻辑130的I/O总线170。在图1的实施例中,LSAMM 150包括连接到存储器总线160的Montgomery乘法器(MM)控制器180,这允许LSAMM 150可作为一块存储器来由CPU 110和/或其他设备寻址,但其他实施例具有以其他方式耦合的LSAMM 150。LSAMM 150还包括一串串行连接的处理元件(PE)190-x,其通过该串的末端而连接到MM控制器180,使得可通过在该串的末端处的PE,来向串提供一组参数(例如A、B、M)以及从串接收结果(例如R)。在图1的实施例中,能向LSAMM 150写入一组参数并能从LSAMM 150读取最终结果的任何设备,可以使用LSAMM 150来执行Montgomery乘法。尽管在整个本公开中使用术语“A”、“B”和“M”来表示Montgomery乘法中的参数,但是这些只是一般的名称。可以使用任何其他的术语而不偏离本发明的精神和范围。
图2示出了根据本发明一个实施例的线性脉动阵列Montgomery乘法器。在图2所图示的实施例中,一串串行连接的PE被用来执行具有一组参数A、B、M的Montgomery乘法,其中每个参数都以每个PE一个数位(digit)分布在PE中。数位定义为由每个PE处理的每个参数的位数。在整个本公开内所使用的示例实施例中,一个数位是4位的十六进制数,并且每个PE一次运算A的4位和/或B的4位和/或M的4位。在其他实施例中,使用其他大小的数位,并且相应地每个PE的逻辑就不同于这些示例。
图2所图示的实施例示出了一串N+3个PE,编号190-0到190-(N+2),并标为PE-0到PE-(N+2)。在一个实施例中,LSAMM 150对1024位的参数进行运算,N的值是256。在本实施例中PE的数目是259,包括256个PE来容纳参数的256个十六进制数位,以及3个附加的PE来容纳处理期间的中间结果。Montgomery乘法器(MM)控制器180通过每次使一个数位经过PE-0将参数A、B、M传递到串中来控制处理。MM 180还将下面所描述的控制代码c和其他值q传送到PE-0中,以传播通过PE串。
在一个实施例中,通过顺序地将每个参数B和M每次一个数位地、从MM控制器180到PE-0、PE-1、PE-2等向左传递,直到每个参数都分布在PE-0到PE-N中,这样来设置PE串以用于Montgomery乘法。在一个实施例中,在PE中计算每个参数B和M的倍数并存储在PE中。为执行实际的Montgomery乘法,参数A随后被顺序地每次一个数位地、从MM控制器180到PE-0、PE-1、PE-2等向左传递,以对所存储的B和M的倍数进行运算。当A的所有数位都已经传递通过PE串时,该乘法运算完成,其结果R保留在PE中。如果Montgomery乘法结束了,则结果R通过PE被向右传递到MM控制器180中。在一个实施例中,如果结果R是下一个Montgomery乘法的初始参数,这在RSA操作中是很常见的情况,那么就计算R的倍数并存储在PE中,而不传递到MM控制器180中,并且一个新参数A和前面一样地传播通过PE来执行下一个Montgomery乘法。
在图示的实施例中,参数A、B、M和结果R每个都表示一个分布在PE串中的大的数。控制代码c每个都足够小以装入单个PE中,并且每个控制代码都指示其当前所处的PE来对当前包含在该PE中的值执行运算。控制代码与相关联参数的数位一起被向左传递通过PE。对于每种类型的运算,传递通过PE的控制代码序列是预先确定的。在一个实施例中,预先确定的序列被存储在MM控制器180中,并按需要被提供给PE-0。在另一个实施例中,预先确定的序列存储在MM控制器180之外,并被提供给MM控制器180以传递给PE-0。
q值也足够小以装入每个PE中,并且与相关联参数的数位一起被向左传递通过PE,以进一步定义每个PE中的运算。在一个实施例中,用于Montgomery乘法运算的q值在PE-0中确定并被传递,而用于其他运算的q值则和控制代码一样,是存储在MM控制器180之中或者之外被预先确定的序列。
在LSAMM 150的运算期间,每个PE沿两个方向将信息传递到相邻的PE。在一个实施例中,每个PE在一个时钟周期期间执行由该PE的当前c、q值和A的数位所指明的内部运算,随后等待一个时钟周期来将信息传递到相邻的PE以及从相邻的PE接收信息。在一个实施例中,偶数编号的PE在偶数时钟周期中执行一个具体Montgomery乘法中的运算,并在奇数时钟周期中等待来自相邻奇数编号的PE的信息,而奇数编号的PE则在奇数时钟周期中执行同一个Montgomery乘法中的运算,并在偶数时钟周期中等待来自相邻偶数编号的PE的信息。在一个实施例中,通过每隔一个时钟周期将所需的参数数位和控制代码输入到PE-0中,并在其间的时钟周期时将零和非运算控制代码输入到PE-0中,来产生这些交替的运算和等待的周期。此非运算周期随后与运算周期交织地沿着串传播下去。于是,在一个实施例中将1024位的数载入一串4位的PE花费了512个时钟周期。
图3示出了根据本发明一个实施例的处理元件的示意图。在图3所图示的实施例中,PE 190包括PE控制逻辑310、两个存储元件(B-RAM312和M-RAM 314)、两个地址寄存器(Q-寄存器324和A-寄存器322)、两个加法器(S+B加法器330和S+B+M加法器340)、两个复用器(第一复用器335和第二复用器355)、两个进位寄存器(进位-1-寄存器332和进位-2-寄存器342)、一个累加寄存器(S-寄存器345)和一个结果寄存器(R-寄存器360)。虽然只描述了单个PE 190,但在一个实施例中PE 190对串中的每个PE 190-x是普遍的。在图示的实施例中,图3底部所示出的连接对于多个PE都是共同的,所示出的右边的连接与右边的PE相接口,所示出左边的连接与左边的PE相接口,从一个PE的输出被连接到相邻PE被类似命名的输入。例外的是PE-0和PE-(N+2),PE-0右边与MM控制器180接口,PE-(N+2)左边没有PE并在一个实施例中被耦合到回送电路(loopback circuit)以允许回送某些数据。在一个实施例中,所有PE都具有共同的时钟输入Clk。在另一个实施例中,时钟信号被缓冲并被分开到PE的多个组间以避免信号加载问题。
在一个实施例中,Clk、Carry-In-1、Carry-Out-1、Carry-In-2、Carry-Out-2和传播这些信号的所有内部连接每个都包含1位,而Cntl-In和Cntl-Out包含容纳各个控制代码所必须的位数。图3中示出的所有其他连接包含正由每个PE处理的位数,例如对图示实施例是每个4位。在一个实施例中,每个PE按需要还包括其他输入和输出,例如“重启”输入(未示出)。
在一个实施例中,图3的各个逻辑元件执行以下操作:控制逻辑310锁存从右边的PE接收的控制代码,使用该控制代码在当前时钟周期期间控制此PE的逻辑元件,并随后将控制代码传递到左边的PE。存储元件B-RAM 312用来存储在PE串中存储的B的每个倍数的一个数位,而存储元件M-RAM 314用来存储在PE串中存储的M的每个倍数的一个数位。A-寄存器322和Q-寄存器324分别容纳选择B-RAM 312和M-RAM 314中所需存储单元的地址(两者都用于读和写),还将这些地址传递到左边的PE。S+B加法器330用来将B-RAM 312中所选存储单元的内容与左边PE中S-寄存器的内容相加,包括从右边PE中的S+B加法器通过Carry-In-1接收的任何进位。进位-1-寄存器332锁存来自S+B加法器330的任何进位,并在下一个时钟周期期间将其作为进位提供给左边PE中的S+B加法器。当选择了第一复用器335的左手输入时,S+B+M加法器340将S+B加法器330的输出与M-RAM 314中所选存储单元的内容相加。当选择了第一复用器335的右手输入时,S+B+M加法器340将S-寄存器345的内容与M-RAM 314中所选存储单元的内容相加。任何接收到的进位从右边的PE通过Carry-In-2输入而被提供,任何生成的进位被锁存到进位-2-寄存器342中以由左边的PE在下一个时钟周期中使用。S+B+M加法器340的输出被锁存到S-寄存器345中,S-寄存器345用作中间结果的累加寄存器。S-寄存器345的输出被分布到B-RAM 312、M-RAM 314、第一复用器335、第二复用器355和S-Out输出的每个中。如果选择了第二复用器355的右手输入,那么R-寄存器360则锁存S-寄存器345的输出,否则就锁存左边PE中R-寄存器的内容。
在图3的实施例中,Clk被用来将数据锁存到控制逻辑中,锁存到Q-、A-、S-、R-、进位-1-和进位-2-寄存器中,以及对B-和M-RAM中的写操作计时,而两个加法器、两个复用器以及B-和M-RAM中的读操作是组合的,即输入处的任何改变都不管时钟状态而被传播通过到逻辑元件的输出。在另一个实施例中,B-和M-RAM使用时钟输入来用于读及写操作。在一个实施例中,选择时钟速度以使得PE 190中最坏情况下的组合延迟小于一个时钟周期。在图3中未示出从Clk输入到其他电路元件的具体连接,以避免使该图过分复杂。
控制逻辑310包含控制PE 190的操作所必须的逻辑,这种控制是基于通过Cntl-In接收的控制代码的。在一个实施例中,控制逻辑310包括将控制代码转换成必要的控制信号的解码器电路。在另一个实施例中,控制代码仅被锁存,其中控制代码的每一位表明一个具体的控制信号。在一个实施例中,控制代码所指明的操作包括但不限于:选择第一复用器335的两个输入中的一个,选择第二复用器355的两个输入中的一个,写入B-RAM 312,写入M-RAM 314,重启A、Q、S和R寄存器中的一个或多个,以及对各个逻辑元件禁止时钟信号。
因为Montgomery乘法用B和M的倍数来运算,所以一个实施例使用与Montgomery乘法所用的同样的逻辑,来在PE中预先计算倍数。在图3所图示的实施例中,存储元件包括随机访问存储器(RAM)、标号的B-RAM和M-RAM以指示被存储的参数。另一个实施例对于存储元件B-RAM 312和M-RAM 314使用了不同于RAM的一种存储器技术。总地来看,PE串中的所有B-RAM 312为(0×B)、(1×B)、(2×B)等的值提供存储空间。每个PE的B-RAM 312为B的每个倍数的一个数位提供存储空间。在一个每个PE对十六进制数位进行运算的实施例中,B-RAM312包括16个4位存储单元来容纳(0×B)到(15×B)相应的数位,而M-RAM 314包括16个4位存储单元来容纳(0×M)到(15×M)相应的数位。在每个PE处理不同于4位的多位的实施例中,每个RAM中存储单元的数量相应地变化以寻址并存储所需数量的倍数。
PE 190的逻辑可以各种方式来使用,这取决于此时所执行的操作。在一个实施例中,PE执行以下步骤的每一个,这些步骤将在以下部分中详细描述:
1)将初始参数载入B-RAM和/或M-RAM。
2)预先计算B的倍数并存储在B-RAM中。
3)预先计算M的倍数并存储在M-RAM中。
4)执行Montgomery乘法。
将初始参数载入B-RAM和/或M-RAM
在LSAMM中,每次Montgomery乘法都以PE中的初始参数B和M开始。在某些情况下,一次Montgomery乘法的结果是下一次Montgomery乘法的初始参数,使得不必载入初始参数。在一个实施例中,在乘法结束时S-寄存器345包含所累加结果的一个数位,其随后在由A-寄存器322(或Q-寄存器324)指定的地址处被载入B-RAM 312(或M-RAM 314)中,作为下一次Montgomery乘法的初始参数的一个数位。
在其他情况下,在PE中不包含初始参数,于是从外部来源提供初始参数。在一个实施例中,一个初始参数被输入到串的一端并通过PE的S-寄存器传播,直到每个数位都在其正确的PE的S-寄存器中,因此该数位就被写入相应的RAM中了。参考图3,通过将B-RAM 312和M-RAM314的输出置零,并选择第一复用器335的左手输入,加法器330和340将S-In处的值不改变地传递通过并将其载入S-寄存器345,从这里该值在S-Out处可用,由此使得能够通过S-寄存器传播一个值。但是,因为S-寄存器被设计成从左向右传递数据,所以在一个实施例中参数从PE-(N+2)开始传播通过S-寄存器。在一个实施例中,MM控制器180具有对PE-(N+2)的S-In的单独输出并将初始参数的数位输入到PE-(N+2)中。在另一个实施例中,MM控制器180将初始参数的数位输入到PE-0的地址寄存器中,并将这些数位从右到左通过PE串来传播。回送电路随后将PE-(N+2)的地址寄存器输出回送到PE-(N+2)的S-In输入,从这里如同刚才所描述地,数位从左到右通过S-寄存器来传播。回送操作和电路的实施例将在以下的段落中描述。
图4A示出了根据本发明的一个实施例,直接将初始参数载入处理元件串中的回送逻辑。图4B示出了根据本发明的一个实施例,间接将初始参数载入处理元件串中的回送逻辑。图5示出了根据本发明的一个实施例,使用回送逻辑的一种实现的流程图。相对于图4A、4B并进一步相对于图3的PE来描述图5的流程图500。在流程图500的框5 10中,一个初始参数的数位从MM控制器180输出。在一个使用图4A的电路的实施例中,初始参数的数位被直接提供给回送复用器425,而框520被跳过。在另一种使用图4B的电路的实施例中,初始参数的数位被输出到PE-0的A-寄存器322,从此处它们在框520中传播通过PE串的A-寄存器,直到到达PE-(N+2)。从PE-(N+2)的A-寄存器322,初始参数的数位被提供给回送复用器425。在一个实施例中,使用Q-寄存器代替A-寄存器,来将初始参数的数位从PE-0传播到PE-(N+2)。在图4A和4B两者的实施例中,在框530,初始值的数位通过回送复用器425而被回送到PE-(N+2)的S-In输入。在框540,初始参数的数位通过S-寄存器来传播,直到每个数位以前面所描述的方式到达其正确的PE。
当加载初始参数时,信号LoopSel选择回送复用器425的右手输入,使得初始参数的数位被输入到S-In。如果初始参数未被加载到PE串中,那么信号LoopSel选择回送复用器425的左手输入,其将零输入到S-In中。在一个实施例中,信号LoopSel由MM控制器180提供。在另一个实施例中,由附加的回送逻辑(未示出)响应于控制代码或只有该回送逻辑辨识出的控制代码序列,来生成信号LoopSel。
在另一个实施例中,回送复用器425连接到一个内部PE,例如回送复用器425连接到PE-N而非PE-(N+2),回送复用器425的左手输入连接到左边PE的S-Out输出。此实施例允许加载初始参数,而不必将数据传递通过在串末端的附加PE,这些附加PE正常情况下不容纳初始参数的任何部分。
预先计算B的倍数并存储在B-RAM中
在图3所图示的实施例中,通过在每个PE中执行以下操作,来计算B的每个倍数的数位并将这些数位存储在B-RAM 312中:
1)通过向B-RAM 312中的存储单元0全写入0来将存储单元0的内容清除成零。在一个实施例中,此操作通过这样来执行,将A-寄存器322的内容置零来选择存储单元0,并将S-寄存器345的内容置零来提供写入存储单元0的数据。
2)通过前面在“将初始参数载入B-RAM和/或M-RAM”部分中描述的过程,来将B正确的数位载入S-寄存器345。
3)清除Q寄存器,设置M-RAM成“写入”,并将来自S-寄存器345的B的数位写入M-RAM 314的存储单元0。M-RAM 314是此数位的临时保持位置,并可在预先计算步骤结束时清除。
4)将M-RAM 314设置成“读取”,并让Q-寄存器324被清除以从M-RAM 314连续读取B的数位。将B-RAM 312设置成“写入”,清除S-寄存器345并将A-寄存器322设置成“0”。
5)选择复用器335的右手输入,使得S+B+M加法器340将用来自M-RAM 314的B的数位与S-寄存器345中的当前值相加,并将和作为新值存储在S-寄存器345中,包括在Carry-In-2处接收的任何相关进位的影响。(此相加产生的任何进位都被锁存到进位-2-寄存器342中以由左边的PE使用。)
6)将A-寄存器322中的值用S-寄存器345中的每个新值进行递增,以使得S-寄存器345中的变化值被存储到B-RAM 312中连续的存储单元0、1、2、3等中。在增加过B的所有倍数之后,B-RAM 312中的结果是存储单元0包含0×B=0的数位,存储单元1包含1×B同样的数位,存储单元2包含2×B同样的数位,存储单元3包含3×B同样的数位等。当已经将此过程应用到PE 0到N时,就完成了B的倍数的预先计算和存储。
预先计算M的倍数并存储在M-RAM中
在图3所图示的实施例中,通过在每个PE中执行以下操作,来计算B的每个倍数的数位并将这些数位存储在M-RAM 314中:
1)通过向每个存储单元写入零来将M-RAM的内容清除。在一个实施例中,这通过如此来执行,将S-寄存器345的内容置零,并向M-RAM重复地写入零值,同时增加Q-寄存器324的内容。
2)通过以上在“将初始参数载入B-RAM和/或M-RAM”部分中描述的过程,来将M正确的数位载入S-寄存器345。
3)清除Q寄存器,并将来自S-寄存器345的M的数位写入M-RAM314的存储单元0。存储单元0是此数位的临时保持位置,并可在预先计算步骤结束时清除。
4)选择复用器335的右手输入,使得S+B+M加法器340将用从M-RAM 314读取的值与S-寄存器345中的当前值相加,并将和作为新值存储在S-寄存器345中,包括在Carry-In-2处接收的任何相关进位的影响。(此相加产生的任何进位都被锁存到进位-2-寄存器342中以由左边的PE使用。)这样,S-寄存器345中的值将随着每次相加,而相继变化经过M、2M、3M等的相同数位。
5)使Q-寄存器324的内容在增加的计数器和零之间交替:1、0、2、0、3、0等。当Q-寄存器保持为零时,将M-RAM 314置于读状态以从存储单元0读出M的值。当Q-寄存器保持为在增加的计数器值中的一个时,将M-RAM 314置于写状态以将来自S-寄存器345的累加值写入该存储单元。这样,M的数位将从M-RAM 314中的存储单元0读取并被加到S-寄存器345中的累加值上,包括任何接收到的进位的影响。总和随后将被写到M-RAM 314中的存储单元,该存储单元随着每次写的操作而增加。M-RAM 314中的结果是存储单元1包含M的数位,存储单元2包含2M同样的数位,存储单元3包含3M同样的数位等。
6)将S-寄存器345和Q-寄存器324置零,并将S-寄存器345的零内容写入M-RAM 314的存储单元0。当已经将此过程应用到PE 0到N时,就完成了M的倍数的预先计算和存储。
在用于实施以上操作的一个实施例中,A-寄存器322和Q-寄存器324的内容通过控制代码而被清除成零。在另一个实施例中,通过将零值如同A-和Q-寄存器中的其他值一样传播通过PE串,来将A-寄存器322和Q-寄存器324的内容设成零。
执行Montgomery乘法
在图3所图示的实施例中,每个PE以如下的方式来在Montgomery乘法中执行:A-寄存器322锁存A的一个数位来选择B-RAM 312中B的倍数的一个数位,Q-寄存器324锁存一个q值来选择M-RAM 314中M的倍数的一个数位,而控制逻辑310锁存控制代码来在当前时钟周期期间控制PE 190的逻辑元件。所有这三个值都在下一个时钟周期从右边的PE接收并传递给左边的PE。使用S+B加法器330,B-RAM 312的所选存储单元被加到左边PE中的S-寄存器的当前内容。使用Carry-In-1输入和Carry-Out-1输出来将进位从右向左传播,使得当前PE的S+B加法器330与其他PE的S+B加法器合作,来将B的所选倍数的值加到S寄存器中中间结果的右移(一个数位)值。以类似的方式,S+B+M加法器340使用Carry-In-2和Carry-Out-2处的传播进位,而与其他PE的S+B+M加法器合作来执行更大的加法。选择第一复用器335的左手输入,使得S+B加法器330的输出被加到在M-RAM 314的所选存储单元中M的倍数。总和被锁存到S-寄存器345作为新的中间结果,完成了由当前时钟周期的控制代码所确定的操作。如前所述,接着是等待来自相邻PE的信息的一个时钟周期,然后刚才描述的过程重复尽可能多次将A的所有数位传播通过PE。当A的所有数位已经传播通过PE时,S-寄存器345中的值就是Montgomery乘法的结果的数位。当A的所有数位已经传播通过所有PE时,Montgomery乘法就完成了。
如果该结果被用作一系列连续的Montgomery乘法中新的初始参数,那么S-寄存器345中的内容就随后被载入到B-RAM 312中作为B的数位,并按前面“预先计算B的倍数并存储在B-RAM中”所描述的来计算倍数。如果该结果是最终结果,那么结果就被移位通过右边的PE,直到结果的所有数位已移入MM控制器180,从此处该结果可被系统中的其他设备使用。在一个实施例中,在每个PE中,S-寄存器345的内容通过复用器355的右手输入被载入R-寄存器360,然后通过在每个PE中选择复用器355的左输入,所有R-寄存器360的内容被向右相互传递到MM控制器180中。在另一个实施例中,R-寄存器360和第二复用器355并不包括在PE中,并且使用S-In和S-Out连接来将结果向右传递通过每个PE的S-寄存器,其方式与以上在“将初始参数载入B-RAM和/或M-RAM”中描述的加载初始参数的方式基本相同。
以上说明意于解释而非限制。本领域技术人员将想到多种变化。这些变化意于包括在仅由所附权利要求的精神和范围所限制的本发明中。

Claims (23)

1.一种装置,包括:
线性脉动阵列蒙哥马利乘法器的第一处理元件中的第一存储元件;和
所述第一处理元件中的第一累加寄存器,其被耦合到相邻的第二处理元件中的第二累加寄存器,来将第一初始参数传播通过所述第一和第二累加寄存器,所述第一累加寄存器还被耦合到所述第一存储元件,来将所述第一初始参数的一部分载入所述第一存储元件。
2.如权利要求1所述的装置,其中:
所述第一累加寄存器还将所述第一初始参数的第一组倍数的一部分载入所述第一存储元件。
3.如权利要求1所述的装置,其中:
所述第一处理元件还包括第二存储元件,所述第二存储元件被耦合到所述第一累加寄存器,来存储传播通过所述第一和第二累加寄存器的第二初始参数的一部分。
4.如权利要求3所述的装置,其中:
所述第一累加寄存器还将所述第二初始参数的第二组倍数的一部分载入所述第二存储元件。
5.如权利要求1所述的装置,其中:
所述第一处理元件还包括第一地址寄存器,所述第一地址寄存器被耦合到所述第一存储元件来对所述第一存储元件中的存储单元寻址,并且被耦合到所述第二处理元件中的第二地址寄存器,以在将所述第一初始参数传播通过所述第一和第二累加寄存器之前,来将所述第一初始参数传播通过所述第一和第二地址寄存器。
6.如权利要求5所述的装置,其中:
所述第一初始参数将沿与传播通过所述第一和第二累加寄存器相反的方向,来传播通过所述第一和第二地址寄存器。
7.如权利要求1所述的装置,其中:
所述第一累加寄存器还将在蒙哥马利乘法期间来累加中间结果。
8.一种系统,包括:
处理器;
存储器,其被耦合到所述处理器;和
线性脉动阵列蒙哥马利乘法器中的一组串连处理元件,所述线性脉动阵列蒙哥马利乘法器被耦合到所述处理器,所述串连处理元件组具有累加寄存器,在开始蒙哥马利乘法之前,所述串连处理元件组将初始参数传播通过所述累加寄存器,并将来自所述累加寄存器的所述初始参数存储到所述处理元件中的存储元件中,其中所述累加寄存器将在所述蒙哥马利乘法期间保持中间结果。
9.如权利要求8所述的系统,其中:
所述串连处理元件组还包括地址寄存器,所述地址寄存器被耦合到所述存储元件以对所述存储元件中的存储单元寻址,并且
在所述初始参数传播通过所述累加寄存器之前,所述地址寄存器还将所述初始参数传播通过所述地址寄存器。
10.如权利要求9所述的系统,其中:
所述地址寄存器还将沿与所述初始参数传播通过所述累加寄存器相反的方向,来将所述初始参数传播通过所述地址寄存器。
11.一种装置,包括:
线性脉动阵列蒙哥马利乘法器的第一处理元件中的第一存储元件;
所述第一处理元件中的加法器,其被耦合到所述第一存储元件,来计算第一初始参数的倍数的一部分;和
所述第一处理元件中的累加寄存器,其被耦合到所述加法器和所述第一存储元件,以将所述第一初始参数的倍数的所述部分载入所述第一存储元件;
其中所述第一存储元件、所述加法器和所述累加寄存器还将用所述第一初始参数的倍数的所述部分来执行蒙哥马利乘法。
12.如权利要求11所述的装置,其中:
所述第一处理元件还包括第二存储元件,所述第二存储元件被耦合到所述加法器和所述累加寄存器;以及
所述加法器将计算第二初始参数的倍数的一部分,并且所述累加寄存器将所述第二初始参数的倍数的所述部分载入所述第二存储元件。
13.如权利要求12所述的装置,还包括:
所述线性脉动阵列蒙哥马利乘法器中的第二处理元件;
其中在所述加法器的计算之前,所述累加寄存器还将所述第一初始参数传播通过所述第一和第二处理元件。
14.如权利要求13所述的装置,其中:
所述第一处理元件还包括地址寄存器,所述地址寄存器对所述第一存储元件中的存储单元寻址,并且在传播通过所述累加寄存器之前来将所述第一初始参数传播通过所述第一和第二处理元件。
15.如权利要求14所述的装置,其中:
通过所述地址寄存器的传播方向与通过所述累加寄存器的传播方向相反。
16.如权利要求14所述的装置,还包括:
被耦合到所述地址寄存器和所述累加寄存器的逻辑,以将来自所述地址寄存器的所述第一初始参数循环给所述累加寄存器。
17.一种方法,包括:
将初始参数传播通过线性脉动阵列蒙哥马利乘法器中的一组处理元件;以及
将所述初始参数载入所述处理元件组的存储元件中。
18.如权利要求17所述的方法,其中:
所述传播所述初始参数的步骤,包括将所述初始参数传播通过所述处理元件中的累加寄存器。
19.如权利要求18所述的方法,还包括:
沿与传播通过所述累加寄存器相反的方向,来将所述初始参数传播通过所述处理元件中的地址寄存器;以及
在所述初始参数的所述传播通过所述累加寄存器之前,在某个处理元件处回送所述初始参数。
20.一种方法,包括:
将初始参数和控制代码载入线性脉动阵列蒙哥马利乘法器,使得所述线性脉动阵列蒙哥马利乘法器中的处理元件将所述初始参数传播通过所述处理元件,并将所述初始参数载入所述处理元件中的存储元件中。
21.如权利要求20所述的方法,其中:
所述传播所述初始参数的步骤,包括将所述初始参数传播通过所述处理元件中的累加寄存器。
22.如权利要求21所述的方法,其中:
所述传播所述初始参数的步骤,还包括沿与传播通过所述累加寄存器相反的方向,来将所述初始参数传播通过所述处理元件中的地址寄存器,以及在传播通过所述累加寄存器之前,在某个处理元件处回送所述初始参数。
23.如权利要求20所述的方法,还包括:
将控制代码载入所述线性脉动阵列蒙哥马利乘法器,使所述处理元件预先计算所述处理元件中的所述初始参数的倍数,并将所述倍数存储在所述存储元件中。
CNB028192451A 2001-09-28 2002-09-13 蒙哥马利乘法器处理元件中的部件精简 Expired - Fee Related CN100356317C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/966,044 2001-09-28
US09/966,044 US6625631B2 (en) 2001-09-28 2001-09-28 Component reduction in montgomery multiplier processing element

Publications (2)

Publication Number Publication Date
CN1561479A CN1561479A (zh) 2005-01-05
CN100356317C true CN100356317C (zh) 2007-12-19

Family

ID=25510848

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028192451A Expired - Fee Related CN100356317C (zh) 2001-09-28 2002-09-13 蒙哥马利乘法器处理元件中的部件精简

Country Status (8)

Country Link
US (1) US6625631B2 (zh)
EP (1) EP1430392B1 (zh)
CN (1) CN100356317C (zh)
AT (1) ATE344487T1 (zh)
DE (1) DE60215835T2 (zh)
HK (1) HK1063325A1 (zh)
TW (1) TWI244614B (zh)
WO (1) WO2003029956A1 (zh)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US8686549B2 (en) * 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
WO2002013000A2 (de) 2000-06-13 2002-02-14 Pact Informationstechnologie Gmbh Pipeline ct-protokolle und -kommunikation
AU5805300A (en) 1999-06-10 2001-01-02 Pact Informationstechnologie Gmbh Sequence partitioning in cell structures
US9626325B2 (en) * 2000-10-06 2017-04-18 Pact Xpp Technologies Ag Array processor having a segmented bus system
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US6804696B2 (en) * 2000-12-19 2004-10-12 International Business Machines Corporation Pipelining operations in a system for performing modular multiplication
JP3950638B2 (ja) * 2001-03-05 2007-08-01 株式会社日立製作所 耐タンパーモジュラ演算処理方法
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) * 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US20030065696A1 (en) * 2001-09-28 2003-04-03 Ruehle Michael D. Method and apparatus for performing modular exponentiation
US6922717B2 (en) * 2001-09-28 2005-07-26 Intel Corporation Method and apparatus for performing modular multiplication
WO2003060747A2 (de) 2002-01-19 2003-07-24 Pact Xpp Technologies Ag Reconfigurierbarer prozessor
US20110161977A1 (en) * 2002-03-21 2011-06-30 Martin Vorbach Method and device for data processing
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
WO2004038599A1 (de) 2002-09-06 2004-05-06 Pact Xpp Technologies Ag Rekonfigurierbare sequenzerstruktur
US7010561B2 (en) * 2002-10-09 2006-03-07 William L. Freking Systolic ring-planarized cylindrical array modular multipler
JP4700611B2 (ja) * 2003-08-28 2011-06-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理装置およびデータ処理方法
US20060140399A1 (en) * 2004-12-28 2006-06-29 Young David W Pre-calculation mechanism for signature decryption
US7873830B2 (en) * 2006-01-13 2011-01-18 International Business Machines Corporation Methods for coordinating access to memory from at least two cryptography secure processing units
EP1974265A1 (de) 2006-01-18 2008-10-01 PACT XPP Technologies AG Hardwaredefinitionsverfahren
JP2011503733A (ja) * 2007-11-17 2011-01-27 トーマス リヒター リコンフィギュラブルな浮動小数点レベルおよびビットレベルのデータ処理ユニット
WO2009068014A2 (de) * 2007-11-28 2009-06-04 Pact Xpp Technologies Ag Über datenverarbeitung
WO2009071329A1 (en) * 2007-12-07 2009-06-11 Pact Xpp Technologies Ag Using function calls as compiler directives
US8560814B2 (en) 2010-05-04 2013-10-15 Oracle International Corporation Thread fairness on a multi-threaded processor with multi-cycle cryptographic operations
US8583902B2 (en) 2010-05-07 2013-11-12 Oracle International Corporation Instruction support for performing montgomery multiplication
US9430191B2 (en) * 2013-11-08 2016-08-30 Micron Technology, Inc. Division operations for memory
CN109947393B (zh) * 2017-12-20 2021-11-02 航天信息股份有限公司 基于求余器的运算方法及装置
CN109284085B (zh) * 2018-09-25 2023-03-31 国网湖南省电力有限公司 一种基于fpga的高速模乘和模幂运算方法及装置
TWI798640B (zh) * 2021-02-09 2023-04-11 新唐科技股份有限公司 常數乘法器
CN117234458B (zh) * 2023-11-09 2024-02-23 深圳大普微电子股份有限公司 乘法阵列、数据处理方法、处理终端及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0350278A2 (en) * 1988-07-04 1990-01-10 British Aerospace Public Limited Company Digital signal processing
US6061706A (en) * 1997-10-10 2000-05-09 United Microelectronics Corp. Systolic linear-array modular multiplier with pipeline processing elements

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6763365B2 (en) * 2000-12-19 2004-07-13 International Business Machines Corporation Hardware implementation for modular multiplication using a plurality of almost entirely identical processor elements

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0350278A2 (en) * 1988-07-04 1990-01-10 British Aerospace Public Limited Company Digital signal processing
US6061706A (en) * 1997-10-10 2000-05-09 United Microelectronics Corp. Systolic linear-array modular multiplier with pipeline processing elements

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A Systolic,Linear-Array Multiplier for a Class ofRight-ShiftAlgotithms. Peter Kornerup,Member,IEEE.IEEE TRANSACTIONS ON COMPUTERS,Vol.43 No.8. 1994 *
Montgomery算法及其在加密硬件中的实现 邓玉良,毛志刚,叶以正.JOURNAL OF COMPUTER RESEARCH & DEVELOPMENT,Vol.36 No.4. 1999 *

Also Published As

Publication number Publication date
EP1430392B1 (en) 2006-11-02
DE60215835D1 (de) 2006-12-14
ATE344487T1 (de) 2006-11-15
DE60215835T2 (de) 2007-06-21
US20030065695A1 (en) 2003-04-03
US6625631B2 (en) 2003-09-23
TWI244614B (en) 2005-12-01
CN1561479A (zh) 2005-01-05
EP1430392A1 (en) 2004-06-23
WO2003029956A1 (en) 2003-04-10
HK1063325A1 (en) 2004-12-24

Similar Documents

Publication Publication Date Title
CN100356317C (zh) 蒙哥马利乘法器处理元件中的部件精简
EP0576262B1 (en) Apparatus for multiplying integers of many figures
US6269383B1 (en) Method and apparatus for integer arithmetic
CN111291323B (zh) 一种基于脉动阵列的矩阵乘法处理器及其数据处理方法
JP2009026308A (ja) 高速かつ効率的な行列乗算ハードウェアモジュール
CN102402415A (zh) 一种动态可重构阵列内数据缓存的装置及方法
EP0504996B1 (en) Arithmetic unit for multiplying long integers modulo M and R.S.A. converter provided with such multiplication device
US4769780A (en) High speed multiplier
US6922717B2 (en) Method and apparatus for performing modular multiplication
CN107368459B (zh) 基于任意维数矩阵乘法的可重构计算结构的调度方法
US6732133B2 (en) Montgomery multiplier with dual independent channels
CN1696894B (zh) 大数模乘计算乘法器
US5948051A (en) Device improving the processing speed of a modular arithmetic coprocessor
Styles et al. Pipelining designs with loop-carried dependencies
US10908879B2 (en) Fast vector multiplication and accumulation circuit
CN100383729C (zh) 运算装置
JP3982324B2 (ja) ベクトル演算処理装置、ベクトル演算方法およびベクトル演算プログラム
RU2022339C1 (ru) Множительное устройство
Satzoda et al. A fast kernel for unifying GF (p) and GF (2/sup m/) Montgomery multiplications in a scalable pipelined architecture
RU2295751C2 (ru) Способ и устройство выполнения арифметических и логических операций
He et al. Efficient architectures for modular exponentiation using Montgomery powering ladder
CN110764602A (zh) 用于降低存储开销的汇流阵列
JPH08212168A (ja) アレイプロセッサ
JPH09153030A (ja) 二次元離散コサイン変換回路
CN108140017A (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
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20071219

Termination date: 20100913