欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種用于計(jì)算機(jī)系統(tǒng)的快速模數(shù)運(yùn)算"emod"的制作方法

文檔序號:6412683閱讀:434來源:國知局
專利名稱:一種用于計(jì)算機(jī)系統(tǒng)的快速模數(shù)運(yùn)算"emod"的制作方法
背景技術(shù)
本發(fā)明涉及模數(shù)運(yùn)算。具體地說,它涉及可被高效率執(zhí)行的模數(shù)運(yùn)算。
模數(shù)運(yùn)算(俗稱為“mod”運(yùn)算)用于確定除法運(yùn)算的余數(shù)。因此,A mod N的表達(dá)式確定了將數(shù)A除以N后所獲得的余數(shù)結(jié)果。例如,17除以3后商為5,余數(shù)是2,“17 mod3”產(chǎn)生值為2的結(jié)果。
在許多計(jì)算應(yīng)用中都執(zhí)行Mod運(yùn)算,包括兩方在從事加密通信前所進(jìn)行的密鑰協(xié)商。在密鑰協(xié)商的上下文中,在兩個終端處對具有(AB)mod n形式的方程進(jìn)行估算。通常,A和B值可以很大——從1024到2048位那么長。當(dāng)然,當(dāng)兩個具有長度I的操作數(shù)相乘時(shí),結(jié)果可能長達(dá)2I。在這么大操作數(shù)的情況下,在處理器中建立具有全寬度乘法結(jié)果的結(jié)果寄存器是不切實(shí)際的。相反,當(dāng)生成乘法結(jié)果時(shí),一般通過對每個乘積進(jìn)行mod運(yùn)算來截?cái)嗨鼈?。因?yàn)閙od運(yùn)算利用具有自身長度(比如j)的模數(shù)來除每個乘積,所以結(jié)果的長度總是小于j。
假設(shè)長度為I的操作數(shù)其中含有相等數(shù)量的0和1,對(AB)mod n的估算就需要I次乘法和I次mod運(yùn)算。這包含了大量的計(jì)算開銷。與這些計(jì)算相關(guān)聯(lián)的開銷在高負(fù)載的環(huán)境中變得格外嚴(yán)重,例如在計(jì)算機(jī)服務(wù)器中,預(yù)計(jì)每小時(shí)將收到幾千次密鑰協(xié)商請求(也許更多)。
由此,在本領(lǐng)域中需要一種快速的、計(jì)算上節(jié)省的技術(shù)來求解具有大操作數(shù)的mod運(yùn)算。


