CN1702613A - 蒙哥马利模乘法器 - Google Patents
蒙哥马利模乘法器 Download PDFInfo
- Publication number
- CN1702613A CN1702613A CNA2005100788260A CN200510078826A CN1702613A CN 1702613 A CN1702613 A CN 1702613A CN A2005100788260 A CNA2005100788260 A CN A2005100788260A CN 200510078826 A CN200510078826 A CN 200510078826A CN 1702613 A CN1702613 A CN 1702613A
- Authority
- CN
- China
- Prior art keywords
- multiplier
- register
- multiplicand
- mould
- product
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/728—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
- G06F7/5336—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
在蒙哥马利乘法器中,模乘积产生器可以从多个n位模数M中选择一个模乘积,同时在该n位模数中从当前输入拓展块中形成一个给定的模数M。部分乘积产生器从多个可选择的n位被乘数A中选择一个被乘数作为部分乘积,同时在n位被乘数中从当前位输入拓展块中形成一个给定的被乘数A。累加器可以将选择的模乘积和部分乘积累加以产生一个乘积结果。蒙哥马利乘法器可以是包括了一个存储器和主机的运算单元的一部分,也可以用于基于输入其中的控制信号的逻辑状态执行蒙哥马利乘法运算和通常的乘法运算。
Description
技术领域
本发明总地涉及密码系统,更具体地涉及用于此类密码系统的蒙哥马利模乘法器(Montgomery modular multiplier)。
背景技术
在通过计算机网络的方式交换各类数据的信息通信环境中,有线和/或移动(无线)通信领域、加密系统(密码系统)日益作为确保数据安全性的必要工具。特别是,对于电子会计或识别系统来说通过提供加密和/或解密技术而确保数据的安全性是必须的。加密技术可以笼统地分为密钥(对称密钥,私人密钥,或通用密钥)和公钥(非对称密钥)的形式。
由美国商务部所拟订的数据加密系统(DES)的加密算法是一种典型的密码系统密钥加密类型。其它的典型加密系统包括出自前苏联的政府标准(GOST),以及瑞士的内部数据加码算法(IDEA)。对于一个密钥加密系统来说,由于各个交换信息需要共享相同的密钥,因此具有为了安全性而具有一个附加的信道的优点。因而这样的密钥类型的加密系统为了让用户能与其他用户交流信息通常需要由一个用户保有并管理多个密钥。
公钥类型的加密系统使用彼此不同的加密和解密密钥,这就使得即便通过知道两个密钥之一的人也很难检测到相应的密钥。在公共密钥系统中,信息通过一个密钥和/或一个公钥加扰或解扰(即,信息可以通过使用一个私人密钥来加扰并且使用一个公共密钥来解扰,反之亦然)。虽然公共密钥系统由于无需为共享密钥具备一个附加的信道,并与密钥系统相比可以提供改善的数据安全性,因此在密钥管理方面很方便,但公共密钥系统因为要产生两个不同的密钥并需要复杂的数学运算来使用两个不同密钥恢复信息,因此仅具有有限的容量来处理高速数据。
改进的加密系统使用了蒙哥马利算法,其为在硬件和软件系统实施例中执行公钥加密算法提供了更大的益处。使用了蒙哥马利算法的加密系统能够将很难用硬件实现的对一个数字的模运算变换为简单的乘法和加法的移位运算。蒙哥马利算法在单个的乘法运算步骤之前和之后使用了一个运算数变换处理。因此,虽然由于在应用中重复运行了乘法运算,基于蒙哥马利算法的加密系统比在单独乘法域中其他的模乘法系统要慢,但是基于蒙哥马利算法的系统由于无需在每个处理周期执行运算数的转换步骤,因而能比基于通常的公钥算法的加密系统在执行加密运算时更快。
一种用于提高乘法处理速度的方法拓展了基数。如果基数值增加,那么在给定的乘法处理中的重复累加数减少一个相应的数。然而,基数的增加可以导致由附加的处理步骤所产生的更复杂的累加周期,因此加长了处理流程的时间。例如,虽然由硬件实现时基数2的操作算法相对简单,但是,累加周期的重复数为基数4的操作算法的二倍。相反地,基数4的操作运算相对于基数2的操作算法所需的硬件,需要为每个重复周期提供更长的处理时间以及更复杂的硬件结构。
发明内容
本发明的一个示例性实施例是一个蒙哥马利乘法器。该乘法器可以包括一模乘积产生器,用来选择n位模数-M,0,M,2M和前一行结果SI其中之一作为模乘积;一部分乘积产生器,用来选择-2A,-A,0,+A和+2A被乘数其中之一作为部分乘积;和一累加器,用来堆栈该所选择的模乘积和部分乘积。在实施例中,一个蒙哥马利运算单元可以包括一个存储器、一用来将被乘数A、乘数B和模数M存储在存储器中的主机、以及一个上述的蒙哥马利乘法器。该蒙哥马利乘法器可以在主机的控制下用所存储的被乘数、乘数和模数执行一个蒙哥马利乘法运算,并可以将来自蒙哥马利乘法运算中的运算结果存储在所述存储器中。
本发明的另一个示例性实施例是一个累加器。该累加器可以包括多个用来以进位保存加法模式运算的压缩器,该多个压缩器的每个接收模乘积,部分乘积、第一值和第二值,并产生一个相应的下一个和、一个相应的下一个进位和一个相应的下一个较低值;一和寄存器,用来从多个压缩器的每个接收相应的下一个和以输出一个相应的更新的当前和;
一进位寄存器,用来从多个压缩器的每个接收相应的下一个进位来输出一个相应的更新的当前进位;和一较低值寄存器,用来从多个压缩器的每个接收相应的下一个较低值以输出一个相应的更新的当前低值。
本发明的另一个示例性实施例是一个运算单元。该运算单元可以包括一乘法器,用来顺序地执行用于一个包括n/c位块的n位被乘数、包括n/c位、块的一个n位乘数、包括n/c块的n位模数、拓展的乘数块和拓展的模数块的单元乘法运算(n/c)*(n/c)次。对该运算单元来说,n>c并且n和c是正整数。
本发明的另一个示例性实施例是一个蒙哥马利乘法单元。该乘法单元包括一个具有n/c行数的运算矩阵,n和c是正整数,其中每行与重复执行n/c次的单元乘法运算和进位传递加法运算关联。该乘法单元可以包括一个具有进位保存加法结构的累加器,用来执行该重复单元乘法运算;和一个加法进位传递加法器,用来执行该进位传递加法运算。
本发明的另一个示例性实施例是一个蒙哥马利乘法器。该蒙哥马利乘法器可以包括一个模乘积选择产生器,用来从多个可选择的n位模数M选择一个模乘积,该给定的模数M是在该n位模数中从当前输入拓展块中形成的。该乘法器还可以包括一个部分乘积产生器,用来从多个可选择的n位被乘数A中选择一个被乘数作为部分乘积,给定的被乘数A是在n位被乘数中从当前位输入拓展块中形成的。该乘法器的累加器可以将选择的模乘积和部分乘积累加以产生一个乘积结果。在一个实例中,上述蒙哥马利乘法器可以是包括了一个存储器和主机的运算单元的一部分。
本发明的另一个示例性实施例是一个蒙哥马利乘法器。该蒙哥马利乘法器也可以用于执行一个基于输入其中的控制信号的逻辑状态的蒙哥马利乘法运算和通常的乘法运算。
附图说明
本发明通过参考附图所详细描述的示例性实施例将变得更加的清楚,其中,相同的元件用相同的标号表示,并且该描述仅仅是示例性的因此不能来限制本发明的示例性实施例。
图1示出了用于执行四倍精度运算的运算矩阵的结构示意图。
图2示出了根据图1所示的四倍精度的单元乘法运算的顺序。
图3是根据本发明的一个示例性实施例的加密系统的示意图。
图4是根据本发明的一个示例性实施例的蒙哥马利乘法器数据路径的框图。
图5示出了图3所示的蒙哥马利乘法器的存储器接口12的框图。
图6示出了根据控制信号FROCE_RI[2:0]在存储器接口12中由多路复用器121选择的信号的真值表。
图7示出了根据控制信号SEL_RDO[1:0]在存储器接口12中由多路复用器123选择的信号的真值表。
图8A到8C示出了根据本发明的一个示例性实施例的蒙哥马利乘法器10的功能结构框图。
图9示出了根据本发明的一个示例性实施例的用于存储被乘数值A的示例性寄存器105的详细电路结构。
图10示出了根据本发明的一个示例性实施例的用于产生模乘积值MMI的模乘积产生器120的结构。
图11示出了根据本发明的一个示例性实施例的由蒙哥马利记录器110所配置的编码的真值表。
图12示出了根据本发明的一个示例性实施例的用于存储乘数值B的寄存器。
图13示出了根据本发明的一个示例性实施例的部分乘积产生器130的示例性电路。
图14示出了根据本发明的一个示例性实施例的由亭记录器140所管理的编码的真值表。
图15示出了根据本发明的一个示例性实施例的累加器150。
图16示出了在一个示例性的累加器中当移位信号SHIFT_ACC为逻辑“1”时,输入到压缩器中的信号的配置。
图17示出了在一个示例性的累加器中当移位信号SHIFT_ACC为逻辑“0”时,输入到压缩器中的信号的配置。
图18示出了根据本发明的一个示例性实施例的4∶2压缩器的示例性电路。
图19示出了根据本发明的一个示例性实施例的移位寄存器116的详细结构。
图20示出了根据本发明的一个示例性实施例的移位寄存器115的详细结构。
图21示出了根据本发明的一个示例性实施例的用于存储累加器150的和S0[1:0]的移位寄存器180的详细结构。
图22示出了根据本发明的一个示例性实施例的用于产生提供给蒙哥马利记录器110的SPPI[1:0]的电路。
图23示出了根据本发明的一个示例性实施例的CPA运算模块160的电路结构。
图24示出了当用偶次多精度模式从每行的最后CSA运算转到一CPA运算时,在累加器150中保持一个给定字的最高半字的特征。
图25示出了用于亭记录器140的给定输入/输出信号的逻辑规则的配置的真值表。
图26示出了用于蒙哥马利记录器110的输入/输出信号的逻辑规则的配置的真值表。
具体实施方式
本发明的示例性实施例将在以下参照附图更详细地进行描述。然而,本发明也可以有不同的实施方式而不限于此处设定的示例性实施例。相反地,提供这些实施例使公开全面和完整,并向本领域的技术人员表达了本发明的范围。在整个说明书中,相同的数字标号相同的元件。
根据所描述的传统加密系统的问题,可以设计一种具有对模运算增强处理速度的加密系统结构,而无需加大或使系统硬件复杂化。另一方面,使用计算机系统所提供的改进的运算工具,可以为确保加密系统的安全性而加长密钥。一个给定的密钥的长度可以根据给定的应用而随需改变。这样,具有可变给定长度密钥的加密系统可以根据需要适用于各种应用环境。
如以下所详细描述的,本发明的示例性实施例引入了一个支持精度多样性的可升级的蒙哥马利模乘法器。本发明的示例性实施例可以实现使用较低复杂度的蒙哥马利乘法器而具有精度多样性的乘法运算。此外,示例性的实施例可以执行一个通常的乘法运算,以及基于适当的控制信号的蒙哥马利乘法。
本发明的示例性实施例可以应用到基于基数4运算逻辑的蒙哥马利乘法算法,以下称之为“基数4的插入式蒙哥马利乘法算法”(R4IMM)。根据以下所描述的示例性实施例,该乘法器所涉及的逻辑运算系统可以应用于使用公共密钥加密算法的通信网络或计算系统,以及在便携式集成电路(IC)卡(或智能卡)等中实现。
根据示例性实施例,R4IMM算法中涉及的参数可以定义如下:
M表示模值为正,并为例如3、7等比2大的奇数整数;
M′为整数并满足等式条件(-M*M’)mod 4=1;
A表示被乘数值并为整数,同时满足条件0≤A<M;
B表示乘数值并为整数,同时满足条件0≤B<M。
这里,
bI∈{0,1,2,3},其中bI是一个由2位构成的单元被乘数;
o是操作数的参数,表示一个被乘数、乘法器和模的给定长度;
c示出了当执行单元乘法运算时“块长度”的参数(即,块的位数或字节数等),并表示在系统硬件中的数据路径的宽度;
w示出了字的长度(即,在存储器中的数据总线宽度)的参数;和
d示出了基数的数字长度的参数。例如,如果采用4基数乘法器一个密码系统具有一个32位的数据总线宽度,那么在4基数的乘法器中的字长w当数字长d为2时是32。
应用到本发明的示例性实施例中的基本R4IMM运算算法可以描述如下:
S0:=0
for I:=0 to(n/2-1)
qI:=(((SI+bIA)mod 4)*M’)mod 4
SI+1:=(SI+bIA+qIM)/4
endfor
if(SN≥M)SN:=SN-M
在以上的基本R4IMM运算算法中,参数I表示数字索引或重复运算的次数。商qI表示加入数M来创建SI+bI+qIM的两个最低有效位(LSB)为“00”。在余数系统(RNS)中,通过将模M的整数倍加入到一个特定值所取得的数与它的初始数值相同,并且模乘积qIM(模值M的整数倍)就等于该初始数值。此外,即便当SI+bI+qIM的两个LSB“00”由一个基数4来除(即,右移两(2)位),也由于其保留有最大有效数(即,MSB)而不会使得信息丢失。
得到部分乘积值PPI和模乘积值MMI而在硬件系统上实现R4IMM运算。由于单元被乘数bI和商qI都为两位,因此部分乘积值PPI和模乘积值MMI可以使用四个如公式1所示的可用值而产生(这里,bI{0,1,2,4}而qI{0,1,2,3})。
[公式1]
bIA=PPI∈{0,A,2A,3A}
qIA=MMI∈{0,M,2M,3M}
然而,如果部分乘积值PPI和模乘积值MMI按照公式1创建,那么执行取得A或M的1位移位值以及它的初始值(即,A或M)的和运算,以计算3A或3M。例如,可以使用一个独立的加法器来计算3A或3M值,3A或3M也可以预先计算并将其存储作为以后的参考。但是,由于系统是根据为计算其中的3A或3M值所需的时间和空间而设计的,因此3A和3M的计算可以由传统的硬件结构负担并可以看作降低运算性能的根源。
因此,当在产生部分乘积值PPI和模乘积值MMI中加强计算性能时,本发明的示例性实施例可以设计来降低硬件的负担。这种在增强处理的情况下降低硬件负担可以通过使用两种不同性质类型的记录配置和/或记录方法。
此外,根据本发明的示例性实施例的乘法器可以在一个给定的时间中执行c位的乘法运算,还可以使用重复运算周期处理n位的乘法运算(这里n是c的整数倍)。这样的多精度R4IMM算法可以表示如下。
for row_idx=0 to row_idx=(n/c-1)
begin
for col_idx=0 to col_idx=(0/c-1)
begin
do_ini( );
for wrd_idx=0 to wrd_idx=(c/w-1)
begin
for dgt_idx=0 to dgt_idx=(w/d-1)
begin
do_acc( );
endfor
endfor
endfor
for wrd_idx=0 to wrd_idx=(c/w-1)
begin
do-cpa( );
endfor
endfor
在该算法中,函数do_ini( )表示累加块的函数(位块或字的字节),其源于以前行所确定的运算值S,并在累加器中与当前列和当前值具有相同的位置。换句话说,函数do_ini( )在给定的列循环的起始处修改乘法器的累加器的初始值。这种修改流程的完成是由于根据本发明的示例性实施例的蒙哥马利乘法器被设计来适用于给定的具有多精度的运算。
函数do_acc( )表示累加在累加器中的每个周期所产生的部分乘积值PP和模乘积值MM两个矢量的函数。本发明的示例性实施例所使用的累加器可以以一个或多个进位保存加法器(CSA)的结构实现,该加法的结果值可以分别表示每个存储在相应的赋予给定矢量的寄存器中的进位矢量、和矢量、以及较低值矢量中的每一个。
函数do_cpa( )表示对进位值、和值、以及较低值的加法运算。这可以通过使用进位传递加法器来实现,其中所得的结果作为每行最后一步的累加结果。
图1示出了用于执行四倍精度运算的运算矩阵的结构示意图。参考图1,对于四倍精度运算,被乘数A,乘数B,以及模M每个被分成四块,每个表示为A={A3A2A1A0},B={B3B2B1B0},以及M={M3M2M1M0}。在具有c位块长度的乘法器中,乘法运算可以顺序在块单元中执行,例如,A0*B0,A1*B0,A2*B0,A3*B0等...,同时存储该乘法运算的最终结果。
图2示出了根据图1所示的四倍精度的单元乘法运算的序列。根据本发明的示例性实施例,参数A3,A2,A1,A0,B3,B2和B0可以表示块长度,而运算组A0*B0,A1*B0,A2*B0,A3*B0等可以表示为单元乘法运算(或框符)。被乘数A和乘数B的每个运算可以通过进位保存加法(CSA)循环的累加器而执行,并可以包括一个用于在累加器中将三个结果值(进位,和,以及较低值)求和的进位传递加法(CPA)循环,以在完成每行的最终单元乘法运算后产生一单个的值。因此图2示出了图1所示的具有四倍精度的单元乘法运算顺序。
图3是根据本发明的一个示例性实施例的加密系统的结构示意图。参考图3,加密系统1可以包括一个蒙哥马利乘法器10,主机20,存储器访问判定器30,以及一个存储器40。主机20可以包括一个用于与诸如蒙哥马利乘法器10和输入/输出单元之类的外设通信的外设接口21,和用于与存储器40通信的存储器接口。
乘法器10可以包括一个与主机20通信的主机接口11,以及与存储器40通信的存储器接口12。可以通过存储器访问判定器30来调整在乘法器10、主机20和存储器40之间的通信条件。主机接口11可以包括一个特殊功能寄存器(SFR)13。乘法器10还可以包括一个控制器(未示出)来产生特定的控制信号,这些控制信号更详细的描述为FORCE_RI[2:0],SEL_RDO[1:0],FORCE_PP[1:0],FORCE_MM[1:0],USE_X_REG,SEL_CPA_IN[2:0],IS_1ST_CPA_WORD,IS_ODD_PREC,UDP_SIGN_S,UPD_MSlB_S,SFT_BI_PISO,SFT_QI_PISO,STO_BR_ROW,和SHIFT_ACC。
主机20将操作数(即,被乘数A,乘数B,模M)存储在存储器40中,并通过给SFR13发送一个运算初始命令来指示记录运算模式的执行。在将给定的运算结果值S存储在存储器40的一个字段后,乘法器10通过记录在SFR13中的运算结束信息来告知主机20运算结束。存储结果值S的字段可以通过主机20指定。SFR13还可以存储符号位,这将在以后详细描述。
存储器40可以分为指定存储容量的段。存储输入和结果值的段可以通过主机20来指定,同时为每个段指定一个索引。因此,如果在一个乘法运算周期之后所得的结果作为输入值重复应用到下一个乘法运算中(即,使用在诸如RSA的公共密钥加密系统中的幂运算),则可以用于执行在仅仅改变输入和输出值段索引后的下一个乘法运算,即,无需任何数据的移动。这对于提高系统的性能有益处。
图4是根据本发明的一个示例性实施例的蒙哥马利乘法器的框图。图4图示了输入到蒙哥马利乘法器10以及从蒙哥马利乘法器10输出的数据的配置。
图5示出了图3所示的蒙哥马利乘法器的存储器接口12的框图。存储器接口12包括多路复用器12_1和12_3,以及寄存器12_2和12_4。
图6示出了根据控制信号FROCE_RI[2:0]在存储器接口12中由多路复用器12_1选择的信号的真值表,图7示出了根据控制信号SEL_RDO[1:0]在存储器接口12中由多路复用器12_3选择的信号的真值表。多路复用器12_1响应控制信号FORCE_RI[2:0],输出输入信号中的一个。如图6所示,数据信号REG_DI[31:0]从多路复用器12_1输出,同时寄存器12_2可以提供给蒙哥马利乘法器数据路径100,这在以后将详细描述。多路复用器12_3响应控制信号SEL_RDO[1:0]的状态,输出它的输入信号中的一个。如图4所示,数据信号RAM_DO[31:0]从多路复用器12_3输出同时寄存器12_4可以存储在存储器40中。
图8A到8C示出了根据本发明的一个示例性实施例的蒙哥马利乘法器的功能结构框图。图8A到8C表示的蒙哥马利乘法器可以包括:用来存储模M的模寄存器102和103、用来存储被乘数A的被乘数寄存器104和105、存储乘数B的乘数寄存器106、用来存储以前行(SI)的结果值的优先值寄存器101、蒙哥马利记录器110、亭记录器140、用来产生一个模乘积MM的倍模产生器120、用来产生一个部分乘积PP的部分乘积产生器130、用来执行蒙哥马利乘法运算的累加器150、以及用来在累加器150中对三个结果值(进位,和,较低位)求和的CPA模块160。
存储在寄存器101~105的每个操作数的长度可以为(c+w/2)+1。每个寄存器可以包括一个并行输入并行输出(PIPO)寄存器并可以分为可控的1位触发器以及2*(c/w)+1子寄存器。子寄存器的长度可以是w/2。
图9示出了根据本发明的一个示例性实施例的用于存储被乘数值A的示例性寄存器105的电路结构。寄存器105的结构是一个实例;寄存器101~105的每个可以具有相同的结构。参考图9,寄存器105可以被设置成c=256和w=32的情况,并可以包括17个子寄存器200~216和一个符号寄存器220。虽然显示了17个子寄存器,但给定的寄存器可以包括的子寄存器可以例如比17更多或更少,其具体的数量可以随应用而定。
当c=256和w=32,每个子寄存器200~216的大小可以是16位(表示半个字)而符号寄存器220的大小可以是1位。偶数子寄存器200,202,204,...,和216可以接收从存储器接口12所提供的数据(32位字)的低16位PEG_DI[15:0],而奇数子寄存器201,203,205,...,和215可以接收从存储器接口12所提供的数据(32位字)的高16位REG_DI[31:16]。
在其初始形式中,操作数的位长n是块位长c的整数倍,因此符号位由于其间所提供的亭和蒙哥马利记录函数而被加入到操作数中。因此,在蒙哥马利乘法器数据路径100中所使用的每个操作数的位长(c’)变为c’=c+k,其中k的最小值为1。参数c’可以称作为“拓展块的位长”也可以作为表示拓展块的位长的参数。在实际中,当输入数据从存储器40读出并且数据总线宽度w=32使得一个字,半个字,四分之一字分别为32,16,8位时,作为数据传送率,根据数据的传送率k的可以获取的值为w,w/2,和w/4。更小的k值降低了用于单元乘法运算(附图1中的CSA运算)的重复周期次数,因而减小了执行重复周期的相应的硬件的尺寸。这对于用减小的电路尺寸和/或功耗等实现较大的计算性能有好处。
因此,当k=w/2而不是k=w时可以实现简化硬件结构,而与k=w/2比较如果k=w/4具有更简化的硬件结构。因此对k来说可用的值可以是w,w/2,和w/4中的一个。例如,本发明示例性实施例中k的值是k=w/2。因此,例如当块位长c=256,字长w=32,k=32/2=16时,拓展块位长c’可以定义为c’=272位(因为c’=c+k而k=w/2,c’=256+16=272)。存储在SFR13中的符号位SIGN_S可以通过存储器接口12存储在符号寄存器220中。
每个子寄存器响应选通时钟或加载使能控制信号,执行可选择的数据加载运算。因此,从寄存器105输出的被乘数AX_PIPO_REG[272:0]包括273位(拓展的272位块位长和1位SIGN_S位)。寄存器101-104的结构与寄存器105相同。如图8B所示,提供给寄存器101~105的数据为REG_DI[31:0]。如图5所示,例如,数据REG_DI[31:0]可以通过合并从存储器40提供给存储器接口12的字长数据RAM_DI[32:0]、符号位SIGN_A、SIGN_B、和SIGN_S、以及以前结果值的第二更高位MS1B_S而产生。如图6所示的真值表,控制信号FORCE_RI[2:0]确定何时和怎样为设定数据REG_DI[31:0]而产生合并。
优先值寄存器101可以用来提供以前行的结果值,SI,来计算当前行。在图8B中,其显示为SI_PIPO_REG[272:0]。
两个模寄存器102和103用来提供模值M(参见图8B,MY_PIPO_REG[272:0]和MX_PIPO_REG[272:0])给倍模寄存器120,而两个被乘数寄存器104和105用来提供被乘数A给部分乘积产生器130(图8B,AY_PIPO_REG[272:0]和AX_PIPO_REG[272:0])。使用两个寄存器来分别存储被乘数值A和模值M的原因是为了提高处理A和M的速度。例如,在用于被乘数A的两个寄存器104和105中,一个寄存器(104或105)用来存储用在蒙哥马利乘法器的数据路径100中的当前单元乘法运算中的被乘数值A,而另一个用来存储用于下一个单元乘法运算所用使用的被乘数值A。类似地,在用于模M的两个寄存器102和103中,一个寄存器(102或103)用来存储在蒙哥马利乘法器10中当前单元乘法运算所使用的模值M,而另一个寄存器用来存储下一个单元乘法运算所使用的模值M。因此,在完成当前单元乘法运算后,可以无迟延地开始下一个单元乘法运算,以从存储器中读取被乘数和模值。
乘法器10通过重复处理周期取得了一个蒙哥马利乘法解决方案。蒙哥马利记录器110和模乘积产生器120来用来选择模乘积MMI。在所选定的的模乘积MMI中,蒙哥马利记录器110接收从累加器150来的重复数据。在本发明的示例性实施例中的重复数据SPPI[1:0]可以基于存储在累加器150中的和ACC_S_REGI[1:0]、进位ACC_C_REGI[1:0]、较低位ACC_L_REGI[2:0]以及部分乘积PPI[1:0],以及基于用于累加器150的反馈输入的移位控制信号SHIFT_ACC而产生。根据本发明的示例性实施例,重复数据SPPI[1:0]可以以位长(或大小)变化。例如,SPPI可以多于两(2)位,如实施例中的其他部件那样。
图10示出了根据本发明的一个示例性实施例的用于产生模乘积值MMI的模乘积产生器120的结构。模乘积产生器120可以包括多路复用器301~303和AND门304。响应于寄存器选择信号USE_X_REG,多路复用器301输出从模寄存器102和103所提供的模MY_PIPO_REG[272:0]和MX_PIPO_REG[272:0]中的一个。
响应模乘积选择信号SEL_MM[1:0],多路复用器303输出以前值SI_PIPO_REG[272:0]、M、2M和-M中的一个。值2M可以通过将由多路复用器302输出的值M左移一位并在LSB处插入“0”而获得。值-M可以通过位反相由多路复用器302输出的值M而得到。
AND门304将从蒙哥马利记录器110(参见图8A)来的模乘积使能信号EN_MM与多路复用器303的输出合并,以输出模乘积MMI。模乘积MMI可以包括(c+w/2)+2位。例如,当c=256而w=16时,MMI为274位。模乘积使能信号EN_MM可以用来设定模乘积MMI为“0”。如图8B所示,模乘积MMI提供给累加器150。
图11示出了根据本发明的一个示例性实施例的由蒙哥马利记录器110所设置的编码的真值表。虽然图11显示了三个输入M[1]和SPPI[1:0]提供给了蒙哥马利记录器110,但示例性实施例可以配置为具有任意数量的输入和输出。
如前所讨论的,在典型的4基数系统中的模乘积MMI可以包括0,M,2M和3M。要获取3M典型地需要一个将2M加入到M中的附加的加法器或存储元件。加法器和/或存储元件的添加有助于硬件的尺寸和/或计算延迟,这影响了计算的速度和使用的功率。图11所示的编码方法使用了位转换(bitinversion)和位移位,以在无需附加加法器或存储元件的情况下获取模乘积MMI。蒙哥马利记录器110接收模M的第二LSBM[1]和SPPI的两个LSB,即SPPI[1:0]。蒙哥马利记录器110输出模乘积选择信号SEL_MM[1:0],模乘积使能信号EN_MM,以及符号反转信号NEG_MM来表示信号反转(即,信号NEG_MM表示是否使用位转换,获取-M)。
在本发明的另一个示例性实施例中,可使用一种与分别在图13和14中所示的部分乘积产生器130和亭记录器140中所使用的类似的能降低硬件尺寸,提升计算速度和/或降低功耗的方法。总地来说,乘法器100通过累加器150接收模乘积MMI和部分乘积PP1,随后通过重复运算周期执行模乘法。以后将更详细地描述图13和14。
图12示出了根据本发明的一个示例性实施例的用于存储乘数B的寄存器106。乘数寄存器106在除了为校正累加器150的初始值的周期外的每个周期存储从存储器40接收到的乘数B接着在乘数B的以前周期的LSBB1和B0和低位LSB中,通过位移将更高的位BR向右输出。如图12所示,乘数寄存器106包括一个移位寄存器401,多路复用器402和405,以及触发器403和404。
移位寄存器401可以设置成与字长(w=32)具有相同的位长,并可以响应移位选择信号SFT_BI_PISO运转。移位寄存器401在移位选择信号SFT_BI_PISO为逻辑“0”时通过存储器接口12的REG_DI[31:0]重新接收乘法器数据字,而在移位选择信号SFT_BI_PISO为逻辑“1”时将接收到的字的右移两位。移位寄存器401的两个LSB B1和B0输出到亭记录器140。
提供一个信号STO_BR_ROW以存储在单元乘法运算的最后周期中所使用的第二LSB B1为低(即,当移位选择信号SFT_BI_PISO为逻辑“0”)。多路复用器402可选择地输出存储在触发器403中的值或移位寄存器401的第二LSB B1。触发器403存储多路复用器402的输出,而触发器404存储移位寄存器401的第二LSB B1。提供一个信号USE_BR_ROW来控制触发器403的值BR_ROW作为在第二个周期中(即,在校正累加器150的初始值周期后的下一个周期)的位BR来选择。位BR提供给亭记录器140。
亭记录器140和部分乘积选择器130用来选择部分乘积PPI,0,A,
A,2A和
2A中的该值,提供给累加器150。如图8A到8C所示,亭记录器140接收从寄存器106来的乘法器B的位B1,B0和BR,并提供部分乘积选择信号SEL_PP[1:0]、部分乘积使能信号EN_PP、以及部分乘积符号反向信号NEG_PP给部分乘积产生器130。
图13示出了根据本发明的一个示例性实施例的部分乘积产生器130的示例性电路。部分乘积产生器130可以包括多路复用器501~503和一个AND门504。多路复用器501响应于寄存器选择信号USE_X_REG,从寄存器104和105所提供的被乘数AY_PIPO_REG[272:0]和AX_PIPO_REG[272:0]之中输出一个给定的被乘数值A(即A[272:0])。
多路复用器503响应于通过亭记录器140所提供的模乘积选择信号SEL_PP[1:0],输出一个从2A,A,
2A和
A所选择的被乘数值。值
2A通过将多路复用器501所输出的
A左移一位并在最低有效位处插入“1”而得到。值2A通过将多路复用器501输出的值A左移一位并在最低有效位处插入“0”而得到。
AND门504输出部分乘积模乘积PPI,其是通过逻辑地合并亭记录器140的部分乘积使能信号EN_PP与多路复用器503的输出而得到的。部分乘积使能信号EN_PP用来产生“0”作为部分乘积PPI。部分乘积PPI可以是(c+w/2)+2位。在此例中,当c=256而w=32时,部分乘积PPI为274位。部分乘积PPI提供给累加器150。
图14示出了根据本发明的一个示例性实施例的由亭记录器140所管理的编码的真值表。虽然图14公开了三个输入B1,B0和BR提供给亭记录器140,但示例性实施例可以具有所希望的任意数量的输入和输出。
再回到图8A到8C,由模乘积产生器120所产生的模乘积MMI[273:0]和由部分乘积产生器130所产生的部分乘积PPI[273:0]被提供给了累加器150。
图15示出了根据本发明的一个示例性实施例的累加器150。参考图15,累加器150可以包括串联的具有c’=c+w/2+5位的4∶2压缩器610~617。如前面参考图10和13所讨论的,模乘积MMI和部分乘积PPI的每个位长都为(c+w/2)+2位。
累加器150可以将运算结果分开存储在和寄存器620,进位寄存器630,和较低值寄存器650。和寄存器620可以包括有(c+w/2)+3位的触发器。进位寄存器630可以具有(c+w/2)+4位数量的触发器。较低值寄存器650可以包括三个触发器。图8B所示的CPA模块160接收每个都在和寄存器620和进位寄存器630的输出中的低c+1位ACC_S_REG[c:0]和ACC_C_REG[c:0],和在低值寄存器650的输出位中的MSB ACC_L_REG[2]。而且,低位寄存器650的两个LSB ACC_L_REG[2:0]均提供给SPP产生器170,如图8c所示。
在示例性实施例中,到累加器150的输入包括模乘积MMI,部分乘积PPI,模乘积反向信号NEG_MM,部分乘积反向信号NEG_PP,以及用于累加器150的反馈输入的移位控制信号SHIFT_ACC。示例性的累加器150可以设计成CSA结构,用来防止进位传递延迟所导致的性能下降。压缩器610-617的每个可以包括四个输入和两个输出,即4∶2压缩器。
图18显示了一个示例性的4∶2压缩器的电路。压缩器612具有多个输入。压缩器的输入值具有一个循环索引I而输出值具有一个循环索引I+1。
对于此例,压缩器612可以包括全加器701和702。第一全加器701接收CI,PI,和PPI,接着输出第一全加器进位C0和第一全加器和S0。第一全加器进位C0作为输出进位CN而输出,其是下一个更高位位置压缩器k+1(即在图15中的压缩器612和613之间紧邻压缩器612的压缩器)的输入CP。第二全加器702接收该第一全加器的和S0,模乘积MMI,以及1位低值位置压缩器(即,压缩器611)的进位CP,并输出一个第二全加器进位C0和第二全加器和S0。第二全加器进位C0作为下一个进位CI+1而输出,其用做提供给1位低值位置压缩器611的进位CI。第二全加器和S0用做提供给2位较低位位置压缩器的和SI。最低位位置压缩器(即,压缩器610)接收部分乘积反向信号NEG_PP作为进位CP的输入。
4∶2压缩器612的输入和输出之间的关系可以用以下等式来表示。
[公式2]
2CN+2CI+1+SI+1=CP+CI+SI+PPI+MMI
回到图15,全加器640接收从第一压缩器610输出的和SI[0],模乘积的最低位MMI[0],和模乘积反向信号NEG_MM。全加器641接收从第二压缩器611输出的和位,从第一压缩器610输出的进位位,和从全加器640输出的进位位。全加器640的和,全加器641的和与进位均存储在低值寄存器650中。
累加器150相应于当前单元乘法运算,从用于单元乘法的第一周期中在前行中的结果起,累加一个结果。这样的过程称为初始值校正周期,并由多路复用器600-609提供。
压缩器的一个输入端连接两个多路复用器。例如,两个多路复用器600和601连接到相应于模和部分乘积的LSB MMI[0]和PPI[0]的第一压缩器610。多路复用器600接收和位ACC_S_REG[0]作为第一输入而将从它的2位高位位置压缩器所提供的低值ACC_L_REG[0]作为第二输入。多路复用器601接收和位ACC_S_REG[0]作为第一输入和从1位高位位置压缩器611所提供的低值ACC_L_REG[2]作为第二输入。
对于第二压缩器611,多路复用器602接收和位ACC_S_REG[1]作为第一输入并接收从它的2位高位位置压缩器所提供的低值ACC_L_REG[1],作为第二输入。多路复用器603接收和位ACC_S_REG[1]作为第一输入和从它的1位高位位置压缩器612所提供的低值ACC_L_REG[2]作为第二输入。
至于第三压缩器612,多路复用器604接收它的2位高压缩器的和位ACC_S_REG[2]作为第一输入,并且接收与其连接的压缩器612的和位ACC_S_REG[0]作为第二输入。多路复用器605接收它的1位高压缩器的进位ACC_C_REG[2]作为第一输入,并且接收它的1位较低压缩器(即,压缩器611)的进位位ACC_C_REG[0]作为第二输入。
通过最后的压缩器617连接到第三压缩器612的第一和第二多路复用器具有相同的结构。但是,连接到最高压缩器617的多路复用器608的第一输入为连接到其本身的压缩器617的和位,而第二多路复用器609的第一输入是连接到其本身的压缩器617的进位位。
连接到比最高位位置要低的压缩器616的多路复用器606的第一输入是它的1位高压缩器617的和位。从最高位位置提供给四个高压缩器617、616、615和614的模和部分乘积、PPI和MMI每个均具有相同的PPI和MMI的MSB。
图16示出了当移位信号SHIFT_ACC为逻辑“1”时,输入到压缩器中的信号的配置。仅仅在累加器的初始值校正周期后的一周期期间,移位信号SHIFT_ACC为逻辑“0”,而在其余的周期期间均为逻辑“1”。当移位信号SHIFT_ACC为逻辑“1”时,第一和第二多路复用器的每个,600,602,...,和608,和601,603,...,和609输出其第一输入作为输出,如图16所示。
对于除了累加器150的初始值校正周期外的所有周期,存储在低值寄存器650中的和S0[1:0]被输出。由压缩器612~617所提供的进位、和、以及低值都存储在进位寄存器630、和寄存器620、以及低位寄存器650中,并在下一个周期返回到压缩器610~617的反馈循环。由于在下一个周期中要被累加的部分乘积和倍模乘积比先前周期的要高出两位,因此需要它们被反馈输入到比先前存储位置要低两位的位位置。
图17示出了当移位信号SHIFT_ACC为逻辑“0”时,输入到压缩器中的信号的配置。当移位信号SHIFT_ACC为逻辑“0”时,第一和第二多路复用器,600,602,...,和608,和601,603,...,和609的每个输出其第二输入作为其输出,如图17所示。
在每个框的累加器150的初始值校正周期中,累加器150通过累加一个值来执行用于校正累加器150的起始值的运算,所述值与在先行的所得结果值之中的给定位位置中的寄存器中存储的值相匹配。同时,存储在和寄存器620、进位寄存器630和低值寄存器650中的值可以在反馈循环中提供作为累加器150的输入,而无需改变位的位置。
如上所述,部分乘积为PPI={-2A,-A,0,+A,+2A}而模乘积为MMI={SI,-M,0,+M,+2M}。对于累加器150的初始值校正周期,0和SI可分别选做为部分乘积PPI和模乘积MMI。对于累加器150的初始值校正周期节省的所有的其余周期,部分乘积PPI和模乘积MMI根据图11和14中的真值表所示的编码方法来选定。
被选择作为部分和模乘积的值-A和-M可以通过位反向而得到。通过对A和M每个左移一位可以得到值+2A和+2M,而值-2A可以通过将A向左移一位后再反向而得到。通过左移以及位反向运算而得到的部分和模乘积结果可作为1的余数。根据本发明的示例性实施例的乘法器10可以用于使用2的余数的系统的操作。2的余数等于将“1”加入到1的余数中所得的数。部分乘积的反向信号NEG_PP和模乘积的反向信号NEG_MM可以用来表示1的余数-A,-2A和-M作为它们的2的余数。换句话说,当部分乘积PP为-A或-2A时部分乘积反向信号NEG_PP为“1”,而当部分乘积PP为0,+A或+2A时部分乘积反向信号NEG_PP为“0”。模乘积反向信号NEG_MM在模乘积MMI为-M时置为“1”,而在在模乘积MMI为SI,0,+M或+2时置为“0”。
根据本发明的示例性实施例的蒙哥马利乘法器为了执行一个多精度的运算可以设置成如图1所示的运算矩阵形式。同时,该示例性的蒙哥马利乘法器的内部数据可以用最优化的位长表示而不会数据溢出,因此可以防止无必要设计的太多的位。以下的数学分析可以为在运算矩阵中的每行的运算结果值提供一个示例性的范围,从而确定表示每行运算所得结果所需的位数。在图1所示的运算矩阵的行中,除了最后一行外的所有行都使用了如下的被乘数A,乘数B,以及模M。
[公式3]
M:2n-1+1≤M<2n-1
A:-M≤A<+M
B:-2C+W/2-1≤B<2C+W/2-1
从第一行(参见图1的ROW_0)所产生的中间结果S0由公式4所确定。
[公式4]
在公式4中,R表示常数2c+w/2。由于这里所描述的该示例性蒙哥马利乘法器与基数4的结构关联,因此该乘法器每个周期处理乘数B的2位。同时在每个周期中使用的Q值从{-1,0,+1,+2}中选择一个。因此,在给定行中的Q的最大和最小值可由下面公式5来确定。
[公式5]
Max(Q)=(+2)·20+(+2)·22+(+2)·24+...+(+2)·2c+w/2-2
Min(Q)=(-1)·20+(-1)·22+(-1)·24+...+(-1)·2c+w/2-2
使用以上的条件,则中间结果S0的最大和最小值可以通过以下的公式6得到。
[公式6]
由于模M具有n位,因此在以上所述的范围内通过一数字表示的所需数为n+2位,并包括一个符号位。
从第二行(图1中的ROW_1)所得到的中间结果S1可以根据前面的第一行的中间结果S0而得到。对S1的计算可以用以下的公式7来描述。
[公式7]
S1的最大和最小值可以通过以下的公式8来确定。
[公式8]
在由上述公式8所规定的范围内表示的该数字的位数也是n+2位。通过相同的方式,第三行(附图1,ROW_2)的中间结果S2也能用n+2位表示。
此外,在结果和行的单组为多精度的最后行而存在的情况下,单精度的结果值可以用包括一个符号位的n+1位表示。这一特性可以用以下的步骤来证实。
被乘数A,乘数B,以及模M的范围可以通过公式9来设定。
[公式9]
M:2n-1+1≤M<2n+1 :2cp-1+1≤M<2cp-1
A:-M≤A<+M
B:-M≤B<+M
最终结果S可以如公式10所示来概括。
[公式10]
在公式10中,参数R为常量并等于2(c+w/2)p。公式10所示的Q的最大和最小值可以通过公式11来确定。
[公式11]
Max(Q)=(+2)·20+(+2)·22+(+2)·24+...+(+2)·2(c+w/2)·p-2
Min(Q)=(-1)·20+(-1)·22+(-1)·24+...+(-1)·2(c+w/2)·p-2
因此,最终结果S的最大和最小值可以通过下面的公式12而取得。
[公式12]
表示以上条件范围中的数的位数为n+1。
如以上所述,在多精度运算方法中,在超出从其他行(图1的中间行ROW_0到ROW_2)确定的中间结果的+M的范围时会产生数据溢出,但最后一行(图1的ROW_3)的中间结果却处于最大值的附近。这样的情况对应于为每个周期所选择的Q值在高位位置周围几乎都为+2,并且被乘数A的符号等于在对应内部行使用的乘数值B的块符号。
每行的运算结果均用n+2位表示。但是,当n是w的整数倍同时存储器40的大小也为w的整数倍时,在存储器40中不能有效地存储附加的两位。因此,根据本发明的示例性实施例,在n+2位中的低n位可以存储在存储器40中而其余的2位(即,符号位,也就是最高位(MSB),和第二MSB)存储在蒙哥马利乘法器10的内部寄存器(图3,SFR13)中。高2位可以称为SIGN_S和MS1B_S。
在完成直到最后一行的运算处理后,符号位符号SIGN_S和第二高位MS1B_S具有同样的值。但是,在完成对内部行的运算处理后,第二高位可以根据符号位设定的“0”而设定为“1”。
根据本发明的示例性实施例的蒙哥马利乘法器数据路径100可以进一步包括移位寄存器106,115,116和180。在每个移位寄存器106,115,116和180中所接受的位长为w,因此在每个寄存器中它的位一个周期可以右移2位。寄存器106和115可以是并行输入串行输出移位寄存器,而寄存器116和180可以是串行输入并行输出移位寄存器。
每个周期所产生的模乘积MMI可以指定给仅仅在累加器150的初始值校正周期中的前一个结果SI。每个周期所产生的MMI可以通过由图11所示的用于其他周期的真值表所确定的qIM来选择。这里,qI为{-1,0,1,2}。
对于图1所示的行,第一单元乘法运算CSA0.0,CSA1.0,CSA2.0,和CSA3.0(以下称为“Gen-Q Box”)可以根据qI的计算而执行,所确定的qI值可以存储在存储器40中以便重复利用在相同行的单元乘法运算中的qI。图8A到8C所示的蒙哥马利记录器110对于每行第一单元乘法运算Gen-Q Box除了累加器150的起始值校正周期之外的所有周期产生具有两(2)位符号的QO[1:0],随后再将该QO[1:0]存储到移位寄存器116中。
图19显示了移位寄存器116为QO_SIPO_REG[15:0]的详细的配置。该移位寄存器116每一周期将数据位右移2位并在高2位位置处存储由蒙哥马利记录器110所提供的QO[1:0]。每当在其中引入新的字长数据时,该移位寄存器116将其数据(即,QO_SIPO_REG[31:0])传送到存储器40。
图20显示了移位寄存器115为QI_PISO_REG[15:0]的详细的配置。存储在存储器40中的QO以字长W为单元传送到移位寄存器115中。移位寄存器115的低值QI[1:0]提供给蒙哥马利记录器110。移位寄存器115当移位控制信号SFT_QI_PISO为“0”时响应于一个时钟信号,从存储器40接收新数据,但当移位控制信号SFT_QI_PISO为“1”时将其数据右移2位。
除了对于每行的第一单元乘法运算Gen-Q Box外剩余的全部单元乘法运算CSA0.1-CSA0.3,CSA1.1-CSA1.3,CSA2.1-CSA2.3,和CSA3.1-CSA3.3(以下称为“Gen-S Box”)来说,2位乘法结果SO[1:0](表示累加器150的和)对于除累加器150的初始值校正周期外的每个周期而产生。该SO[1:0]值按序存储在移位寄存器180中。
图21显示了用来存储累加器150的和SO[1:0]的移位寄存器180的详细配置。移位寄存器180响应一个时钟信号,将它的数据一周期右移2位,并在高2位位置处存储累加器150的SO[1:0]值。每当在其中引入新的字长数据时,移位寄存器180将其数据SO_SIPO_REG[31:0]传送到存储器40。
图22显示了用于产生使用在蒙哥马利记录器110中的部分乘积重复数据SPPI[1:0]的SPP产生电路170。该部分乘积重复数据SPPI[1:0]可以基于存储在累加器150中的和,和寄存器620的ACC_S_REG[1:0]以及进位寄存器630的ACC_C_REG[1:0]两个LSB,较低位寄存器650的值ACC_L_REG[2:0],部分乘积的两个LSB PPI[1:0],以及用于累加器150的反馈输入的移位控制信号SHIFT_ACC而确定。值ACC_S_REG[1:0],ACC_C_REG[1:0],和ACC_L_REG[2:0]可以通过2位加法器801求和。来自2位加法器801的求和的值通过2位加法器802而与PPI[1:0]求和。2位加法器803将PPI[1:0]与ACC_L_REG[1:0]求和。多路复用器804在移位控制信号SHIFT_ACC为逻辑“0”时选择加法器802的输出,而在移位控制信号SHIFT_ACC为逻辑“1”时通过选择加法器803的输出而输出重复部分乘积数据SPPI[1:0]。如以上所述,重复部分乘积数据SPPI[1:0]可以提供给蒙哥马利记录器110。本发明的示例性实施例中没有位的尺寸(或长度)的限制。例如,重复部分乘积数据SPPI可以多于2位,如实施例中的其他部分那样。
图23示出了根据本发明的一个示例性实施例的进位传送加法器(CPA)运算模块160的电路结构。例如,C=256而w=32。在图1所示的CPA中运算模块160,CPA0,CPA1,CPA2,和CPA3可以按序运算。多路复用器901接收在存储于累加器150的进位寄存器630的进位位中的低值ACC_C_REG[255:0]作为块长度。多路复用器902输入存储在累加器150的和寄存器620中的和S[255:0]。响应输入选择信号SEL_CPA_IN[2:0],多路复用器901和902按序在256个输入位中从LSB选择32位。来自多路复用器901和902的输出可以分别存储在寄存器903和904中。输入选择信号SEL_CPA_IN[2:0]可以从“0000”变到“1111”。因此,CPA模块160通过以32位为单元进行8个重复CPA周期而能够处理256位的运算。
进位传递加法器905将多路复用器902的进位输入C_IN加入到存储在寄存器903和904中的值CPA_A_REG[31:0]和CPA_B_REG[31:0]。在完成每行的进位保存加法(CSA)运算后,累加器150所得结果值为ACC_S_PEG[256:0]+ACC_C_REG[256:0]+ACC_L_REG[2],这个结果通过CPA运算的经由求和转换成单一数字后存储在存储器40中。因此,在CPA运算的第一周期中(即,SEL_CPA_IN[2:0]=“000”)进位输入C_IN为ACC_L_REG[2],而在剩余周期中(即,从SEL_SPA_IN[2:0]=“001”到SEL_CPA_IN[2:0]=“111”)其余进位输入C_IN为先前运算周期的进位输出C_OUT。来自进位传递加法器905的进位输出C_OUT可以存储在寄存器906中。
用于一行的结果值的新的符号位SIGN_S是通过将进位输出C_OUT(在CPA模块160中通过重复运算将进位ACC_C_REG[255:0]加入和ACC_S_REG[255:0]后所产生的)与ACC_C_REG[256]和ACC_S_REG[256]执行一个XOR运算而取得。符号位SIGN_S可以在信号UPD_SIGN_S的控制下变为最新计算所得的值。控制信号UPD_SIGN_S直接将第二高位MS1B_S变为最新计算所得的值。
图24示出了当以偶数倍多精度模式从每行的最后CSA运算运行转为一个CPA运算时,在累加器150中保持一个给定字的最高半字的特征。在偶数倍多精度模式(即,双倍精度模式或四倍精度模式)的情况下,当从每行的最后的CSA运算转到CPA运算步骤时,累加器150的输出位的最后的半个字(即,当w=32时的16位)保存在寄存器180中而不会传送到存储器40中。这种效果如图24所示。如图24所示,具有四倍精度模式的乘法器重复CSA单元运算周期四次。每个单元乘法运算的数据长度可以通过以下的公式13来定义(其中c=256,w=32)。
[公式13]
c’=c+w/2=(c/w)*w+w/2=(256/32)*32+32/2=8*32+16=272
第二单元运算CSA1的最后半字(16位)与第三单元运算CSA2的第一个半字合并或组合的输出包括了一个整字。该整字存储在存储器40中。另外,由于没有更多的单元运算模块,因此第四单元运算CSA3的最后半字的输出保存在寄存器180中而不会被传送给存储器40。为了强制地将保存在寄存器180中的半个字在CPA运算中放入存储器40中,使用了其中的控制信号IS_IST_CPA_WORD和IS_ODD_PREC。
再回到图23,在偶数倍精度模式(IS_ODD_PREC=‘0’)中,低16位,作为在CPA运算的第一周期(IS_IST_CPA_WORD=“1”)中从进位传递加法器905输出的结果,包括具有存储在寄存器180中的高16位SO_SIPO_REG[31:16]的一个整字(32位)。该整字存储在寄存器925中。从进位传递加法器905输出的结果的高16位存储在寄存器922中。
在余下的周期中,在来自进位传递加法器905的输出位中的低16位存储在寄存器925中,并与在前一个周期中存储器922中的高16位合并。寄存器925的数据因此在每个周期中都存储在存储器40中。
图25示出了用于亭记录器140的给定输入/输出信号的逻辑规则的配置。如以上根据图14所讨论的,亭记录器140可以具有组合逻辑电路的结构。在亭记录器140的输入和输出信号之间的逻辑规则可以如图25所示来配置。
在图25中,A[1]和A[0]是用在当前单元乘法运算中的被乘数A的两个LSB。因此,-A的两个LSB为{A[1]xor A[0],A[0]},而+2A和-2A的两个LSB为{A[0],0}。
当强制部分乘积控制信号FORCE_PP[1:0]为“11”时,部分乘积PPI的值通过乘数值B1,B0,和BR来确定。另外,当强制部分乘积控制信号FORCE_PP[1:0]为“01”,“10”和“00”时,部分乘积PPI的值分别强制为+A,-A,和0。
在图1所示的用于每个单元乘法运算的累加器150的初始值校正周期中,前一行的结果值SI“堆栈”在累加器150中。这样的情况发生时,部分乘积PPI选定为“0”而模乘积MMI选定为前一行的结果值SI。在累加器150的初始值校正周期中,强制部分乘积选择信号FORCE_PP[1:0]设定为“11”来将部分乘积PPI的值强制设定为“0”。
在根据本发明的示例性实施例的蒙哥马利乘法器10中,模的求幂结果可以表示为蒙哥马利余数“XR mod M”。但是,所需的结果是通常的余数“Xmod M”。因此,强制部分乘积控制信号FORCE_PP[1:0]可以用来将蒙哥马利余数变换为通常的余数。例如,可以通过对将乘数B设定为“+1”和被乘数A设定为蒙哥马利乘法的结果值通过再次进行蒙哥马利乘法而得到通常的余数。为此,强制部分乘积控制信号FORCE_PP[1:0]可以仅仅在运算矩阵第一行的每个单元运算中的初始值校正周期后的第一个周期中设定为‘01’,而将部分乘积PPI变为+A。在余下的所有周期中,强制部分乘积控制信号FORCE_PP[1:0]均设定为‘11’来‘强制’部分乘积PPI为0。
输入到亭记录器140的B1,B0,和BR由乘数寄存器106提供。参考图8C,输入A[1:0]可以从AX_PIPO_REG[1:0]或AY_PIPO_REG[1:0]中选择一个。输入SEL_PP_D[1:0]是选择信号SEL_PP的延迟形式;该延迟是由于延迟电路141(也称之为“流水线寄存器”141)的锁存FF1所产生的,如图8B所示。亭记录器140的部分乘积使能信号EN_PP和输出SEL_PP[1:0]被提供给部分乘积产生器130。部分乘积反向信号NEG_PP提供给累加器150,而部分乘积PPI[1:0]从亭记录器140输出到SPP产生器170,如图22所示。
图26示出了用于蒙哥马利记录器110的给定输入/输出信号的逻辑规则的配置。蒙哥马利记录器110也可以包括组合逻辑电路。在蒙哥马利记录器110的新的输入和输出信号之间的示例性逻辑规则如图26所示。在图26中,用于qI(QI[1:0]和QO[1:0])的编码方法可以通过以下的公式14来概括。
[公式14]
MM=0→qI=“00”
MM=+M→qI=“01”
MM=-M→qI=“10”
MM=+2M→qI=“11”
在图26中,M1表示模M的第二低值。当强制模部分乘积选择信号FORCE_MM[1:0]为‘11’时,模乘积MMI的值通过重复部分乘积数据SPP[1:0]和M1而确定。但是,当强制模部分乘积选择信号FORCE_MM[1:0]为‘10’时,模乘积MMI可以强制选择为前一行的结果值SI。当FORCE_MM[1:0]为‘01’时,模乘积MMI可以被产生作为由QI[1:0]所选择的值。
对于运算矩阵所有的单元乘法运算,模乘积MMI的值根据累加器150的初始值校正周期中的前一行的结果值SI来选择。由于必须选择适于运算矩阵的每行中第一单元运算(即,Gen-Q Box)中的重复部分乘积数据SPP[1:0]和M1模乘积MMI,因此在除了累加器150的初始值校正周期之外所有剩余周期中强制模乘积控制信号FORCE_MM[1:0]均设定为‘00’。在初始值校正周期中,计算qI接着将其作为QO[1:0]输出,并通过寄存器116存储在存储器40中。
在除了用于运算矩阵的每行的第一单元运算(即,Gen-Q Box)之外的‘剩余’单元运算(即,Gen-S Box)中,通过重复使用在第一单元运算Gen-QBox期间存储在存储器40中的qI(即,输入QI[1:0])而选择模乘积MMI。输入QI[1:0]可以通过将强制模乘积控制信号FORCE_MM[1:0]设定为‘01’而重复使用。
根据本发明的示例性实施例的乘法数据路径100除了蒙哥马利乘法运算外还能够有助于通常的乘法运算。对通常的乘法运算来说,也可以使用其中的强制模乘积控制信号FORCE_MM[1:0]。但是,由于通常的乘法运算无需使用模,因此没有模乘积MMI。因此,强制模乘积控制信号FORCE_MM[1:0]仅仅用于在每个单元运算的累加器150的初始值校正周期期间设定为‘10’,其将模乘积MMI设定为前一行的结果值SI。在其余的周期期间,强制模乘积控制信号FORCE_MM[1:0]设定为‘00’以强制模乘积MMI为0。
再回到图8A,从SPP产生器170提供输入到蒙哥马利记录器110的重复部分乘积数据SPP[1:0]。M1用在第一单元运算(即,Gen-Q Box),并在存储在寄存器102中的模值M的第二LSB和存储在寄存器103中的第二LSB之中选择。同时,QI[1:0]是存储在寄存器115中的两个LSB。通过触发器111将来自SEL_MM[1:0]的输入SEL_MM_D[1:0]迟延一个周期。蒙哥马利记录器110的输出QO[1:0]提供给寄存器116。模乘积选择信号SEL_MM[1:0]和模乘积使能信号EN_MM提供给模乘积产生器120。模乘积反向信号NEG_MM提供给累加器150。
参照图8B,干扰信号(glitch)去除器114可以用来通过去除出现在输出信号SEL_MM[1:0]、EN_MM、和NEG_MM的干扰信号而降低其功耗。干扰信号去除器114可以包括锁存器或触发器,并可以根据在蒙哥马利乘法器10的另一个寄存器或触发器所用的反向时钟或一个时钟而操作。干扰信号去除器114的用途可以根据具体情况而定。如果一应用需要更快的运算速度而不是降低功耗,那么可以通过在蒙哥马利乘法器10中略去干扰信号去除器114而缩短关键途径的斜度(skew)。
流水线寄存器141用来通过2级的流水线寄存器而增加运算频率。乘数寄存器106和亭记录器140可以比其他的模块的运行早一个周期。控制信号USE_X_REG可以一起控制以下的电路组件:用于给亭记录器选择输入信号A[1:0]的多路复用器142、模乘积产生器120、部分乘积产生器130、多路复用器113和选择信号M1输入给蒙哥马利记录器110的触发器112。这里,由于流水线运算,只有选择亭记录器140的输入信号A[1:0]的多路复用器142直接使用控制信号USE_X_REG,而其他的电路120、130、112和113接收从控制信号USE_X_REG延迟了一个周期的信号,如图8B所示。
如以上所述,本发明的示例性实施例可以用于提供使用了可升级的蒙哥马利乘法器的多精度乘法运算。而且,该乘法器可以执行通常的乘法运算和蒙哥马利乘法运算。示例性的蒙哥马利乘法器可配置为通过使用强制模乘积控制信号FORCE_MM[1:0]将一个蒙哥马利余数转换为通常的余数。
虽然本发明已通过附图所示的示例性实施例进行了描述,但其并不限于此。对于本领域的技术人员来说各种置换,修改和变换均可以在不背离本发明示例性实施例的范围和精神的前提下进行。
Claims (76)
1.一种乘法器,包括:
一模乘积产生器,用来选择n位模数-M,0,M,2M和前一行结果SI其中之一作为模乘积;
一部分乘积产生器,用来选择-2A,-A,0,+A和+2A被乘数其中之一作为部分乘积;和
一累加器,用来堆栈该所选择的模乘积和部分乘积。
2.根据权利要求1的乘法器,其中
M从在n位模数中的当前输入拓展位块中形成;
A从在n位被乘数中的当前输入拓展位块中形成。
3、根据权利要求2的乘法器,其中前一行结果从在累加器的前一行的乘法结果中相应当前被乘数和模数的输入拓展块的位数而形成。
4、根据权利要求2的乘法器,其中模乘积产生器选择前一行结果作为在累加器的初始值校正周期中的模乘积。
5、根据权利要求4的乘法器,其中部分乘积产生器在累加器的初始值校正周期中设定部分乘积为‘0’。
6、根据权利要求4的乘法器,其中初始值校正周期表示使用n位被乘数和n位模数的当前输入拓展块位的单元乘法运算的一个第一周期。
7、根据权利要求5的乘法器,其中初始值校正周期表示使用了n位被乘数和n位模数的当前输入拓展块位的单元乘法运算的一个第一周期。
8、根据权利要求1的乘法器,其中-M模数通过对模数M反向而取得。
9、根据权利要求1的乘法器,其中2M模数通过对模数M移位而取得。
10、根据权利要求2的乘法器,进一步包括:
一个模寄存器用来存储n位模数(M)的当前输入位;
一个被乘数寄存器用来存储n位被乘数(A)的当前输入位;和
一个乘数寄存器用来存储n位乘数(B)的当前输入位。
11、根据权利要求10的乘法器,其中
模寄存器和被乘数寄存器每一个都作为c’+1位寄存器配置,和
c’为一个正数,表示n位被乘数和n位模数至少之一的拓展块位长,c’小于或等于n。
12、根据权利要求10的乘法器,其中模寄存器进一步包括多个每个大小为半个字的子寄存器,和一个1位符号寄存器。
13、根据权利要求12的乘法器,进一步包括用于存储字长数据的存储器接口模块,其中
模寄存器的多个子存储器包括偶数的子寄存器和奇数的子寄存器,
偶数的子寄存器,配置为用来存储由存储器接口模块所提供的字长数据的低有效位半字,和
奇数的子寄存器,配置为用来存储由存储器接口模块所提供的字长数据的高有效位半字。
14、根据权利要求10的乘法器,其中被乘数寄存器进一步包括多个每个大小为半个字的子寄存器,和一个1位符号寄存器。
15、根据权利要求14的乘法器,进一步包括用于存储字长数据的存储器接口模块,其中
被乘数寄存器的多个子存储器包括偶数的子寄存器和奇数的子寄存器,
偶数的子寄存器,配置为用来存储由存储器接口模块所提供的字长数据的低有效位半字,和
奇数的子寄存器,配置为用来存储由存储器接口模块所提供的字长数据的高有效位半字。
16、根据权利要求10的乘法器,进一步包括:
一个移位寄存器用来存储n位乘数的输入位作为字长(w),该字长等于或小于块长(c),w≤c≤n,并将数据移位两位。
17、根据权利要求16的乘法器,其中部分乘积选择器从n位乘数的当前输入位的三个位(B0,B1,BR)中产生一个部分乘积选择信号,并选择n位被乘数的输入位A、2A、-A、和-2A其中之一作为部分乘积。
18、根据权利要求17的乘法器,其中2A被乘数通过对A被乘数移位而得到。
19、根据权利要求17的乘法器,其中-A被乘数通过对A被乘数反向而得到。
20、根据权利要求17的乘法器,其中-2A被乘数通过对A被乘数反向并移位而得到。
21、一种运算单元,包括:
一存储器;
一主机,用来将被乘数A、乘数B和模数M存储在存储器中;和
权利要求1的乘法器,用来根据所存储的被乘数、乘数和模数在主机的控制下执行蒙哥马利乘法运算,并将蒙哥马利乘法运算的运算结果存储在存储器中。
22、根据权利要求21的运算单元,其中
M从在n位模数中的当前输入拓展位块中形成;
A从在n位被乘数中的当前输入拓展位块中形成;和
前一行结果从在累加器的前一行乘法结果中相应被乘数和模数的当前输入拓展块的位中形成。
23、根据权利要求21的运算单元,其中
模乘积选择器读取前一行结果SI和来自存储器的n位模数的一部分,以选择SI,-M,0,M和2M其中之一作为模乘积,和
部分乘积选择器读取n位被乘数的一部分以选择-2A、-A、0、+A和+2A其中之一作为部分乘积,该选择的模和部分乘积由累加器堆栈。
24、根据权利要求21的运算单元,其中乘法器重复执行蒙哥马利乘法运算直到被乘数、乘数和模都从存储器中读取出。
25、根据权利要求21的运算单元,其中
被乘数、乘数和模数的每个均为n位,和
乘法器通过单元乘法运算每个周期的c’位处理读出的被乘数、乘数和模数,其中c’表示被乘数、乘数和模数的位的拓展块的位长。
26、根据权利要求25的运算单元,其中乘法器
从存储器读取乘数作为w位块存储在大小为w位长度的寄存器中,其中w表示一个字长,
依序按d位处理存储在w位寄存器中的乘数,其中d表示基数的数字长,和
在处理完w位寄存器存储的w位后从存储器读取乘数的下一个w位。
27、根据权利要求26的运算单元,其中乘法器还进一步包括一个控制器,用来产生一个强制部分乘积控制信号。
28、根据权利要求27的运算单元,其中当强制部分乘积控制信号具有第一值时,部分乘积选择器从乘法器的当前输入位的三个位(B0、B1、BR)中产生部分乘积选择信号和部分乘积使能信号,并基于被乘数(A)的输入位选择A、2A、-A、-2A和0其中之一作为部分乘积。
29、根据权利要求27的运算单元,其中当强制部分乘积控制信号具有第二值时,部分乘积选择器选择被乘数(A)作为部分乘积。
30、根据权利要求27的运算单元,其中当强制部分乘积控制信号具有第三值时,部分乘积选择器根据被乘数(A)选择-A作为部分乘积。
31、根据权利要求27的运算单元,其中强制部分乘积控制信号在累加器的初始值校正周期中具有一个第四值,并且当强制部分乘积控制信号具有该第四值时,部分乘积选择器选择0作为部分乘积。
32、根据权利要求29的运算单元,其中当强制部分乘积控制信号具有一个第三值时,部分乘积选择器根据被乘数(A)选择-A作为部分乘积。
33、根据权利要求32的运算单元,其中强制部分乘积控制信号在累加器的初始值校正周期中具有一个第四值。
34、根据权利要求32的运算单元,其中当强制部分乘积控制信号具有该第四值时,部分乘积选择器选择0作为部分乘积。
35、根据权利要求27的运算单元,其中乘法器响应于存储在累加器中的进位值、和值和低值、部分乘积、和用于累加器的反馈输入的移位控制信号产生重复部分乘积数据SPPI。
36、根据权利要求35的运算单元,其中该控制器进一步产生一个强制模乘积控制信号。
37、根据权利要求36的运算单元,其中当强制模乘积控制信号具有一个第一值时,模乘积选择器产生一个模乘积选择信号,以选择来自重复数据SPPI的-M,0,M和2M以及模(M)的第二较低位中的一个。
38、根据权利要求36的运算单元,其中强制模乘积控制信号在累加器的初始值校正周期中具有一个第二值。
39、根据权利要求38的运算单元,其中当强制模乘积控制信号具有该第二值时,模乘积选择器选择前一行的结果作为模乘积。
40、根据权利要求39的运算单元,其中当强制模乘积控制信号具有一个第三值时,模乘积选择信号根据值QI来产生。
41、根据权利要求40的运算单元,其中强制模乘积控制信号在除初始值校正周期外的其余周期中都具有一个第四值。
42、根据权利要求41的运算单元,其中当强制部分乘积控制信号具有第二值时,模乘积选择器选择被乘数(A)作为部分乘积来得到一个通常的余数。
43、根据权利要求26的运算单元,其中被乘数,乘数和模数的每个在单元乘法运算中为c’位,该单元乘法运算在所有的运算周期中执行(n/c)*(n/c)次。
44、根据权利要求43的运算单元,其中该乘法器
重复以w位从存储器读取n位的被乘数和模数,
将w位存储在大小为c’位长度的c’位存储器中,和
将c’位寄存器的c’位作为一个整体处理。
45、根据权利要求44的运算单元,其中每个单元乘法运算的第一运算周期表示累加器的初始值校正周期。
46、根据权利要求45的运算单元,其中模乘积选择器选择前一行的结果作为在累加器的初始值校正周期中的模乘积。
47、根据权利要求46的运算单元,其中在累加器的初始值校正周期中部分乘积选择器将部分乘积设定为‘0’。
48、根据权利要求44的运算单元,进一步包括:
一模寄存器,存储具有模(M)的当前输入拓展块长度(c’)的位;
一被乘数寄存器,存储具有被乘数(A)的当前输入拓展块长度(c’)的位;和
一乘数寄存器,存储具有乘数(B)的当前输入字长(w)的位。
49、根据权利要求48的运算单元,其中
模寄存器和被乘数寄存器每个都实施为c’+1位的寄存器,和
c’为一个正数,表示n位被乘数和n位模数至少之一的拓展块位长度,c’小于或等于n。
50、根据权利要求48的运算单元,其中模寄存器和被乘数寄存器的每个还包括多个子寄存器和一个响应时钟信号和加载使能信号之一可选择地加载一个新值的1位符号寄存器。
51、根据权利要求48的运算单元,其中
被乘数寄存器是一个具有w位长度的寄存器,w表示一个字长,和
乘数寄存器响应于时钟和控制信号中的一个将数据右移或加载新的值。
52、一种累加器,包括:
多个用来以进位保存加法模式运算的压缩器,该多个压缩器的每个接收一个模乘积,部分乘积、第一值和第二值,并产生一个相应的下一个和、一个相应的下一个进位和一个相应的下一个低值;
一和寄存器,用来从多个压缩器的每个接收相应的下一个和以输出一个相应的更新的当前和;
一进位寄存器,用来从多个压缩器的每个接收相应的下一个进位来输出一个相应的更新的当前进位;和
一低值寄存器,用来从多个压缩器的每个接收相应的下一个低值以输出一个相应的更新的当前低值。
53、根据权利要求52的累加器,其中多个压缩器的每个接收下一个和,下一个进位和下一个低值作为在累加器的初始值校正周期后的周期中的第一和第二值。
54、根据权利要求53的累加器,其中在除了累加器的起始值校正周期之后的周期的所有周期中,多个压缩器中的每个接收来自2位较高压缩器的和,和来自一位较高压缩器的一个进位,作为第一和第二值。
55、根据权利要求54的累加器,其中
将多个压缩器中的最低压缩器的和提供给第一附加全加器,
将最较低压缩器的进位、第二较低压缩器的和和第一附加全加器的进位提供给第二附加全加器,和
第一附加全加器的和以及第二附加全加器的进位及和表示下一个低值。
56、根据权利要求53的累加器,进一步包括多个多路复用器用来响应于表示在累加器的初始值校正周期后的一个周期的信号,选择该第一和第二值。
57、根据权利要求52的累加器,其中
模乘积从一个n位的模数产生,
部分乘积从一个n位的被乘数和n位的乘数来产生,
部分乘积和模乘积的每个为c+k+2=c’+2位,其中k为8的整数倍,c表示位块的位长,c’表示拓展的位块的位长,而n为c的整数倍,c≤n并且c’=c+k。
58、根据权利要求55的累加器,其中多个压缩器为串接并且数量至少为c+k+5=c+5’。
59、根据权利要求52的累加器,其中多个压缩器的每个均为一个4∶2压缩器。
60、根据权利要求52的累加器,其中多个压缩器的每个都包括两个全加器。
61、根据权利要求52的累加器,其中多个压缩器的最较低压缩器接收部分乘积的反向信号和模乘积的反向信号中的一个。
62、一种运算单元,包括:
一乘法器,用来顺序地执行用于一个包括n/c位块的n位被乘数,包括n/c位块的一个n位乘数,包括n/c位块的n位模数,拓展的乘数块和拓展的模数块的单元乘法运算(n/c)*(n/c)次,其中n>c,并且n和c是正整数。
63、根据权利要求62的运算单元,其中该乘法器进一步包括:
一模乘积产生器,用来选择n位模数-M,0,M,2M和前一行结果SI其中之一作为模乘积;
一部分乘积产生器,用来选择-2A,-A,0,+A和+2A被乘数其中之一作为部分乘积;和
一累加器,用来堆栈该所选择的模乘积和部分乘积。
64、根据权利要求63的运算单元,其中
M是在n位模数中c’位(c’=c+k)的当前输入拓展块,k为整数,和
A是在n位被乘数中c’位的当前输入拓展块。
65、根据权利要求63的运算单元,其中前一行结果是在累加器的前一行乘法结果中相应于被乘数和模数的当前输入拓展块的位的相乘结果。
66、根据权利要求62的运算单元,其中
乘法器执行用于多行的单元乘法运算以在每行的结束产生乘法结果,和
除了最后一行外的所有行的乘法结果都具有n+2位的位长。
67、根据权利要求66的运算单元,其中最后一行的乘法结果具有n+1位的位长。
68、根据权利要求62的运算单元,其中n表示包括了一个或多个被乘数,乘数,和模数的操作数的位长。
69、根据权利要求68的运算单元,其中c表示块的位长,n表示c的整数倍。
70、根据权利要求69的运算单元,其中c’表示拓展块的位长,c’=c+k,k为整数。
71、根据权利要求70的运算单元,其中在乘法器中的数据路径的大小与c’成比例。
72、一种乘法单元,包括:
一具有n/c行数的运算矩阵,n和c是正整数,其中每行与重复执行n/c次的单元蒙哥马利乘法运算和进位传递加法运算关联;
一具有进位保存加法结构的累加器,用来执行该重复单元乘法运算;和
一附加进位传递加法器,用来执行该进位传递加法运算。
73、根据权利要求72的蒙哥马利乘法单元,其中一旦该矩阵的n/c行的单元乘法乘法运算和进位传递加法运算完成,则蒙哥马利乘法运算完成。
74、一种乘法器,包括:
一模乘积产生器,用来从多个可选择的n位模数M中选择一个模乘积,从在该n位模数中当前输入拓展块中形成的一个给定的模数M;
一部分乘积产生器,用来从多个可选择的n位被乘数A中选择一个被乘数作为部分乘积,从在n位被乘数中当前位输入拓展块中形成一个给定的被乘数A;和
一累加器,将选择的模乘积和部分乘积累加以产生一个乘积结果。
75、一种运算单元,包括:
一存储器;
一主机,用来将被乘数A、乘数B和模数M存储在存储器中;和
权利要求74所述的乘法器,根据所存储的被乘数、乘数和模数,在主机的控制下,所述乘法器执行蒙哥马利乘法运算,并将蒙哥马利乘法运算的乘法结果存储在存储器中。
76、一种蒙哥马利乘法器,适于基于输入其中的控制信号的逻辑状态而执行一蒙哥马利乘法运算和通常的乘法运算。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR13855/04 | 2004-03-02 | ||
KR1020040013855A KR20050088506A (ko) | 2004-03-02 | 2004-03-02 | 다중 세정도를 지원하는 확장형 몽고메리 모듈러 곱셈기 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1702613A true CN1702613A (zh) | 2005-11-30 |
Family
ID=34909984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005100788260A Pending CN1702613A (zh) | 2004-03-02 | 2005-03-02 | 蒙哥马利模乘法器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7805478B2 (zh) |
JP (1) | JP4870932B2 (zh) |
KR (1) | KR20050088506A (zh) |
CN (1) | CN1702613A (zh) |
DE (1) | DE102005010764A1 (zh) |
FR (1) | FR2867579B1 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970504A (zh) * | 2014-05-07 | 2014-08-06 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 在ecc中实现位数自适应模乘运算的方法及模乘运算器 |
CN104090737A (zh) * | 2014-07-04 | 2014-10-08 | 东南大学 | 一种改进型部分并行架构乘法器及其处理方法 |
CN106528046A (zh) * | 2016-11-02 | 2017-03-22 | 上海集成电路研发中心有限公司 | 长位宽时序累加乘法器 |
CN107273089A (zh) * | 2016-03-30 | 2017-10-20 | 华邦电子股份有限公司 | 非模数乘法器、用于非模数乘法的方法及计算装置 |
CN108241481A (zh) * | 2016-12-26 | 2018-07-03 | 航天信息股份有限公司 | 一种适用于rsa算法的部分求余乘法器设备 |
CN108242994A (zh) * | 2016-12-26 | 2018-07-03 | 阿里巴巴集团控股有限公司 | 密钥的处理方法和装置 |
CN109669670A (zh) * | 2018-12-26 | 2019-04-23 | 贵州华芯通半导体技术有限公司 | 用于蒙哥马利模乘中的不均等分块的数据处理方法及装置 |
CN109857368A (zh) * | 2018-12-20 | 2019-06-07 | 上海大学 | 一种位数众多、可分组、可重构的多值电子运算器及方法 |
CN111680789A (zh) * | 2017-04-11 | 2020-09-18 | 上海兆芯集成电路有限公司 | 神经网络单元 |
CN112328962A (zh) * | 2020-11-27 | 2021-02-05 | 深圳致星科技有限公司 | 矩阵运算优化方法、装置、设备和可读存储介质 |
CN112506468A (zh) * | 2020-12-09 | 2021-03-16 | 上海交通大学 | 支持高吞吐多精度乘法运算的risc-v通用处理器 |
CN113032845A (zh) * | 2021-03-31 | 2021-06-25 | 郑州信大捷安信息技术股份有限公司 | 一种用于资源受限芯片的EdDSA签名实现方法和装置 |
CN113296733A (zh) * | 2021-04-25 | 2021-08-24 | 阿里巴巴新加坡控股有限公司 | 数据处理方法以及装置 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100458031B1 (ko) * | 2003-03-14 | 2004-11-26 | 삼성전자주식회사 | 몽고메리 유형의 모듈라 곱셈 장치 및 방법 |
US8073892B2 (en) * | 2005-12-30 | 2011-12-06 | Intel Corporation | Cryptographic system, method and multiplier |
DE102007014808A1 (de) * | 2007-03-28 | 2008-10-02 | Texas Instruments Deutschland Gmbh | Multiplizier- und Multiplizier- und Addiereinheit |
EP2208165A4 (en) * | 2007-11-02 | 2010-11-24 | Certicom Corp | MONTGOMERY ARITHMETIC SIGNED |
KR100946256B1 (ko) * | 2007-12-26 | 2010-03-08 | 대구대학교 산학협력단 | 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기 |
KR101590322B1 (ko) * | 2009-05-15 | 2016-02-19 | 삼성전자주식회사 | 연산임계경로가 감소된 모듈러 곱셈기 및 연산임계경로 감소방법 |
KR101248912B1 (ko) * | 2009-12-31 | 2013-03-29 | 한양대학교 산학협력단 | 항혈관신생 활성을 가지는 재조합 아데노바이러스 |
KR20110105555A (ko) * | 2010-03-19 | 2011-09-27 | 삼성전자주식회사 | 효율적인 하드웨어 구성을 갖는 몽고메리 승산기 |
KR101929984B1 (ko) | 2012-05-17 | 2018-12-18 | 삼성전자주식회사 | 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법 |
KR101925868B1 (ko) | 2012-05-17 | 2018-12-06 | 삼성전자주식회사 | 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템 |
CN103645883A (zh) * | 2013-12-18 | 2014-03-19 | 四川卫士通信息安全平台技术有限公司 | 基于fpga的高基模乘器 |
US9535656B2 (en) * | 2014-03-14 | 2017-01-03 | International Business Machines Corporation | Pipelined modular reduction and division |
KR102132261B1 (ko) * | 2014-03-31 | 2020-08-06 | 삼성전자주식회사 | 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 |
KR102338863B1 (ko) | 2015-09-09 | 2021-12-13 | 삼성전자주식회사 | 연산을 제어하기 위한 장치 및 방법 |
KR102594656B1 (ko) * | 2016-11-25 | 2023-10-26 | 삼성전자주식회사 | 보안 프로세서, 이를 포함하는 어플리케이션 프로세서 및 보안 프로세서의 동작 방법 |
RU2653263C1 (ru) * | 2017-07-24 | 2018-05-07 | федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" | Арифметико-логическое устройство для умножения чисел по модулю |
EP4080350A4 (en) * | 2020-04-01 | 2022-12-28 | Huawei Technologies Co., Ltd. | MULTIMODE FUSION MULTIPLIER |
TWI802095B (zh) | 2021-11-22 | 2023-05-11 | 財團法人工業技術研究院 | 模數乘法電路與對應之計算模數乘法之方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0294476A1 (en) | 1986-12-30 | 1988-12-14 | Hughes Aircraft Company | N-bit sum-carry accumulator |
FR2726667B1 (fr) * | 1994-11-08 | 1997-01-17 | Sgs Thomson Microelectronics | Procede de mise en oeuvre de multiplication modulaire selon la methode montgomery |
KR100257124B1 (ko) | 1997-05-16 | 2000-05-15 | 문상재 | 공통 피승수 모듈라 곱셈을 이용한 고속 멱승 방법 |
US6356636B1 (en) | 1998-07-22 | 2002-03-12 | Motorola, Inc. | Circuit and method for fast modular multiplication |
GB2352309B (en) * | 1999-07-21 | 2004-02-11 | Advanced Risc Mach Ltd | A system and method for performing modular multiplication |
JP2002236581A (ja) * | 2001-02-08 | 2002-08-23 | Matsushita Electric Ind Co Ltd | 演算回路、演算方法、及びプログラム記録媒体 |
FR2822260A1 (fr) | 2001-03-14 | 2002-09-20 | Bull Sa | Procedes et dispositifs pour accelerer le temps de calcul d'un produit de montgomery d'un multiplication et d'une exponentiation modulaire |
US20020172355A1 (en) | 2001-04-04 | 2002-11-21 | Chih-Chung Lu | High-performance booth-encoded montgomery module |
JP2003216411A (ja) * | 2002-01-23 | 2003-07-31 | Sony Corp | 多倍長演算処理装置およびicデバイス |
JP2003216034A (ja) * | 2002-01-23 | 2003-07-30 | Ail Kk | べき乗剰余演算器 |
JP2004258141A (ja) * | 2003-02-24 | 2004-09-16 | Fujitsu Ltd | モンゴメリ乗算剰余の多倍長演算のための演算装置 |
-
2004
- 2004-03-02 KR KR1020040013855A patent/KR20050088506A/ko not_active Application Discontinuation
-
2005
- 2005-03-01 US US11/068,371 patent/US7805478B2/en active Active
- 2005-03-01 FR FR0502052A patent/FR2867579B1/fr active Active
- 2005-03-01 JP JP2005056659A patent/JP4870932B2/ja active Active
- 2005-03-02 CN CNA2005100788260A patent/CN1702613A/zh active Pending
- 2005-03-02 DE DE200510010764 patent/DE102005010764A1/de not_active Withdrawn
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970504A (zh) * | 2014-05-07 | 2014-08-06 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 在ecc中实现位数自适应模乘运算的方法及模乘运算器 |
CN103970504B (zh) * | 2014-05-07 | 2017-03-29 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 在ecc中实现位数自适应模乘运算的方法及模乘运算器 |
CN104090737A (zh) * | 2014-07-04 | 2014-10-08 | 东南大学 | 一种改进型部分并行架构乘法器及其处理方法 |
CN104090737B (zh) * | 2014-07-04 | 2017-04-05 | 东南大学 | 一种改进型部分并行架构乘法器及其处理方法 |
CN107273089B (zh) * | 2016-03-30 | 2020-09-29 | 华邦电子股份有限公司 | 非模数乘法器、用于非模数乘法的方法及计算装置 |
CN107273089A (zh) * | 2016-03-30 | 2017-10-20 | 华邦电子股份有限公司 | 非模数乘法器、用于非模数乘法的方法及计算装置 |
CN106528046B (zh) * | 2016-11-02 | 2019-06-07 | 上海集成电路研发中心有限公司 | 长位宽时序累加乘法器 |
CN106528046A (zh) * | 2016-11-02 | 2017-03-22 | 上海集成电路研发中心有限公司 | 长位宽时序累加乘法器 |
CN108242994B (zh) * | 2016-12-26 | 2021-08-13 | 阿里巴巴集团控股有限公司 | 密钥的处理方法和装置 |
CN108241481B (zh) * | 2016-12-26 | 2022-08-23 | 航天信息股份有限公司 | 一种适用于rsa算法的部分求余乘法器设备 |
CN108241481A (zh) * | 2016-12-26 | 2018-07-03 | 航天信息股份有限公司 | 一种适用于rsa算法的部分求余乘法器设备 |
CN108242994A (zh) * | 2016-12-26 | 2018-07-03 | 阿里巴巴集团控股有限公司 | 密钥的处理方法和装置 |
CN111680789B (zh) * | 2017-04-11 | 2023-04-28 | 上海兆芯集成电路有限公司 | 神经网络单元 |
CN111680789A (zh) * | 2017-04-11 | 2020-09-18 | 上海兆芯集成电路有限公司 | 神经网络单元 |
CN109857368B (zh) * | 2018-12-20 | 2022-07-26 | 上海大学 | 一种位数众多、可分组、可重构的多值电子运算器及方法 |
CN109857368A (zh) * | 2018-12-20 | 2019-06-07 | 上海大学 | 一种位数众多、可分组、可重构的多值电子运算器及方法 |
CN109669670A (zh) * | 2018-12-26 | 2019-04-23 | 贵州华芯通半导体技术有限公司 | 用于蒙哥马利模乘中的不均等分块的数据处理方法及装置 |
CN112328962A (zh) * | 2020-11-27 | 2021-02-05 | 深圳致星科技有限公司 | 矩阵运算优化方法、装置、设备和可读存储介质 |
CN112506468A (zh) * | 2020-12-09 | 2021-03-16 | 上海交通大学 | 支持高吞吐多精度乘法运算的risc-v通用处理器 |
CN112506468B (zh) * | 2020-12-09 | 2023-04-28 | 上海交通大学 | 支持高吞吐多精度乘法运算的risc-v通用处理器 |
CN113032845A (zh) * | 2021-03-31 | 2021-06-25 | 郑州信大捷安信息技术股份有限公司 | 一种用于资源受限芯片的EdDSA签名实现方法和装置 |
CN113032845B (zh) * | 2021-03-31 | 2022-02-11 | 郑州信大捷安信息技术股份有限公司 | 一种用于资源受限芯片的EdDSA签名实现方法和装置 |
CN113296733A (zh) * | 2021-04-25 | 2021-08-24 | 阿里巴巴新加坡控股有限公司 | 数据处理方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20050088506A (ko) | 2005-09-07 |
JP4870932B2 (ja) | 2012-02-08 |
US7805478B2 (en) | 2010-09-28 |
JP2005250481A (ja) | 2005-09-15 |
US20050198093A1 (en) | 2005-09-08 |
FR2867579A1 (fr) | 2005-09-16 |
DE102005010764A1 (de) | 2005-09-29 |
FR2867579B1 (fr) | 2008-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1702613A (zh) | 蒙哥马利模乘法器 | |
CN1148643C (zh) | 模幂运算装置 | |
CN1149496C (zh) | 自适应视频信号运算处理装置 | |
Kuang et al. | Low-cost high-performance VLSI architecture for Montgomery modular multiplication | |
CN1153129C (zh) | 用于处理器定制操作的设备 | |
CN1265280C (zh) | 扩展整数的计算域的范围 | |
CN1530824A (zh) | 用于执行蒙哥马利型模乘法的装置及方法 | |
CN1734527A (zh) | 数据变换装置和数据变换方法 | |
CN1630204A (zh) | 具有矩阵转换技术的循环冗余码计算方法及系统 | |
CN1205538C (zh) | 用于多精度整数算术运算的装置 | |
CN1259617C (zh) | 一种加快rsa加/解密过程的方法及其模乘、模幂运算电路 | |
CN1258057A (zh) | 信息处理装置 | |
CN1791855A (zh) | 混合Galois域机和Galois域除法器和平方根机及其方法 | |
CN1387340A (zh) | 多级计数装置 | |
CN1242321C (zh) | 应用蒙哥马利算法的幂剩余运算器 | |
CN1648853A (zh) | 多字乘法-累加电路和蒙哥马利模乘法-累加电路 | |
CN1607518A (zh) | 在Montgomery乘法内利用SIMD指令 | |
CN100437470C (zh) | 模数增值方法及装置 | |
CN1967469A (zh) | 高效模乘方法及装置 | |
Erle et al. | Decimal floating-point multiplication | |
CN1739094A (zh) | 防止隐蔽信道攻击的整数除法方法 | |
CN1689267A (zh) | 以相似的效率处理任意密钥位长加密操作的方法和设备 | |
CN1313918C (zh) | 在有限域中用于基转换的方法和设备 | |
CN1957384A (zh) | 电子元件和数据处理方法 | |
CN2864808Y (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 | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |