当前位置: 首页 > 专利查询>英特尔公司专利>正文

一种用于计算机系统的快速模数运算“EMOD”技术方案

技术编号:2856026 阅读:291 留言:0更新日期:2012-04-11 18:40
emod运算是对传统的模数运算而言是一种计算上的替代,这是一种减少了计算花销,但也降低了精度的运算。可以对某个基数n定义一种模数运算,此时,emod运算使用“假想模数”来确定操作数的模数,所述假想模数是n的整数倍。选择假想模数,使得emod运算与模数运算相比,在计算上不那么昂贵。因此,emod运算对于使用超大操作数的乘法或指数运算格外有用。在完成了与乘法或指数运算相关的中间处理后,可以使用一次传统的模数运算,以得到最终的结果。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

技术介绍
本专利技术涉及模数运算。具体地说,它涉及可被高效率执行的模数运算。模数运算(俗称为“mod”运算)用于确定除法运算的余数。因此,A mod N的表达式确定了将数A除以N后所获得的余数结果。例如,17除以3后商为5,余数是2,“17 mod3”产生值为2的结果。在许多计算应用中都执行Mod运算,包括两方在从事加密通信前所进行的密钥协商。在密钥协商的上下文中,在两个终端处对具有(AB)mod n形式的方程进行估算。通常,A和B值可以很大——从1024到2048位那么长。当然,当两个具有长度I的操作数相乘时,结果可能长达2I。在这么大操作数的情况下,在处理器中建立具有全宽度乘法结果的结果寄存器是不切实际的。相反,当生成乘法结果时,一般通过对每个乘积进行mod运算来截断它们。因为mod运算利用具有自身长度(比如j)的模数来除每个乘积,所以结果的长度总是小于j。假设长度为I的操作数其中含有相等数量的0和1,对(AB)mod n的估算就需要I次乘法和I次mod运算。这包含了大量的计算开销。与这些计算相关联的开销在高负载的环境中变得格外严重,例如在计算机服务器中,预计每小时将收到几千次密钥协商请求(也许更多)。由此,在本领域中需要一种快速的、计算上节省的技术来求解具有大操作数的mod运算。附图说明图1图示了根据本专利技术一种实施方案的方法。图2图示了根据本专利技术一种实施方案的方法。图3图示了根据本专利技术一种实施方案的另一种方法。图4是图示了根据本专利技术一种实施方案的中间积生成器的框图。图5是图示了根据本专利技术一种可替换实施方案的IPG的框图。图6图示了根据本专利技术一种实施方案的乘法器。图7图示了根据本专利技术一种实施方案的乘法器电路。图8图示了根据本专利技术另一种实施方案的乘法器电路。图9图示了根据本专利技术一种实施方案的乘法器电路。图10图示了根据本专利技术另一种实施方案的乘法器电路。图11图示了根据本专利技术一种实施方案的另一种方法。具体实施例方式本专利技术的各种实施方案介绍了一种用在mod计算中的“emod”运算。emod是对传统mod运算而言是一种计算上的替代,是一种计算上不那么昂贵,但精度也不那么精确的运算。emod运算可以与在(AB)mod n计算或(A·B)mod n计算的估算过程中产生的中间乘法(interstitial multiplication)一同使用。最后,当得到一个最终乘积时,可以执行传统的mod运算来获得最终的结果。按照这种方式,本专利技术的实施方案避免了也许数以千计的mod运算的计算开销,否则可能要在运算的中间阶段执行这些mod运算。虽然计算机执行的是二进制值(基2)的算术运算,但是通过使用传统的十进制数(基10)的例子,可以最好地理解emod运算的优点。为了估算23754 mod 3331的运算,通常是将23754除以3331而获得余数437。然而,这种除法在计算上是很昂贵的。如果使用接近10k的某个模数的倍数(其中,k是任意数),就容易多了。使用这样一个倍数(比如用9993来取代3331),就可以利用一系列减法来取代除法运算。在从23754中两次减去9993后,剩余数为3768(该数包括正确的余数437加上3331)。这个剩余数足以和在计算的中间阶段所获得的中间积一起使用。当获得最终结果并采用真正的mod运算时,将会从可能已从各中间阶段延续下来的模数的任何倍数中分隔出正确的余数。然而,这个“假想模数”的使用提高了处理速度。以上解释的实施例也适用于二进制方案。在基2域中,对于某个模数n,选择一个非常接近2k(k是任意数)的倍数。就像上面十进制实施例中在最高有效位位置中包含一串连续的9一样,在二进制的实施例中,假想模数在最高有效位位置中将包含一串连续的1。这个性质简化了在从操作数A中减去该假想模数时所进行的减法运算。给定模数n,可以选出假想模数mn,使得m·n=2k-d,其中d<n。然后可以将emod运算用作递归减法,在所述的递归减法中,从源操作数中减去mn,直到剩余数小于mn。这两个参数d和m控制着emod运算。(A·B)emod n的估算根据一种实施方案,可以通过将操作数B解析为每个长w位的多个字来估算c=(A·B)emod n (1)因此B=B[M-1],B[M-2],···,B=Σi=0M-12w·iB[i]---(2)]]>于是,方程1变为 c=(A·Σi=0M-12w·iB[i])emodn---(3)]]>=((...(A·B[M-1]·2w+A·B[M-2])·2w+...)·2w+A·B)emod nemod运算是分布式的,并且可以在圆括号内重复。这一性质导致了图1中所图示的方法。图1示出了根据本专利技术一种实施方案的方法1000。根据方法1000,变量c可以被初始化为0(框1010)。此后,方法1000可以迭代地考虑被乘数B的每一个字,从对应于B的最高有效位位置的字一直到对应于最低有效位位置的字。在每次迭代期间,方法1000可以将前次迭代后的c值左移一个字的长度(框1020)。新的B字(标记为“B[i]”)与A相乘后的值可以和c移位后的值相加(框1030)。此后,可以对框1030所得到的结果执行emod运算(框1040)。emod的结果可以用作下一次迭代的初始值c。在最后一次迭代之后,所获得的c值就是计算结果。在一种实施方案中,可以根据以下伪代码用软件实现图1中的方法。 基本相乘/求模算法其中,shiftleft(w,c)仅将c操作数左移w位。这等同于在二进制中乘以2w。emod操作符基于假想模数mn=m·n进行运算,产生一个精度因子d=2k-mn。如果操作数c被分成两部分,商q和余数r,使得c=q·2k+r (4)则emod运算可以被定义为(c emod n)=((q·2k+r)emod n)=(q-2k+r-q·mn) (5)=(r+q·d)这个emod函数可以被合并到图1的方法中,如图2的实施方案所示。图2图示了根据本专利技术一种实施方案的方法1100。根据方法1100,虚拟变量c可以被初始化为0(框1110)。此后,该方法可以迭代地考虑被乘数B的每一个字,从对应于B的最高有效位位置的字一直到对应于最低有效位位置的字。所述方法可以由前次迭代得到的c值来计算商值q和余数值r(框1120、1130)。可以将c中从最高有效位位置到第k位位置之间的位范围(a span of bits)在左移w位后作为商q。可以将c中从第k-1位位置到第0位位置之间的剩余位在左移w位后作为余数r。此后,c值可被估算为c=A·B[i]+r+d·q(6)(框1140)。最后一次迭代所获得的c值可被当作emod函数的结果。在一种实施方案中,可以根据以下伪代码用软件实现图2中的方法。 相乘/求模算法这种实现方式要求可以立即得到乘积d·q。实际上,由于要花一些时间来生成这个乘积,所以上述方法在该乘积变为可用之前实际上被停止了。在可替换的实施方案中,所述方法在没有获得d·q乘积的情况本文档来自技高网...