圖1圖示了根據(jù)本發(fā)明一種實(shí)施方案的方法。
圖2圖示了根據(jù)本發(fā)明一種實(shí)施方案的方法。
圖3圖示了根據(jù)本發(fā)明一種實(shí)施方案的另一種方法。
圖4是圖示了根據(jù)本發(fā)明一種實(shí)施方案的中間積生成器的框圖。
圖5是圖示了根據(jù)本發(fā)明一種可替換實(shí)施方案的IPG的框圖。
圖6圖示了根據(jù)本發(fā)明一種實(shí)施方案的乘法器。
圖7圖示了根據(jù)本發(fā)明一種實(shí)施方案的乘法器電路。
圖8圖示了根據(jù)本發(fā)明另一種實(shí)施方案的乘法器電路。
圖9圖示了根據(jù)本發(fā)明一種實(shí)施方案的乘法器電路。
圖10圖示了根據(jù)本發(fā)明另一種實(shí)施方案的乘法器電路。
圖11圖示了根據(jù)本發(fā)明一種實(shí)施方案的另一種方法。
具體實(shí)施例方式
本發(fā)明的各種實(shí)施方案介紹了一種用在mod計(jì)算中的“emod”運(yùn)算。emod是對傳統(tǒng)mod運(yùn)算而言是一種計(jì)算上的替代,是一種計(jì)算上不那么昂貴,但精度也不那么精確的運(yùn)算。emod運(yùn)算可以與在(AB)mod n計(jì)算或(A·B)mod n計(jì)算的估算過程中產(chǎn)生的中間乘法(interstitial multiplication)一同使用。最后,當(dāng)?shù)玫揭粋€最終乘積時(shí),可以執(zhí)行傳統(tǒng)的mod運(yùn)算來獲得最終的結(jié)果。按照這種方式,本發(fā)明的實(shí)施方案避免了也許數(shù)以千計(jì)的mod運(yùn)算的計(jì)算開銷,否則可能要在運(yùn)算的中間階段執(zhí)行這些mod運(yùn)算。
雖然計(jì)算機(jī)執(zhí)行的是二進(jìn)制值(基2)的算術(shù)運(yùn)算,但是通過使用傳統(tǒng)的十進(jìn)制數(shù)(基10)的例子,可以最好地理解emod運(yùn)算的優(yōu)點(diǎn)。為了估算23754 mod 3331的運(yùn)算,通常是將23754除以3331而獲得余數(shù)437。然而,這種除法在計(jì)算上是很昂貴的。如果使用接近10k的某個模數(shù)的倍數(shù)(其中,k是任意數(shù)),就容易多了。使用這樣一個倍數(shù)(比如用9993來取代3331),就可以利用一系列減法來取代除法運(yùn)算。在從23754中兩次減去9993后,剩余數(shù)為3768(該數(shù)包括正確的余數(shù)437加上3331)。這個剩余數(shù)足以和在計(jì)算的中間階段所獲得的中間積一起使用。當(dāng)獲得最終結(jié)果并采用真正的mod運(yùn)算時(shí),將會從可能已從各中間階段延續(xù)下來的模數(shù)的任何倍數(shù)中分隔出正確的余數(shù)。然而,這個“假想模數(shù)”的使用提高了處理速度。
以上解釋的實(shí)施例也適用于二進(jìn)制方案。在基2域中,對于某個模數(shù)n,選擇一個非常接近2k(k是任意數(shù))的倍數(shù)。就像上面十進(jìn)制實(shí)施例中在最高有效位位置中包含一串連續(xù)的9一樣,在二進(jìn)制的實(shí)施例中,假想模數(shù)在最高有效位位置中將包含一串連續(xù)的1。這個性質(zhì)簡化了在從操作數(shù)A中減去該假想模數(shù)時(shí)所進(jìn)行的減法運(yùn)算。
給定模數(shù)n,可以選出假想模數(shù)mn,使得m·n=2k-d,其中d<n。然后可以將emod運(yùn)算用作遞歸減法,在所述的遞歸減法中,從源操作數(shù)中減去mn,直到剩余數(shù)小于mn。這兩個參數(shù)d和m控制著emod運(yùn)算。
(A·B)emod n的估算根據(jù)一種實(shí)施方案,可以通過將操作數(shù)B解析為每個長w位的多個字來估算c=(A·B)emod n (1)因此B=B[M-1],B[M-2],···,B
=Σi=0M-12w·iB[i]---(2)]]>于是,方程1變?yōu)?
c=(A·Σi=0M-12w·iB[i])emodn---(3)]]>=((...(A·B[M-1]·2w+A·B[M-2])·2w+...)·2w+A·B
)emod nemod運(yùn)算是分布式的,并且可以在圓括號內(nèi)重復(fù)。這一性質(zhì)導(dǎo)致了圖1中所圖示的方法。
圖1示出了根據(jù)本發(fā)明一種實(shí)施方案的方法1000。根據(jù)方法1000,變量c可以被初始化為0(框1010)。此后,方法1000可以迭代地考慮被乘數(shù)B的每一個字,從對應(yīng)于B的最高有效位位置的字一直到對應(yīng)于最低有效位位置的字。在每次迭代期間,方法1000可以將前次迭代后的c值左移一個字的長度(框1020)。新的B字(標(biāo)記為“B[i]”)與A相乘后的值可以和c移位后的值相加(框1030)。此后,可以對框1030所得到的結(jié)果執(zhí)行emod運(yùn)算(框1040)。emod的結(jié)果可以用作下一次迭代的初始值c。在最后一次迭代之后,所獲得的c值就是計(jì)算結(jié)果。
在一種實(shí)施方案中,可以根據(jù)以下偽代碼用軟件實(shí)現(xiàn)圖1中的方法。

基本相乘/求模算法其中,shiftleft(w,c)僅將c操作數(shù)左移w位。這等同于在二進(jìn)制中乘以2w。
emod操作符基于假想模數(shù)mn=m·n進(jìn)行運(yùn)算,產(chǎn)生一個精度因子d=2k-mn。如果操作數(shù)c被分成兩部分,商q和余數(shù)r,使得c=q·2k+r (4)則emod運(yùn)算可以被定義為(c emod n)=((q·2k+r)emod n)=(q-2k+r-q·mn) (5)=(r+q·d)這個emod函數(shù)可以被合并到圖1的方法中,如圖2的實(shí)施方案所示。
圖2圖示了根據(jù)本發(fā)明一種實(shí)施方案的方法1100。根據(jù)方法1100,虛擬變量c可以被初始化為0(框1110)。此后,該方法可以迭代地考慮被乘數(shù)B的每一個字,從對應(yīng)于B的最高有效位位置的字一直到對應(yīng)于最低有效位位置的字。所述方法可以由前次迭代得到的c值來計(jì)算商值q和余數(shù)值r(框1120、1130)??梢詫中從最高有效位位置到第k位位置之間的位范圍(a span of bits)在左移w位后作為商q。可以將c中從第k-1位位置到第0位位置之間的剩余位在左移w位后作為余數(shù)r。此后,c值可被估算為c=A·B[i]+r+d·q(6)(框1140)。最后一次迭代所獲得的c值可被當(dāng)作emod函數(shù)的結(jié)果。
在一種實(shí)施方案中,可以根據(jù)以下偽代碼用軟件實(shí)現(xiàn)圖2中的方法。

