亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

將兩數(shù)相乘的制作方法

文檔序號(hào):6455370閱讀:275來源:國(guó)知局

專利名稱::將兩數(shù)相乘的制作方法將兩數(shù)相乘
背景技術(shù)
:密碼術(shù)保護(hù)數(shù)據(jù)免受不希望有的訪問。密碼術(shù)通常涉及對(duì)數(shù)據(jù)進(jìn)行數(shù)學(xué)運(yùn)算(加密),其使原始數(shù)據(jù)(明文)變得不可理解(密文)。逆數(shù)學(xué)運(yùn)算(解密)從密文恢復(fù)原始數(shù)據(jù)。除加密和解密之外,密碼術(shù)涵蓋了各種各樣的應(yīng)用。例如,密碼術(shù)常用于認(rèn)證(即,可靠地確定通信主體的身份)、數(shù)字簽名的生成等。當(dāng)前的密碼技術(shù)嚴(yán)重依賴于密集數(shù)學(xué)運(yùn)算。例如,很多方案使用一種被稱為模取冪(modularexponentiation)的模算術(shù),其涉及將大數(shù)升到若干次冪并相對(duì)于模數(shù)使它減小(即,當(dāng)除以給定模數(shù)時(shí)的余數(shù))。在數(shù)學(xué)上,模取冪可被表示為"fmod(模)M",其中e是指數(shù),M是模數(shù)。在概念上,乘法和模約簡(jiǎn)(modularreduction)是直接運(yùn)算。然而,在這些系統(tǒng)中使用的數(shù)字大小通常非常大,并且明顯超出了處理器的固有字長(zhǎng)。例如,密碼術(shù)協(xié)議可能要求對(duì)長(zhǎng)度為1024到4096位或更長(zhǎng)的數(shù)字進(jìn)行模運(yùn)算,而很多處理器的固有字長(zhǎng)僅為32或64位。對(duì)這種大數(shù)進(jìn)行運(yùn)算在時(shí)間方面和計(jì)算資源方面會(huì)是非常昂貴的。附圖簡(jiǎn)述圖1和圖2示出Karatsuba乘法。圖3是示出Karatsuba乘法的實(shí)例實(shí)現(xiàn)的流程圖。圖4和圖5示出將數(shù)N折疊(fold)成數(shù)N',其中N=N'。圖6示出對(duì)NmodM的確定。圖7示出對(duì)數(shù)N進(jìn)行迭代折疊。圖8描繪了執(zhí)行Karatsuba乘法和/或模約簡(jiǎn)的體系結(jié)構(gòu)。5詳細(xì)描述如上所述,各種各樣的密碼運(yùn)算涉及非常大的數(shù)的乘法和/或模約簡(jiǎn)。在此描述的是可減少密碼系統(tǒng)的這些計(jì)算密集運(yùn)算和速度運(yùn)算的負(fù)荷的各種技術(shù)。這些技術(shù)還可應(yīng)用于更一般的用途、非密碼、計(jì)算設(shè)置。一種這樣的技術(shù)涉及提高被稱為Karatsuba乘法的將大數(shù)相乘的技術(shù)的效率。另一技術(shù)涉及提高模約簡(jiǎn)的效率。Karatsuba乘法已開發(fā)了各種各樣的方法來執(zhí)行兩數(shù)相乘。被稱為教科書乘法的一種常見的方法涉及將操作數(shù)分段并對(duì)這些較小的段執(zhí)行乘法運(yùn)算。作為示例,兩個(gè)n位寬的數(shù)A和B可被表示為一組較小的子段,諸如A-ai2+a。B=b,2s+bo其中a。和b。項(xiàng)表示A和B的s個(gè)最低有效位,而a,和^表示其余的較高有效位。在該表示法中,a,和b,中的下標(biāo)x表示數(shù)內(nèi)的段序數(shù)(例如,a。表示A的最低有效位,a,表示下一最高有效位,等等)。利用常規(guī)的教科書乘法,可使用四個(gè)較小的乘法來計(jì)算A和B:AxB=aibi22s+(a。bi+b。ai)2s+a0bo被稱為Karatsuba乘法的乘法技術(shù)可減少段乘法的數(shù)量。例如,對(duì)于以上的A和B,[3]中的項(xiàng)6<formula>formulaseeoriginaldocumentpage7</formula>[4]的結(jié)果可被計(jì)算為<formula>formulaseeoriginaldocumentpage7</formula>[5]因?yàn)閍山i和a。b。構(gòu)成方程式[3]中的其它項(xiàng),所以在方程式[5]中使用a,b,和a。b。的值并不表示額外的計(jì)算成本。在方程式[3]中用方程式[5]替換方程式[4],AxB的Karatsuba乘法可被計(jì)算為<formula>formulaseeoriginaldocumentpage7</formula>[6]該替換用兩次加法和單個(gè)乘法來對(duì)換兩次乘法。在大多數(shù)情況下,這表示在計(jì)算效率上有重大進(jìn)步。在以上示例中,Karatsuba將被分割成兩段的數(shù)相乘(即,"兩項(xiàng)Karatsuba乘法")。然而,Karatsuba還可應(yīng)用于其它數(shù)目的段。例如,對(duì)于數(shù)A和B,三項(xiàng)Karatsuba乘法可被定義為<formula>formulaseeoriginaldocumentpage7</formula>[7]<formula>formulaseeoriginaldocumentpage7</formula>[8]AxB=a2b224s+a丄hh22s+a。b。+[(a2+aj(b2+b)—a2b2—ah]23s+[(a2+a。)(b2+b。)—a2b2—a。b。]22s+[(a。+a》(b。+th)—a。b?!猘ith]2s[9]其中A和B各自被分割成三個(gè)S位的段。類似于兩項(xiàng)Karatsuba乘法[6],三項(xiàng)Karatsuba乘法[9]用對(duì)相同序數(shù)的段的乘法運(yùn)算(例如,axbx)和對(duì)同一數(shù)的各段的加法(例如,ax+ay)來替換不同序數(shù)的段之間的乘法(例如,axby)。也已針對(duì)五項(xiàng)Karatsuba乘法定義了各方程式。這些Karatsuba方程式的共有特性是它們至多需要(t2+t)/2次乘法,其中t是項(xiàng)的數(shù)目。可使用遞歸來實(shí)現(xiàn)Karatsuba乘法。例如,在兩項(xiàng)Karatsuba乘法AxB=a!th22n+((a。+(b0+b!)-a山!-a0b0)2n+a0b0中,每個(gè)較小的段乘法又可以使用Karatsuba來執(zhí)行。例如,執(zhí)行AxB的Karatsuba乘法會(huì)涉及a丄bh、a。b。、(a。+a》(b。+b》的Karatsuba乘法。這些乘法可涉及甚至更小的子段的Karatsuba乘法。例如,確定可涉及將a,和分割為子段的多個(gè)項(xiàng)。然而,這種方法的一個(gè)潛在問題是產(chǎn)生了不同大小的操作數(shù)。艮口,(a。+a》項(xiàng)和(b。+b》項(xiàng)均可從加法運(yùn)算產(chǎn)生進(jìn)位。(a。+a》和(b。+b》的結(jié)果的后續(xù)乘法可能溢出到額外固有字中。這可能損害Karatsuba實(shí)現(xiàn)的很大一部分效率。為解決"進(jìn)位"問題,圖1-3示出了實(shí)例實(shí)現(xiàn),其對(duì)兩個(gè)操作數(shù)的最低有效位執(zhí)行Karatsuba乘法并隨后基于最高有效位校正該結(jié)果。更詳細(xì)地,圖1示出正被相乘的兩個(gè)操作數(shù)A100和B102。在該示例中,每個(gè)操作數(shù)是n+l位寬,其中n是某處理器的固有字長(zhǎng)s的兩倍。在該示例中,每個(gè)操作數(shù)可被分割成兩項(xiàng)和一附加高位。例如,A的s個(gè)最低有效位構(gòu)成a。,下s個(gè)有效位構(gòu)成&,而A的最高有效位構(gòu)成ah。如圖所示,可使用下式對(duì)大小為s的項(xiàng)執(zhí)行Karatsuba乘法822sa山i+2s[(a,+a。)(b!+b。)—aib!-a。b。]+a。b。隨后可基于最高有效位ah和bh的值來調(diào)節(jié)該結(jié)果。例如,如圖所示,該結(jié)果可增加2nahB[b"bo]106[11]禾口2nbhA[a"a。]108[12]換言之,如果&是"1",則該結(jié)果增加移位n位的bl:bO的n位。類似地,如果K是"1",則該結(jié)果增加移位n位的al:aO的n位。這些調(diào)節(jié)可被實(shí)現(xiàn)為加法運(yùn)算,例如結(jié)果=結(jié)果+2nahB[b1:b。]結(jié)果=結(jié)果+2nbhA[a1:a。]或者實(shí)現(xiàn)為繼之以加法的分支if(ah)then結(jié)果二結(jié)果+2nB[b1:b0]if(bh)then結(jié)果二結(jié)果+2nA[aI:a。]最后,如果&和bh兩者都是"1",則該結(jié)果增加2"(即,ahbh)。這可通過使用分支來實(shí)現(xiàn),例如if(ahbh)then結(jié)果=結(jié)果+22n加法和一個(gè)或多個(gè)分支語句的這種組合可防止將進(jìn)位向下傳遞到下級(jí)遞歸中。圖2示出上述用于將值為469的A100與值為369的B102相乘的程序的運(yùn)算。如圖所示,在排除最高有效位ah和bh的情況下,對(duì)A[2s-l:0]和B[2s-1:0]的Karatsuba乘法產(chǎn)生值24069。該值首先針對(duì)ah被調(diào)節(jié)為78597,隨后針對(duì)bh被調(diào)節(jié)為107525。最后,因?yàn)閍h和bh均為"1",所以增加最高有效位2""6以產(chǎn)生最終答案173061。同樣,可通過Karatsuba技術(shù)的遞歸應(yīng)用來確定axbx的值。通過切掉ah和bh位,對(duì)具有相同適宜大小的操作數(shù)進(jìn)行遞歸運(yùn)算。圖3示出該Karatsuba技術(shù)在遞歸方案中的實(shí)現(xiàn)。如上所述,對(duì)操作數(shù)A和B的Karatsuba乘法是通過A[n:O]和B[n:O]的乘法114繼之以對(duì)A和B的最高有效位ah和bh的調(diào)節(jié)116來執(zhí)行的。該結(jié)果值向上返回118遞歸棧。當(dāng)操作數(shù)的長(zhǎng)度遠(yuǎn)大于處理器的固有字長(zhǎng)時(shí)尤其需要Karatsuba乘法。例如,與較長(zhǎng)的操作數(shù)相比,該處理器的固有字長(zhǎng)可僅為s。當(dāng)n逼近s時(shí),Karatsuba的效率降低而教科書乘法變得更有吸引力。因而,如圖3所示,取決于遞歸的當(dāng)前深度112,該程序可使用教科書乘法120、122或者Karatsuba104、106、108。在實(shí)踐中,使用教科書乘法執(zhí)行最后兩級(jí)(例如,L=2)遞歸可提供最佳的整體性能。盡管圖1-3描繪了實(shí)例實(shí)現(xiàn),但是可能有很多變型。例如,在圖1-3中每個(gè)Karatsuba項(xiàng)被描繪為s位寬。然而,這些項(xiàng)既不需要具有相同位寬也不需要占據(jù)單個(gè)固有字。類似地,盡管&和bh被描述為單個(gè)位,但是在其它實(shí)現(xiàn)中,ah和bh可包括多個(gè)位。10如上所述,已針對(duì)不同數(shù)量的項(xiàng)(例如,2、3和5)定義了不同的Karatsuba方程式。一個(gè)規(guī)范的Karatsuba分解是具有以下六個(gè)長(zhǎng)度之一的數(shù)=32.24"=34-24=5-2*其中n是數(shù)的長(zhǎng)度且k是整數(shù)。為了優(yōu)化Karatsuba分解,數(shù)可用0來填充以符合較大的規(guī)范形式。為辨別哪個(gè)規(guī)范的Karatsuba分解將使用該操作,可針對(duì)每一個(gè)計(jì)算w并選出最小的一個(gè)w1=3「iog2"l'32+3乂2,3「log2"-log23l「log2"-log25"|針對(duì)n的不同值可計(jì)算w的值。例如,這些結(jié)果可用于形成查找表,該查找表指示基于給定n的最小w值將填充一給定數(shù)的量。利用折疊的模約簡(jiǎn)11除乘法以外,很多密碼術(shù)方案涉及模約簡(jiǎn)(例如,NmodM的計(jì)算)。為減少模約簡(jiǎn)運(yùn)算的費(fèi)用,一些系統(tǒng)利用被稱為Barrett模約簡(jiǎn)的技術(shù)。本質(zhì)上,Barrett計(jì)算商的估值,q=floor(floor(N/2m)p/M)其中m是模數(shù)M的寬度,且p是由下式確定的常數(shù)p=floor(22n/M)。其中n是數(shù)N的寬度。NmodM的值隨后可通過計(jì)算N-qM來確定,必要時(shí)再最后減去M以確保最終值小于M。對(duì)Barrett的效率有影響的是訪問p的預(yù)計(jì)算的值的能力。即,可僅基于N的大小來確定p值而不需訪問N的特定值。諸如Barrett模約簡(jiǎn)之類的技術(shù)可減少模約簡(jiǎn)的費(fèi)用。圖4-6示出可進(jìn)一步減少模約簡(jiǎn)計(jì)算成本的技術(shù)。特別地,圖4示出將數(shù)N202"折疊"為較小寬度的數(shù)N'206的技術(shù)。盡管其寬度更小,但是折疊運(yùn)算仍確定N'以使N'modM與NmodM相同。諸如經(jīng)典Barrett模約簡(jiǎn)之類的傳統(tǒng)運(yùn)算隨后可對(duì)較小的N'進(jìn)行運(yùn)算。通過"縮短"操作數(shù)N,后續(xù)運(yùn)算涉及可減少用于確定模余數(shù)的乘法的較小的數(shù)。另外,數(shù)N越大,效率越顯著。例如,抽樣試驗(yàn)估計(jì),對(duì)于大小為512位的N其速度增大27y。,則對(duì)于大小為4096位的N其速度躍為增大177%。更詳細(xì)地,圖4描繪了寬度為n的數(shù)N202和寬度為m的模數(shù)M200。為確定NmodM,"折疊"運(yùn)算212從N生成N'。如圖所示,折疊212發(fā)生于折疊點(diǎn)f,該折疊點(diǎn)將N描繪為較高有效位部分Nh和狡低有效位部分NlQ例如,折疊點(diǎn)f可被選為落在模數(shù)的長(zhǎng)度和N的長(zhǎng)度的中點(diǎn)處。例如,假設(shè)N的寬度為2m(為模數(shù)寬度的兩倍),那么折疊點(diǎn)可在由2^所識(shí)別的位的位置處。這樣的折疊點(diǎn)可使N'的結(jié)果寬度最小化。即,在擴(kuò)展或縮短N(yùn)H或Nl的任一方向上移動(dòng)折疊點(diǎn)實(shí)際上增大了N'的大小?;谡郫B點(diǎn),N'可被確定為N'=NH2fmodM+NL212[15]該較小的N'隨后可用于利用例如經(jīng)典Barrett技術(shù)來執(zhí)行模約簡(jiǎn)。如圖所示,對(duì)N'的確定212涉及2fmodM項(xiàng)208(被稱為M')。2fmodM的值可以預(yù)計(jì)算而不用考慮特定的N值。針對(duì)M和f的各種值預(yù)計(jì)算該值通過將昂貴的乘法轉(zhuǎn)移到時(shí)間更少的臨界期而加速了對(duì)N'的實(shí)時(shí)計(jì)算。針對(duì)M和f各值的預(yù)計(jì)算的值可被存儲(chǔ)在用于快速訪問的存儲(chǔ)器中的表中。如上所述,可使用例如Karatsuba乘法來執(zhí)行對(duì)NH(2fmodM)的乘法。為了說明,圖5示出折疊的一個(gè)示例,其中N是值為252的8位寬的數(shù)(1111,1100b),而M是值為13的4位的數(shù)(1101b)。如圖所示,折疊點(diǎn)選為f=215m=26。對(duì)N,的計(jì)算產(chǎn)生值96。如圖所示,N和它在折疊后的對(duì)應(yīng)值N,對(duì)模數(shù)13產(chǎn)生相同的模余數(shù)5??墒褂酶鞣N諸如Barrett之類的模約簡(jiǎn)方法中的任意一種來執(zhí)行對(duì)N'的模約簡(jiǎn)。圖6描繪了使用上述技術(shù)完整確定NmodM的一個(gè)示例。在該示例中,N202的寬度為n=4s,而M204的寬度為m=2s。如圖所示,折疊點(diǎn)f是235。如圖所示,M'=23sraodM222的預(yù)計(jì)算值可用于確定(M')(Nh)224。盡管圖6將NH表示為floor(N/23s)的值,但是NH的值可通過設(shè)定NpN[4s-l:3s]更快地獲得。(M,)(NH)224的值被加到NL226以完成對(duì)N'的計(jì)算。同樣,盡管圖6將隊(duì)表示為Nmod23s,但是隊(duì)的值可通過設(shè)定N^N[3s-1:0]更快地獲得。在確定N'之后,可使用經(jīng)典Barrett約簡(jiǎn)來計(jì)算N'modM。在這種情況下,Barrett約簡(jiǎn)230、234計(jì)算為R=N'-floor(floor(N'/22s)((i/2s))M其中p被確定為floor(237M)。類似于M'的值,n的值可針對(duì)s和M的各種值而被預(yù)計(jì)算。同樣,該預(yù)計(jì)算可將昂貴的運(yùn)算時(shí)移至不需要實(shí)時(shí)運(yùn)算的周期。結(jié)果R236可大于模數(shù)M200。在這種相當(dāng)罕見的情況下,減法R=R-M可用于確保R〈M。單個(gè)折疊運(yùn)算可顯著提高模約簡(jiǎn)的效率和實(shí)時(shí)性能。如圖7所示,重復(fù)的折疊可關(guān)于所用的乘法和ALU運(yùn)算(例如,力P、減和移位)的總數(shù)提供進(jìn)一步的效率。如圖所示,N202同樣被折疊成N'204。結(jié)果N'的寬度通常將為f。如果N'的寬度為f+1,則減法運(yùn)算N'=N'-(M2m)可用于"修整"N',盡管這不是必要的。如圖所示,附加的折疊運(yùn)算將N'轉(zhuǎn)換成N''206,同樣地,其中N',modM=N'modM。該第二次折疊同樣提高了計(jì)算效率。在不同折疊迭代中使用的折疊點(diǎn)從第一次迭代的215m移至第二次迭代的2125m。更一般地,給定迭代的折疊點(diǎn)可被確定為2"m,其中i是迭代號(hào)。盡管圖7描繪了兩次折疊,但是可能有附加的折疊。然而,附加折疊可能使收益遞減和/或?qū)嶋H上增加乘法運(yùn)算的次數(shù)。模取冪的實(shí)例實(shí)現(xiàn)上述技術(shù)可用于執(zhí)行各種密碼運(yùn)算。例如,可將上述Karatsuba乘法和折疊技術(shù)組合以執(zhí)行模取冪。14同樣,模取冪涉及確定gsmodM。執(zhí)行模取冪是各種密碼算法的核心。例如,在RSA中,公鑰由公共指數(shù)e-public(e-公共)和模數(shù)M來形成。私鑰由私人指數(shù)e-private(e-私人)和模數(shù)M來形成。為了加密報(bào)文(例如,分組或分組有效載荷),執(zhí)行以下運(yùn)算密文=明文,bli°modM為解密消息,執(zhí)行以下運(yùn)算明文=密文modM.一種用于執(zhí)行模取冪的程序從左到右依次處理指數(shù)e中的位。從初值A(chǔ)=1開始,該程序?qū)⒂龅降拿總€(gè)"0"位的值平方(即,A二A*A)。對(duì)于每個(gè)"1"位,該程序既將該值平方又將其乘以g(即,A=A*A*g)。最后結(jié)果可用于模約簡(jiǎn)運(yùn)算。例如,為了確定31^mod5,該程序如下運(yùn)算,其中g(shù)二3,e="1010",且M=5:A指數(shù)位1-1指數(shù)位2-0指數(shù)位3-1指數(shù)位4-0AmodM承31l承13承39氺9氺3243*2434=3=9=243=59049代替在最后當(dāng)可能已累積了非常大的數(shù)時(shí)執(zhí)行模約簡(jiǎn),可在各乘法運(yùn)算內(nèi)交叉進(jìn)行模約簡(jiǎn),諸如在處理每個(gè)指數(shù)位或每幾個(gè)指數(shù)位之后進(jìn)行。例如,為了計(jì)算3,bmod5,該程序可如下進(jìn)行15<table>tableseeoriginaldocumentpage16</column></row><table>不管特定實(shí)現(xiàn)如何,將上述Karatsuba乘法技術(shù)用于平方與"g"乘法兩者可以顯著加快模取冪的速度。另外,通過使用折疊,約簡(jiǎn)運(yùn)算消耗相當(dāng)少的處理資源。通過存儲(chǔ)重復(fù)使用的值可獲得額外的計(jì)算效率。例如,在該示例中,在兩個(gè)不同的乘法中涉及到g的值。在2048位指數(shù)的現(xiàn)實(shí)示例中,使用g的乘法的數(shù)量將會(huì)遠(yuǎn)大于此。為提高涉及g的Karatsuba乘法的效率,gi=(gH(1)+g"i))的不同值可被存儲(chǔ)在表中以供重復(fù)使用,其中i表示Karatsuba遞歸的深度。該高速緩沖可節(jié)省相當(dāng)數(shù)量的多余地執(zhí)行同一加法的循環(huán)。如果使用同一模數(shù)的模約簡(jiǎn)發(fā)生多次,則對(duì)諸如在折疊中使用的M'和p之類的其它常用值的高速緩存也可增強(qiáng)性能。當(dāng)執(zhí)行大小不均勻的數(shù)的乘法——諸如將lk大小的數(shù)乘以2k大小的數(shù)——時(shí)可使用附加優(yōu)化。這種乘法可在確定Barrett的qM值以及在確定NH2fmodM時(shí)出現(xiàn)。為了利用Karatsuba,lk*2k乘法可被分解成兩個(gè)lk*lk運(yùn)算,諸如q*mh和q*nu。因?yàn)閮蓚€(gè)運(yùn)算中均使用了q,所以("+的值不需要被確定兩次,相反可將其存儲(chǔ)以供后用。同樣,以上僅僅是一個(gè)示例,并且Karatsuba和折疊技術(shù)可用于執(zhí)行各種各樣的其它密碼運(yùn)算以及其它通用的數(shù)學(xué)應(yīng)用。這些技術(shù)可按各種方式在各種系統(tǒng)中實(shí)現(xiàn)。例如,這些技術(shù)可以實(shí)現(xiàn)于專用數(shù)字或模擬硬件(例如,由上述編程技術(shù)以諸如Verilog(tm)之類的硬件描述語言確定)、固件中和/或?qū)崿F(xiàn)為ASIC(專用集成電路)或可編程門陣列(PGA)。這些技術(shù)還可實(shí)現(xiàn)為設(shè)置在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)程序以便處理器執(zhí)行。例如,處理器可以是通用處理器。如圖8所示,這些技術(shù)可由計(jì)算機(jī)程序來實(shí)現(xiàn),其中這些計(jì)算機(jī)程序由可卸載密碼運(yùn)算的處理器模塊300執(zhí)行。如圖所示,模塊300包括多個(gè)可編程處理單元306-312和專用硬件乘法器316。處理單元306-312對(duì)從由核心302控制的共用存儲(chǔ)器邏輯304下載的數(shù)據(jù)運(yùn)行程序。其它處理器和/或處理器核心可向模塊300發(fā)出命令以指定要執(zhí)行的數(shù)據(jù)和運(yùn)算。例如,處理器核心可向模塊300發(fā)出用于對(duì)存儲(chǔ)在RAM314中的g、e和M值執(zhí)行模取冪的命令。核心302可通過向共用存儲(chǔ)器邏輯304發(fā)出指令來作出響應(yīng),其中這些指令是用于將模取冪程序下載到處理單元306-312并且將正被運(yùn)算的數(shù)據(jù)從RAM314下載到共用存儲(chǔ)器304并最終下載到處理單元306-312。接著處理單元306-312執(zhí)行這些程序指令。特別地,處理單元306-312可使用乘法器316執(zhí)行諸如用于執(zhí)行平方與"g"乘法的Karatsuba乘法之類的乘法。一旦完成,處理單元306-312就可將結(jié)果返回到共用存儲(chǔ)器邏輯304以傳遞到請(qǐng)求核心。處理器模塊300可與可編程核心集成在相同或不同的管芯上。同樣,圖8僅僅示出使用實(shí)例體系結(jié)構(gòu)來實(shí)現(xiàn)上述Karatsuba和折疊技術(shù)。然而,這些技術(shù)可用于各種各樣的其它體系結(jié)構(gòu)中,諸如具有編程的傳統(tǒng)通用處理器的體系結(jié)構(gòu)。其它實(shí)施例也落在所附權(quán)利要求的范圍內(nèi)。1權(quán)利要求1.一種設(shè)置在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序,其包括用于促使電路將A和B這兩個(gè)數(shù)相乘的指令,所述程序用于將A分割成多個(gè)段ax和至少一位的附加置位(set)ah,其中x表示段序數(shù)且h表示所述至少一位的附加置位的位置;將B分割成多個(gè)段bx和至少一位的附加置位bh;對(duì)A和B的所述各段執(zhí)行Karatsuba乘法;基于ah和bh的值調(diào)節(jié)所述Karatsuba乘法。2.如權(quán)利要求l所述的計(jì)算機(jī)程序,其特征在于,Karatsuba乘法包括確定22sa山i+2s[(ai+a。)(bi+b。)—aibi—a。b。]+a。b。其中a。、ai、b。、b,是A和B的所述各段,它們各自的寬度為s,其中s是正整數(shù)。3.如權(quán)利要求l所述的計(jì)算機(jī)程序,其特征在于,所述用于調(diào)節(jié)的指令包括用于以下運(yùn)算的指令加上&B[bl:b0]2卜的值;加上KA[bl:b0]2h的值;以及如果ah和bh都等于1則加上ahbh22h的值。4.如權(quán)利要求l所述的計(jì)算機(jī)程序,其特征在于,所述Karatsuba乘法包括至少對(duì)A和B的較小的段進(jìn)行的遞歸Karatsuba乘法。5.如權(quán)利要求1所述的計(jì)算機(jī)程序,其特征在于,A和B被分割成從下組中選出的一種2段、3段以及5段。6.如權(quán)利要求l所述的計(jì)算機(jī)程序,其特征在于,ah和k包括單個(gè)位。7.如權(quán)利要求l所述的計(jì)算機(jī)程序,其特征在于,還包括使用所述用于執(zhí)行Karatsuba乘法的指令和所述用于調(diào)節(jié)的指令來確定gemodM的值。8.如權(quán)利要求7所述的計(jì)算機(jī)程序,其特征在于,M是公鑰的模數(shù)。9.一種將A和B這兩個(gè)數(shù)相乘的計(jì)算機(jī)實(shí)現(xiàn)方法,所述方法包括將A分割成多個(gè)段ax和至少一位的附加置位(set)ah,其中x表示段序數(shù)且h表示所述至少一位的附加置位的位置;將B分割成多個(gè)段bx和至少一位的附加置位bh;對(duì)A和B的所述各段執(zhí)行Karatsuba乘法;基于ah和bh的值調(diào)節(jié)所述Karatsuba乘法。10.如權(quán)利要求9所述的方法,其特征在于,Karatsuba乘法包括確定<formula>formulaseeoriginaldocumentpage3</formula>。其中a。、ai、b。、b是A和B的所述各段,它們各自的寬度為s,其中s是正整數(shù)。11.如權(quán)利要求9所述的方法,其特征在于,所述調(diào)節(jié)包括加上ahB[bl:b0]2h的值;加上bhA[bl:b0]2h的值;以及如果ah和bh都等于1則加上ahbh22h的值。12.如權(quán)利要求9所述的方法,其特征在于,所述Karatsuba乘法包括至少對(duì)A和B的較小的段進(jìn)行的遞歸Karatsuba乘法。13.如權(quán)利要求9所述的方法,其特征在于,A和B被分割成從下組中選出的一種2段、3段以及5段。14.如權(quán)利要求9所述的方法,其特征在于,ah和bh包括單個(gè)位。15.如權(quán)利要求9所述的方法,其特征在于,還包括使用用于執(zhí)行Karatsuba乘法的指令和用于調(diào)節(jié)的指令來確定gemodM的值。16.如權(quán)利要求15所述的方法,其特征在于,M是公鑰的模數(shù)。17.—種系統(tǒng),包括用于將A和B這兩個(gè)數(shù)相乘的電路,所述電路用于將A分割成多個(gè)段ax和至少一位的附加置位ah,其中x表示段序數(shù)且h表示所述至少一位的附加置位的位置;將B分割成多個(gè)段bx和至少一位的附加置位bh;對(duì)A和B的所述各段執(zhí)行Karatsuba乘法;基于ah和bh的值調(diào)節(jié)所述Karatsuba乘法。18.如權(quán)利要求17所述的系統(tǒng),其特征在于,Karatsuba乘法包括確定a化+2s[(a^a。)(b!+b。)-a!b!-a0b0]+a0b0其中a。、ai、b。、b:是A和B的所述各段,它們各自的寬度為s,其中s是正整數(shù)。19.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述用于調(diào)節(jié)的電路包括執(zhí)行以下運(yùn)算的電路加上&B[bl:b0]2"的值;加上bhA[bl:b0]^的值;以及如果ah和bh都等于l則加上ahbh22h的值。20.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述Karatsuba乘法包括至少對(duì)A和B的較小的段進(jìn)行的遞歸Karatsuba乘法。21.如權(quán)利要求17所述的系統(tǒng),其特征在于,ah和bh包括單個(gè)位。22.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述電路包括用于執(zhí)行對(duì)A和B執(zhí)行乘法的指令的可編程電路。23.如權(quán)利要求22所述的系統(tǒng),其特征在于,還包括與所述電路集成在同一管芯上并通信地耦合至所述電路的多個(gè)可編程核心。全文摘要本發(fā)明描述了將A和B這兩個(gè)數(shù)相乘的技術(shù)。通常,通過對(duì)A和B的各段使用Karatsuba乘法并基于A和B的最高有效位的值調(diào)節(jié)該Karatsuba乘法來執(zhí)行乘法。文檔編號(hào)G06F7/48GK101479698SQ200780024552公開日2009年7月8日申請(qǐng)日期2007年6月21日優(yōu)先權(quán)日2006年6月27日發(fā)明者G·高巴茨,M·巴斯,V·戈帕爾,W·哈森普勞伽申請(qǐng)人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1