【技术保护点】
一种对操作数执行模数运算的方法,所述操作数由迭代执行的数学函数来表示,所述模数取值为n,所述方法包括:    在完成了多次中间迭代的每一次迭代后,使用一个等于n的倍数的假想模数来确定其结果的模数,所述假想模数接近于取某个任意k值的2↑[k]值,以及    在完成了最终的迭代后,使用真正的模数n来确定其结果的模数。

【技术特征摘要】
US 2002-5-9 10/140,8851.一种对操作数执行模数运算的方法,所述操作数由迭代执行的数学函数来表示,所述模数取值为n,所述方法包括在完成了多次中间迭代的每一次迭代后,使用一个等于n的倍数的假想模数来确定其结果的模数,所述假想模数接近于取某个任意k值的2k值,以及在完成了最终的迭代后,使用真正的模数n来确定其结果的模数。2.一种求解(A·B)mod n运算的方法,包括对于B的几个字中的每一个字,迭代地将c值移位一个字长;将移位后的c值与A·B[i]值相加,其中B[i]是B的第i个字,使用等于n的倍数的假想模数mn,对所述相加的结果执行emod运算,以及在最后一次迭代之后,对所述最后一次迭代所得到的相加结果执行模数运算。3.一种求解(A·B)mod n运算的方法,包括对于B的几个字中的每一个字,迭代地由c的先前估值的高次序部分生成商q,由所述c值的低次序部分生成余数r,将c重新估值为A·B[i]+r+d·q,其中...

【专利技术属性】
技术研发人员:埃里克霍斯泰德
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1