相乘/求模算法這種實(shí)現(xiàn)方式要求可以立即得到乘積d·q。實(shí)際上,由于要花一些時(shí)間來生成這個乘積,所以上述方法在該乘積變?yōu)榭捎弥皩?shí)際上被停止了。
在可替換的實(shí)施方案中,所述方法在沒有獲得d·q乘積的情況下,可以完成當(dāng)前的迭代。而且它還可以前進(jìn)到i的下一次迭代,并結(jié)合從前面的迭代中取得d·q乘積。圖3圖示了這種實(shí)施方案。
圖3圖示了根據(jù)本發(fā)明一種實(shí)施方案的方法1200。根據(jù)方法1200,變量c可被初始化為0(框1210)。此后,該方法可以迭代地考慮被乘數(shù)B的每一個字,從對應(yīng)于B的最高有效位位置的字一直到對應(yīng)于最低有效位位置的字。在每次迭代中,方法1200可以由前次迭代得到的c值來計(jì)算商值q[i]和余數(shù)值r[i](框1120、1130)??梢詫中從最高有效位位置到第k位位置之問的位范圍在左移w位后作為商q[i]??梢詫中從第k-1位位置到最低有效位位置之間的剩余位在左移w位后作為余數(shù)r[i]。前次迭代所獲得的商q[i-1]也可以被左移w位(框1240)。此后,c值可被估算為c=A·B[i]+r[i]十d·q[i-1], (7)這里,q[i-1]值是在框1240中所獲得的移位后的值(框1250)。
在最后一次迭代之后,最后一次迭代所獲得的商可以與c相加(框1260)。這一運(yùn)算所獲得的值可被當(dāng)作emod運(yùn)算的結(jié)果。
在一種實(shí)施方案中,可以根據(jù)以下偽代碼用軟件實(shí)現(xiàn)圖3中的方法。


具有1個周期q延遲的相乘/求模算法在這種實(shí)施方案中,前次迭代所產(chǎn)生的d·q乘積(重新標(biāo)記為d·q1)被向左移位,以解決兩個字之間的位置差。
如上所述,圖3的實(shí)施方案在等待d·q運(yùn)算的估算結(jié)果時(shí)無需停止。這種實(shí)施方案適用于高負(fù)載的應(yīng)用,在這種應(yīng)用中最重要的就是避免計(jì)算延時(shí)。
大數(shù)與小數(shù)間的乘法如上所述,被乘數(shù)B可以被解析為多個更小的字B[w],w=0到M-1,這些字可被用作與乘數(shù)A之間執(zhí)行乘法的基礎(chǔ)。下面將討論這一實(shí)施方案的電路實(shí)現(xiàn)方式。
圖4中的框圖根據(jù)本發(fā)明的一種實(shí)施方案示出了中間積生成器(“IPG”)100。IPG 100由被乘數(shù)A生成中間積。它可以包括被乘數(shù)寄存器(這里被稱為“A寄存器”)110、一對移位器120、130(分別標(biāo)記為“移位1”和“移位2”)和“3A寄存器”140。圖中用虛線來表示A寄存器和3A寄存器,這是因?yàn)樗鼈兛梢?但不是必須)被放置在IPG 100自身內(nèi);或者,可以在某種其他電路中提供這些寄存器,但是它們的內(nèi)容可以作為輸入被提供給IPG100。IPG 100還可以包括一對多路復(fù)用器(俗稱為“MUX”)150、160和反相器170。
移位器120、130中的每一個都提供了那些代表A寄存器中所存儲的值在移位預(yù)定數(shù)量的位(bit)位置后的值。第一移位器120可以提供朝最高有效位位置移位了1位位置的A值。它被標(biāo)記為“移位1”。第二移位器130可以提供己經(jīng)朝最高有效位位置移位2位位置的A值,它被標(biāo)記為“移位2”。在二進(jìn)制數(shù)據(jù)系統(tǒng)中,單位移位和雙位移位分別導(dǎo)致了源數(shù)據(jù)值的兩倍乘法和四倍乘法。
可以以任意數(shù)量的實(shí)施方案來提供移位器120、130。也許最簡單的實(shí)施方案就是在A寄存器110和MUX 150之間提供硬連線互連作為移位器。例如,A寄存器110中的每個位位置i可以連接到MUX 150的位置i+1,以構(gòu)成“移位1”移位器120。同樣,A寄存器中的每個位位置i可以連接到MUX 150的位置i+2,從而滿足“移位2”移位器130。移位1移位器的最低有效位位置可以接地。移位2移位器中輸入到MUX 150的兩個最低有效位位置也可以接地。就面積或控制層次而言,這種體系結(jié)構(gòu)以最低的實(shí)現(xiàn)成本提供了所需要的移位功能。
可替換地,移位器120、130可被配備為正式的移位寄存器,它們完整地帶有用于存儲移位后的值的存儲單元(未示出)。雖然這種替換方案不具有任何性能優(yōu)勢,但是它可以適用于為其他目的使用這種移位寄存器的應(yīng)用中。
3A寄存器140,正如它的名字所暗示的那樣,是用于存儲代表三倍于A寄存器中數(shù)值的值的寄存器。存儲在這個寄存器中的值可以通過將A寄存器110和移位1寄存器120的值直接相加而獲得,或者可替換地,可以從移位2寄存器140的值中減去移位1寄存器120的值,從而獲得該寄存器中的值。用于實(shí)現(xiàn)這些功能的電路是簡單易懂的,并且為了保持圖示說明的簡潔,從圖1中省去了上述電路。在一種實(shí)施方案中,3A寄存器140也可以被配備在IPG 100之外;因此用虛線示出。
A寄存器110、兩個移位器120和130以及3A寄存器140的輸出可以被輸入到第一MUX 150。第一MUX 150的輸出可被輸入到第二MUX 160和反相器170。反相器170的輸出可以作為第二輸入被提供給第二MUX 160。反相器170可以生成從第一MUX 150輸出的多個位的2的互補(bǔ)反碼(complement inversion)。第二MUX 160可以具有直接耦合到零值“”的第三輸入?;蛘?,零值可被輸入到第一MUX 150。因此,給定輸入值A(chǔ),則IPG 100可能生成以下任何輸出A、A、2A、2A、3A、3A、4A、4A和。
IPG 100可以包括控制器180,用于掌管兩個MUX 150、160的操作。如下面討論的那樣,給定輸入的“段”,控制器180可以產(chǎn)生一個控制信號(標(biāo)記為ci),該信號使得MUX 150、160在驅(qū)動時(shí)鐘(未示出)的每個周期上輸出可能的輸出中所選定的一個輸出。
圖5是圖示了根據(jù)本發(fā)明一種可替換實(shí)施方案的IPG 200的框圖。根據(jù)本發(fā)明的一種實(shí)施方案,IPG 200可以包括多個反相器210、220、230-1、230-2和3X乘法器240、一對移位器250-1和250-2以及多路復(fù)用器260。在這種實(shí)施方案中,IPG 200被圖示為與外部的被乘數(shù)寄存器相連,而不是將被乘數(shù)寄存器包括為自身的一部分。被乘數(shù)可以在IPG200的第一終端270上被輸入給IPG 200。反相器之一210可以耦合到第一終端270,以在被乘數(shù)出現(xiàn)時(shí)將其反相。
3X乘法器如同它的名稱所暗示的那樣,當(dāng)被乘數(shù)出現(xiàn)在輸入終端時(shí)生成一個三倍于被乘數(shù)的值。第二反相器220可以耦合到3X乘法器240以反相它的輸出。
移位器250-1、250-2和圖2實(shí)施方案中的一樣,提供了移位后的被乘數(shù)。它們之一(例如移位器250-1)將輸入的被乘數(shù)移位單個位位置;另一個250-2將被乘數(shù)移位2個位位置。與各個移位器250-1、250-2相接的反相器230-1、230-2可以生成被乘數(shù)的反相的移位后的值??梢愿鶕?jù)上述任何一種實(shí)施方案來提供移位器250-1、250-2。
反相器210、220、230-1、230-1,3X乘法器240和移位器250-1、250-2的輸出可被輸入到多路復(fù)用器260。多路復(fù)用器260也可被控制為不輸出來自IPG 200的任何輸入。這種情況下,多路復(fù)用器260使IPG 200從中生成零輸出。
根據(jù)一種實(shí)施方案,當(dāng)想要基于一個長被乘數(shù)A和短乘數(shù)B來執(zhí)行乘法運(yùn)算時(shí),被乘數(shù)A可被輸入到IPG 200中。A、3A、A和3A的值將在一個短的初始化時(shí)期后對多路復(fù)用器260可用。同樣,A和A移位后的值也將對多路復(fù)用器260可用。一旦這些值可用,則它們可從IPG中被取出,并基于乘數(shù)段的值被轉(zhuǎn)發(fā)到乘法電路的剩余部分(在圖5中未示出)。
所述的IPG包括控制器290,該控制器響應(yīng)于這些乘數(shù)段,讓多路復(fù)用器260從該IPG內(nèi)取出先前存儲的值之一。我們知道,許多乘法電路包括用于其他目的的控制器??刂破?90可被集成到這些公知的控制器中,或者在需要時(shí)以獨(dú)立的元件出現(xiàn)。圖5僅為方便起見,圖示了與IPG 200獨(dú)立的控制器290。
在一種實(shí)施方案中,乘數(shù)B可被解析成幾個四位段si。每個段si包括乘數(shù)B中的B3i+2-B3i-1位。由這些段可以生成控制信號CTRL,用以確定IPG內(nèi)的哪一個值應(yīng)當(dāng)從多路復(fù)用器輸出。在一種實(shí)施方案中,所述IPG可以根據(jù)下面表1所示的方案來生成輸出。

表1其中,A是輸入A的2的補(bǔ)碼(complement)??刂浦礐TRL可以按照下式與四位輸入模式相關(guān)CTRL=-4si3+2si2+si1+si0(8)其中,sij代表si段的第j位位置。對于s0段,作為虛構(gòu)位位置“B-1”的第0位位置可被設(shè)置為0,以使得所述控制器對s0段的響應(yīng)與表1一致。
從圖6中可以看出,乘數(shù)B不會將所有段全部填滿,除非該乘數(shù)的長度是3的倍數(shù)。在一種實(shí)施方案中,當(dāng)乘數(shù)的長度不是3的倍數(shù)時(shí),它可以進(jìn)行充分長度地符號擴(kuò)展,以填滿最后一段中尚未使用的部分。這一般包括復(fù)制符號位,即最高有效位BMSB,以填充在該最高有效位之外的虛構(gòu)的位位置。
前面所描述的IPG實(shí)施方案可被應(yīng)用于不同體系結(jié)構(gòu)的乘法器電路。在每種應(yīng)用中,IPG的使用基本上都通過每三位位置進(jìn)行一次加法,而不像傳統(tǒng)技術(shù)那樣每個位位置都進(jìn)行一次加法,從而使得乘法器電路實(shí)現(xiàn)了更快的運(yùn)算。
圖7是根據(jù)本發(fā)明一種實(shí)施方案在組合乘法器300中應(yīng)用IPG的圖。組合乘法器300可以包括第一和第二寄存器310,分別用于存儲被乘數(shù)A和乘數(shù)B。它可以包括IPG 330、控制器340、多個中間積寄存器350.1-350.L、加法器樹360和乘積寄存器370。
在運(yùn)算期間,IPG 330可被初始化來建立A、A、3A和3A值以及A和A移位后的值??刂破?40可以將乘數(shù)B解析為多個段,并且響應(yīng)于每個段中的位模式,讓IPG 330將其中一個值加載到對應(yīng)的中間積寄存器(比如350.1)中。在一種實(shí)施方案中,中間積寄存器350.1-350.L的數(shù)量可以取決于乘數(shù)B所支持的段的數(shù)量。因此,中間積寄存器350.1-350.L的數(shù)量可以與乘數(shù)寄存器320的長度綁定。
一旦將值加載到每一個中間積寄存器350.1-350.L中,組合乘法器300就可以通過對所有的中間積寄存器350.1-350.L求和,從而使最終的乘積被存儲在乘積寄存器370中。加法器樹360接受來自每個乘積寄存器的中間積值,并以認(rèn)識中間積寄存器之間的各個位偏移量的方式來對它們求和。加法器樹本身是公知的,可以針對這一目的進(jìn)行修改。
在一種被乘數(shù)A長m,乘數(shù)B長n的實(shí)施方案中,乘積寄存器370可以象傳統(tǒng)的組合乘法器中一樣,具有n+m的長度。而中間積寄存器350.1-350.L可以具有m+2的長度,雖然在傳統(tǒng)的組合乘法器中它們的長度為m。
傳統(tǒng)的組合乘法器對于乘數(shù)B的每個位位置都包括一個中間積寄存器。在前面的實(shí)施方案中,對于乘數(shù)B的每三個位位置才只有一個中間積寄存器(例如350.1)。因此,由于上述實(shí)施方案中的組合乘法器300與傳統(tǒng)的對應(yīng)部分相比,包括大約三分之一數(shù)量的中間積寄存器,所以加法器樹包括三分之一數(shù)量的用于計(jì)算最終總和的加法器。因?yàn)樵诟俚闹虚g值上執(zhí)行最終的加法,因而可以更快地獲得最終的和,所以預(yù)計(jì)在本實(shí)施方案中將更快地產(chǎn)生結(jié)果。因此,這一實(shí)施方案以更少的邏輯產(chǎn)生了更高的吞吐率。
圖8是根據(jù)本發(fā)明一種實(shí)施方案的、與移位-相加乘法器電路400集成在一起的IPG的應(yīng)用框圖。乘法器電路400可以包括一對寄存器410、420,用于存儲被乘數(shù)A和乘數(shù)B。移位-相加乘法器電路400還可以包括IPG 430、控制器、進(jìn)位存儲加法器(carry saveadder)450和乘積寄存器460。
在運(yùn)算期間,乘法器電路400可以被初始化。在這種實(shí)施方案中,乘積寄存器460可以被清零,并可用被乘數(shù)A的值來初始化中間積生成器430。此后,在運(yùn)算期間,控制器440可以從乘數(shù)寄存器420中移出每個段,并且響應(yīng)于新的段,可使得所選擇的值從IPG430被輸出到進(jìn)位存儲加法器450的第一輸入端。乘積寄存器460的最高有效位可被移位3個位置,并被輸入到進(jìn)位存儲加法器的第二輸入端。進(jìn)位存儲加法器450可以將提供給它兩個輸入端的每一個的值加起來,并將該值寫回到乘積寄存器460。按照乘數(shù)B所支持的段的數(shù)量多少,可以以遞增的方式多次重復(fù)這一過程。
與圖4的實(shí)施方案一樣,圖8的實(shí)施方案相對于傳統(tǒng)的移位-相加乘法器電路提供了改善的性能。傳統(tǒng)電路對乘數(shù)B的每個位位置都執(zhí)行加法。相反,圖8中所示的實(shí)施方案對乘數(shù)B的每三個位位置才執(zhí)行一次加法。同樣,更少數(shù)量的加法使得圖8的移位-相加乘法器能夠比傳統(tǒng)電路花費(fèi)更少量的時(shí)間來生成乘法積。
在另一種實(shí)施方案中,乘法器電路可以省略掉乘數(shù)寄存器(例如圖8的乘數(shù)寄存器420)。圖9圖示了一個乘法器500,它由被乘數(shù)寄存器510、IPG 520、控制器530、進(jìn)位存儲加法器540和乘積寄存器550組成。作為初始化步驟,被乘數(shù)值(A)可被輸入到IPG520。此外,乘數(shù)值(B)可被加載到乘積寄存器550的最低有效位位置中。
在每個時(shí)鐘周期上,乘積寄存器550的內(nèi)容都可以向下移動三個位位置(three bitpositions)。當(dāng)乘積寄存器的最低有效位被移出乘積寄存器時(shí),它們可以作為新的段被輸入到控制器530。響應(yīng)于這三位(及從前一個時(shí)鐘周期的移位中的1位),控制器530可以使得IPG 520生成前面表1中所示的輸出。該IPG輸出可被提供給進(jìn)位存儲加法器540的第一輸入端。乘積寄存器向下移位后的值可以被提供給進(jìn)位存儲加法器540的第二輸入端。進(jìn)位存儲加法器540可以將這兩個輸入值加起來,并將它們存儲到乘積寄存器的最高有效位位置。再一次,本實(shí)施方案相對于一次執(zhí)行單位移位的其他移位-相加乘法器而言,提供了改善的性能。與圖4的實(shí)施方案相比,由于寄存器420(圖4)可被省略,所以這種實(shí)施方案還提供了更好的寄存器利用。
圖10圖示了根據(jù)本發(fā)明另一種實(shí)施方案的乘法電路600。這一實(shí)施方案可被用來估值前面的方程7。在這一實(shí)施方案中,乘法器600可以包括一對IPG 610、620。第一IPG 610可以估值方程7中的A·B[i]項(xiàng),第二IPG 620可以估值d·q[i-1]項(xiàng)。第一IPG 610可以接受來自各個寄存器630、640的值A(chǔ)和3A作為輸入。第一IPG 610可以由控制器650來控制,而該控制器650又被B的各個字(未示出的輸入)控制。
第二IPG 620可以接受來自各個源660、670的值d和3d。第二IPG 620可以由q值680來控制。
乘法電路600可以包括進(jìn)位存儲加法器690,它接受兩個IPG 610、620的輸出以及乘積寄存器700的結(jié)果值作為其輸入。進(jìn)位存儲加法器690的輸出可被輸入到乘積寄存器700。乘積寄存器700可以是一個移位寄存器,用于實(shí)現(xiàn)關(guān)于圖3所描述的移位。從最低有效位位置開始的位范圍(span of bits)可以作為r[i]值輸出到進(jìn)位存儲加法器690。
眾所公知,進(jìn)位存儲加法器生成所謂“冗余形式”的結(jié)果。由于進(jìn)位存儲加法器不必執(zhí)行傳統(tǒng)的進(jìn)位傳播(費(fèi)時(shí)的操作)就可以生成加法運(yùn)算的結(jié)果,所以它們比其他類型的加法器要快一些。取而代之的是,每個“位位置”使用多位來存儲加法結(jié)果。以冗余形式執(zhí)行多次加法。在最終的加法后,可以執(zhí)行一次進(jìn)位傳播,以獲得非冗余形式的結(jié)果。
根據(jù)一種實(shí)施方案,乘積寄存器700中對應(yīng)于商q的部分可被輸入到先行進(jìn)位(carrylookahead)加法器之類的第二加法器710。第二加法器710可以生成非冗余的結(jié)果,該結(jié)果可以作為q值被反饋到第二IPG 610。
關(guān)于(A·B)emod n運(yùn)算的估算,已提供了以上的實(shí)施方案。如果是關(guān)于(A·B)modn運(yùn)算而進(jìn)行的,則在圖1-3所示的方法后可以進(jìn)行單次mod運(yùn)算,以完成估算過程。然而,為了估算其他的運(yùn)算,例如可以推遲mod n運(yùn)算的ABemod n運(yùn)算,可以有利地使用這些實(shí)施方案。
ABemod n的估算下面針對ABmod n運(yùn)算來描述emod運(yùn)算的實(shí)施方案。該運(yùn)算的求解可以按照嵌入式循環(huán)過程來進(jìn)行,所述循環(huán)過程由外循環(huán)和內(nèi)循環(huán)組成。
外循環(huán)可以掃描指數(shù)的位,用以控制乘法。外循環(huán)的每次運(yùn)行過程可以包括平方操作c=(c·c)emod n,(9)并且取決于指數(shù)的當(dāng)前位,還可以包括附加的乘法c=(c·a)emod n。(10)這種實(shí)施方案如圖11所示。
圖11圖示了根據(jù)本發(fā)明一種實(shí)施方案的另一種方法1300。根據(jù)方法1200,虛擬變量c可被初始化為0(框1210)。此后,所述方法迭代地考慮指數(shù)B的每個位i。在每次迭代中,所述方法可以使用內(nèi)循環(huán)來估算方程9(框1320)。此后,方法1300可以確定指數(shù)B的第i位(B[i])是否等于1。如果是的,則方法1300可以使用內(nèi)循環(huán)來估算方程10(框1330)。當(dāng)框1330的操作結(jié)束時(shí),或者如果第i位不是1,那么運(yùn)算可以前進(jìn)到下一次迭代。
在結(jié)束了最后的迭代后,方法1300可以對c值調(diào)用傳統(tǒng)的mod運(yùn)算(框1340)。這個結(jié)果得到了ABmod n的結(jié)果。
可以使用前面參考圖1-3所描述的任何一種方法來執(zhí)行運(yùn)算的內(nèi)循環(huán)。在內(nèi)循環(huán)的處理期間,可以使用同一硬件來實(shí)現(xiàn)兩種情形。對適合平方運(yùn)算的情形無需特殊的處理。一般來說,操作數(shù)c和mn具有同樣的大小,而a要小一些。
確定d和m為了確定參數(shù)d和m,可以如下確定n中有效位的數(shù)量size(n),滿足2size(n)-1≤n<2size(n)(11)另外,k可以相對于某個期望的精度值被定義為k=size(n)+precision (12)此外,mn可被定義為n的整數(shù)倍m·n,使得d=2k-mn<n (13)參數(shù)mn在以二進(jìn)制格式出現(xiàn)時(shí),具有等于或超過精度值的前導(dǎo)1的數(shù)量。
為了根據(jù)n和2k得出m和d,注意mn=m·n=int(2kn)·n---(14)]]>其中,int(x)是得出某個值x的最大整數(shù)。為了得到m,可以使用Newton法ui+1=(ui·(2k+1-ui-n))/2k(15)方程15具有以下性質(zhì)ui=>(2k/n),當(dāng)i=>∞時(shí) (16)

由于只想得到(2k/n)的整數(shù)部分,所以這一迭代過程收斂得很快。為了保持ui中位的數(shù)量最小,也可以在每次迭代后取得整數(shù)部分,并丟棄小數(shù)部分ui+1=(ui·(2k+1-ui·n))/2k(17)這種實(shí)施方案有時(shí)會導(dǎo)致以下問題,即迭代過程在到達(dá)正確的數(shù)值之前停止。然而,稍稍修改最后的迭代就可以解決這個問題。
uFinal=((uFinal-1+1)·(2k+1-uFinal-1·n)div2k在另一種實(shí)施方案中,僅通過從位置(k+1)往上將負(fù)數(shù)-(ui·n)的前導(dǎo)1設(shè)置為0,就可以完成(2k+1-ui·n)的計(jì)算,其中(ui·n)<2k+1。這相當(dāng)于保持從位置k到0的位不變。
在一種實(shí)施方案中,可以根據(jù)下列偽代碼用軟件來實(shí)現(xiàn)m和d的計(jì)算。


用于計(jì)算m=(2kdiv n)和d=(2k-mn)的算法其中,函數(shù)selectbits(max downto min,c)返回c中從max位置到min位置之間的位(包括max和min位置)。
以上給出的實(shí)施方案提供了一種mod運(yùn)算的替代計(jì)算方式,標(biāo)記為“emod”,該運(yùn)算以丟失一定精度為代價(jià),帶來少得多的計(jì)算花銷。在執(zhí)行帶有乘法或指數(shù)運(yùn)算的mod運(yùn)算時(shí),它是很有用的。通過對中間積使用emod運(yùn)算,操作數(shù)長度可以保持在某一預(yù)定的長度窗內(nèi)。當(dāng)?shù)玫阶罱K的乘積時(shí),應(yīng)用傳統(tǒng)的mod運(yùn)算以獲得最終的結(jié)果。這種方案比只使用mod運(yùn)算要花費(fèi)少得多的處理量,就可以獲得最終的結(jié)果。
這里具體圖示并描述了本發(fā)明的幾種實(shí)施方案。然而可以理解,本發(fā)明的修改和變化被以上教導(dǎo)所覆蓋,并落入所附權(quán)利要求書的范圍之內(nèi),而不會偏離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種對操作數(shù)執(zhí)行模數(shù)運(yùn)算的方法,所述操作數(shù)由迭代執(zhí)行的數(shù)學(xué)函數(shù)來表示,所述模數(shù)取值為n,所述方法包括在完成了多次中間迭代的每一次迭代后,使用一個等于n的倍數(shù)的假想模數(shù)來確定其結(jié)果的模數(shù),所述假想模數(shù)接近于取某個任意k值的2k值,以及在完成了最終的迭代后,使用真正的模數(shù)n來確定其結(jié)果的模數(shù)。
2.一種求解(A·B)mod n運(yùn)算的方法,包括對于B的幾個字中的每一個字,迭代地將c值移位一個字長;將移位后的c值與A·B[i]值相加,其中B[i]是B的第i個字,使用等于n的倍數(shù)的假想模數(shù)mn,對所述相加的結(jié)果執(zhí)行emod運(yùn)算,以及在最后一次迭代之后,對所述最后一次迭代所得到的相加結(jié)果執(zhí)行模數(shù)運(yùn)算。
3.一種求解(A·B)mod n運(yùn)算的方法,包括對于B的幾個字中的每一個字,迭代地由c的先前估值的高次序部分生成商q,由所述c值的低次序部分生成余數(shù)r,將c重新估值為A·B[i]+r+d·q,其中d是假想模數(shù)的精度值,其中B[i]是B的第i個字,在最后一次迭代之后,對所述最后一次迭代所得到的重新估值結(jié)果執(zhí)行模數(shù)運(yùn)算。
4.一種求解(A·B)mod n運(yùn)算的方法,包括對于B的幾個字中的每一個字,迭代地由c的先前估值的高次序部分生成商q[i],其中i代表當(dāng)前迭代,由所述c值的低次序部分生成余數(shù)r[i],將商q[i-1]左移一個字寬,將c重新估值為A·B[i]+r[i]+d·q[i-1],其中d是假想模數(shù)的精度值,其中B[i]是B的第i個字,并且所述重新估值過程使用移位后的商,在最后一次迭代之后,對所述最后一次迭代所得到的重新估值結(jié)果執(zhí)行模數(shù)運(yùn)算。
5.一種求解ABmod n運(yùn)算的方法,包括對于B的每個位位置i,迭代地執(zhí)行c=(c·c)emod n運(yùn)算,以及如果B的第i位位置是1,則執(zhí)行c=(c·A)emod n運(yùn)算;以及在最后一次迭代之后,對所述最后一次運(yùn)算所得到的c執(zhí)行A mod N運(yùn)算,其中,所述emod n運(yùn)算根據(jù)假想模數(shù)mn來計(jì)算模數(shù)結(jié)果,其中mn是n的整數(shù)倍。
全文摘要
emod運(yùn)算是對傳統(tǒng)的模數(shù)運(yùn)算而言是一種計(jì)算上的替代,這是一種減少了計(jì)算花銷,但也降低了精度的運(yùn)算??梢詫δ硞€基數(shù)n定義一種模數(shù)運(yùn)算,此時(shí),emod運(yùn)算使用“假想模數(shù)”來確定操作數(shù)的模數(shù),所述假想模數(shù)是n的整數(shù)倍。選擇假想模數(shù),使得emod運(yùn)算與模數(shù)運(yùn)算相比,在計(jì)算上不那么昂貴。因此,emod運(yùn)算對于使用超大操作數(shù)的乘法或指數(shù)運(yùn)算格外有用。在完成了與乘法或指數(shù)運(yùn)算相關(guān)的中間處理后,可以使用一次傳統(tǒng)的模數(shù)運(yùn)算,以得到最終的結(jié)果。
文檔編號G06F7/72GK1729444SQ03816215
公開日2006年2月1日 申請日期2003年5月2日 優(yōu)先權(quán)日2002年5月9日
發(fā)明者埃里克·霍斯泰德 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
天门市| 延吉市| 南澳县| 建水县| 上犹县| 萨迦县| 四子王旗| 隆昌县| 望城县| 桑植县| 开化县| 兴和县| 团风县| 定西市| 合肥市| 鄄城县| 西平县| 刚察县| 屏东市| 富源县| 上饶市| 青河县| 金塔县| 黎平县| 邹城市| 新绛县| 安仁县| 新蔡县| 邻水| 博客| 英德市| 城步| 云浮市| 北海市| 韶关市| 普兰店市| 竹溪县| 石阡县| 广东省| 宽甸| 天柱县|