專利名稱:用于執(zhí)行模冪運(yùn)算的方法
技術(shù)領(lǐng)域:
本發(fā)明總地涉及網(wǎng)絡(luò)安全,更具體地,涉及執(zhí)行模冪運(yùn)算的方法和裝置。
背景技術(shù):
公鑰密碼術(shù)是諸如因特網(wǎng)密鑰交換協(xié)議(IKE)(用在IP安全協(xié)議(IPSEC)中)和安全套接層協(xié)議(SSL)一類的密鑰交換/連接建立協(xié)議的一部分。一些公鑰安全方案,例如Diffie-Hellman密鑰交換、Rivest Shamir Adleman(RSA)加密、RSA數(shù)字簽名以及數(shù)字簽名授權(quán)(DSA)都通常用于此目的。我們知道,公鑰安全方案在計(jì)算上是非常密集的。作為大多數(shù)公鑰安全方案核心的計(jì)算是超大數(shù)的模冪(modular exponentiation)運(yùn)算。近來一般在使用512位和1024位的數(shù)字(密鑰),并且還想增大密鑰大小。不遠(yuǎn)的將來,模冪運(yùn)算的操作數(shù)大小很有可能增大到2048和4096位數(shù)字,甚至更大。蒙哥馬利乘法是一種用于執(zhí)行模冪運(yùn)算的常用方法。為了以當(dāng)今網(wǎng)絡(luò)所需的速率執(zhí)行密鑰交換/連接建立,需要專用的模冪運(yùn)算硬件。當(dāng)使用蒙哥馬利乘法時(shí),專用模冪運(yùn)算硬件主要包括一個(gè)或多個(gè)蒙哥馬利乘法引擎。蒙哥馬利乘法引擎的速度影響著網(wǎng)絡(luò)通信中執(zhí)行密鑰交換/連接建立的速度。因此,非常想要提高蒙哥馬利乘法引擎(MME)的效率。
另外,因?yàn)榫W(wǎng)絡(luò)中的不同實(shí)體可以使用不同的密鑰大小,并且公鑰大小總地來說一直在增大,所以模冪運(yùn)算硬件需要針對(duì)不同的密鑰大小執(zhí)行模冪運(yùn)算。因此,模冪運(yùn)算硬件內(nèi)的MME需要執(zhí)行不同大小的乘法,例如,如果公鑰大小是512位的話,MME需要執(zhí)行512位的操作數(shù)之間的乘法,如果公鑰大小是1024位的話,則MME需要執(zhí)行1024位的操作數(shù)之間的乘法。MME一般具有固定大小。例如,512位的MME被設(shè)計(jì)為對(duì)最大512位的操作數(shù)執(zhí)行蒙哥馬利乘法。理論上,大尺寸的MME可被用來對(duì)較小尺寸的操作數(shù)執(zhí)行蒙哥馬利乘法(例如,1024位的MME可被用來對(duì)512位的操作數(shù)執(zhí)行蒙哥馬利乘法),但是這樣使用不見得有效率。因此,出于效率考慮,10種不同大小的MME應(yīng)當(dāng)被用來對(duì)10種不同的密鑰大小執(zhí)行模冪運(yùn)算,每種大小的MME用于一種特定的密鑰大小。隨著密鑰大小的增長(zhǎng),對(duì)于模冪運(yùn)算硬件來說,如果每種密鑰都要具有完全相同大小的MME,那么它很難適應(yīng)于任意大小的密鑰。很多具有模冪運(yùn)算硬件的網(wǎng)絡(luò)處理器,特別是那些中低端的處理器,出于成本和管芯(die)尺寸的考慮,一般都具有較小尺寸的MME。然而,這樣的網(wǎng)絡(luò)處理器仍然需要支持較大密鑰大小的模冪運(yùn)算。因此,非常想要使用較小尺寸的MME對(duì)較大尺寸的操作數(shù)執(zhí)行蒙哥馬利乘法。
發(fā)明內(nèi)容
為實(shí)現(xiàn)以上目的,本發(fā)明提供了一種用于執(zhí)行模冪運(yùn)算的布置。可以通過使用多個(gè)蒙哥馬利乘法來完成模冪運(yùn)算。蒙哥馬利乘法包括多次迭代的基本操作(例如,進(jìn)位保存加法),并由蒙哥馬利乘法引擎(MME)來執(zhí)行。多個(gè)較小尺寸的MME可以被鏈?zhǔn)竭B接在一起,以執(zhí)行較大尺寸的模冪運(yùn)算。另外,單個(gè)較小尺寸的MME可被調(diào)度來執(zhí)行較大尺寸的模冪運(yùn)算。此外,執(zhí)行蒙哥馬利乘法的過程可以在水平和垂直兩個(gè)方向上流水線化。此外,執(zhí)行兩個(gè)蒙哥馬利乘法的過程可以被交織在一起,并由同一個(gè)MME或鏈?zhǔn)竭B接的MME來執(zhí)行。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于執(zhí)行模冪運(yùn)算的裝置,包括至少一個(gè)執(zhí)行蒙哥馬利乘法以完成模冪運(yùn)算的蒙哥馬利乘法引擎,即MME,所述模冪運(yùn)算的尺寸由該模冪運(yùn)算的模數(shù)中的位數(shù)來確定;和至少部分基于所述模冪運(yùn)算的尺寸以及在所述至少一個(gè)MME當(dāng)中的可用MME的尺寸,確定用于執(zhí)行所述模冪運(yùn)算的蒙哥馬利乘法的方法的控制器。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種用于執(zhí)行模冪運(yùn)算的方法,包括接收用于至少一個(gè)模冪運(yùn)算的輸入?yún)?shù);至少部分基于所述至少一個(gè)模冪運(yùn)算的尺寸,確定用于執(zhí)行蒙哥馬利乘法以完成所述至少一個(gè)模冪運(yùn)算的方法;基于所確定的方法,使用至少一個(gè)蒙哥馬利乘法引擎,即MME,來執(zhí)行所述蒙哥馬利乘法;以及基于來自所述至少一個(gè)MME的輸出數(shù)據(jù),產(chǎn)生所述至少一個(gè)模冪運(yùn)算的結(jié)果。
根據(jù)本發(fā)明的又一個(gè)方面,提供了一種網(wǎng)絡(luò)系統(tǒng),包括交換結(jié)構(gòu);多個(gè)通過所述交換結(jié)構(gòu)互連的線卡;和多個(gè)模冪運(yùn)算模塊,每個(gè)模塊可操作地與線卡耦合,用以執(zhí)行模冪運(yùn)算,模冪運(yùn)算模塊包括至少一個(gè)執(zhí)行蒙哥馬利乘法以完成模冪運(yùn)算的蒙哥馬利乘法引擎,即MME,所述模冪運(yùn)算的尺寸由該模冪運(yùn)算的模數(shù)中的位數(shù)來確定;和至少部分基于所述模冪運(yùn)算的尺寸以及在所述至少一個(gè)MME當(dāng)中的可用MME的尺寸,確定用于執(zhí)行所述模冪運(yùn)算的蒙哥馬利乘法的方法的控制器,MME的尺寸是該MME被設(shè)計(jì)來支持的模冪運(yùn)算的最大尺寸。
從以下對(duì)本發(fā)明的詳細(xì)描述中將會(huì)清楚本發(fā)明的特征和優(yōu)點(diǎn),其中圖1圖示了一種通用網(wǎng)絡(luò)系統(tǒng);圖2的流程圖示出了使用基于公鑰安全方案的加密通信過程(現(xiàn)有技術(shù));圖3示出的偽碼用于說明在基于公鑰的加密過程中使用蒙哥馬利乘法執(zhí)行模冪運(yùn)算的過程(現(xiàn)有技術(shù));圖4A、4B和4C示出的偽碼用于說明執(zhí)行蒙哥馬利乘法的示例性過程;圖5圖示了蒙哥馬利乘法的示例性實(shí)現(xiàn)方式;圖6中的表圖示了調(diào)度蒙哥馬利乘法的過程;圖7圖示了使用多個(gè)較小尺寸的蒙哥馬利乘法引擎來調(diào)度較大尺寸操作數(shù)的蒙哥馬利乘法的過程;圖8是一種示例性系統(tǒng)的框圖,該系統(tǒng)通過鏈?zhǔn)竭B接多個(gè)不同尺寸的蒙哥馬利乘法引擎,執(zhí)行較大密鑰尺寸的模冪運(yùn)算;圖9圖示了使用單個(gè)較小尺寸的蒙哥馬利乘法引擎來調(diào)度較大尺寸操作數(shù)的蒙哥馬利乘法的過程;圖10是一種示例性系統(tǒng)的框圖,該系統(tǒng)使用單個(gè)較小尺寸的蒙哥馬利乘法引擎,執(zhí)行較大密鑰尺寸的蒙哥馬利乘法;圖11的流程圖示出了執(zhí)行模冪運(yùn)算的示例性過程;以及圖12是包含基于蒙哥馬利乘法的模冪運(yùn)算模塊的網(wǎng)絡(luò)系統(tǒng)的圖。
具體實(shí)施例方式
所公開技術(shù)的實(shí)施方案包括用于執(zhí)行模冪運(yùn)算的方法和裝置。蒙哥馬利乘法是一種用于執(zhí)行模冪運(yùn)算的常用方法,它可能是用于提高網(wǎng)絡(luò)通信安全性的公鑰安全方案中計(jì)算最密集的部分。蒙哥馬利乘法可以通過一個(gè)或多個(gè)基本運(yùn)算的多次迭代來完成。每個(gè)基本運(yùn)算可以包括在分別具有一位或多位的兩個(gè)操作數(shù)之間的加法或進(jìn)位保存(carry-save)加法。一般來說,當(dāng)蒙哥馬利乘法用在公鑰安全方案中時(shí),迭代的次數(shù)等于密鑰大小。基于公鑰的密碼術(shù)應(yīng)用中的密鑰大小在當(dāng)今網(wǎng)絡(luò)中一般為512位或1024位,但很有可能增大到2048位,甚至更高。即使對(duì)于512位的密鑰來說,完成這么多數(shù)量的基本運(yùn)算也是非常耗時(shí)的(特別是當(dāng)基本運(yùn)算是兩位之間的運(yùn)算時(shí))。根據(jù)所公開技術(shù)的一個(gè)實(shí)施方案,一次迭代中的基本運(yùn)算可被分組到多塊中。在這些塊中所包含的運(yùn)算可以被流水線化(“水平流水線化操作”)。另外,不同迭代之間的塊也可被流水線化(“垂直流水線化操作”)。此外,兩個(gè)蒙哥馬利乘法可被交織(interleave)在一起,并運(yùn)行在同一引擎上(“交織操作”)。使用交織、水平流水線化和垂直流水線化技術(shù),就可以提高蒙哥馬利乘法引擎(MME)的效率。
根據(jù)所公開技術(shù)的另一個(gè)實(shí)施方案,可以將多個(gè)較小尺寸的MME鏈?zhǔn)竭B接在一起,以對(duì)較大尺寸的操作數(shù)執(zhí)行蒙哥馬利乘法。還是根據(jù)本發(fā)明的另一個(gè)實(shí)施方案,單個(gè)較小尺寸的MME可被用來對(duì)較大尺寸的操作數(shù)執(zhí)行蒙哥馬利乘法。使用所公開的技術(shù),具有較小尺寸MME的網(wǎng)絡(luò)處理器可以以更高的效率來處理較大尺寸的公鑰。
在說明書中提及本發(fā)明的“一個(gè)實(shí)施方案”或“實(shí)施方案”是指關(guān)于該實(shí)施方案所描述的具體特征、結(jié)構(gòu)或特性至少包括在本發(fā)明的一個(gè)實(shí)施方案中。因此,“在一個(gè)實(shí)施方案中”在整個(gè)說明書不同地方的出現(xiàn)不一定是指同一個(gè)實(shí)施方案。
圖1描繪了支持多個(gè)終端的通用網(wǎng)絡(luò)系統(tǒng)110。網(wǎng)絡(luò)系統(tǒng)110可以包括多個(gè)設(shè)備,例如路由器、交換機(jī)和橋,用以協(xié)助將數(shù)據(jù)從一個(gè)終端傳送到另一個(gè)終端。網(wǎng)絡(luò)系統(tǒng)可以是無線系統(tǒng)、以太網(wǎng)系統(tǒng)、任何其他系統(tǒng)、或不同網(wǎng)絡(luò)系統(tǒng)的組合。網(wǎng)絡(luò)系統(tǒng)可以利用衛(wèi)星120來幫助將一個(gè)終端連接到另一個(gè)終端。網(wǎng)絡(luò)系統(tǒng)的終端可以包括服務(wù)器(130)、臺(tái)式計(jì)算機(jī)(140)、個(gè)人名錄助手(PDA)(150)、蜂窩電話(160)、膝上型計(jì)算機(jī)(170)或其他設(shè)備。在不同終端之間傳送的數(shù)據(jù)可以包括視頻、音頻、消息以及其他數(shù)據(jù)。網(wǎng)絡(luò)系統(tǒng)可以使用密鑰交換/連接建立協(xié)議,例如IKE和SSL用于通信安全。公鑰安全方案可被用作這些密鑰交換/連接建立協(xié)議的一部分。為了實(shí)現(xiàn)公鑰安全方案在計(jì)算上密集的模冪運(yùn)算,可以采用蒙哥馬利乘法,它可以由一個(gè)或多個(gè)蒙哥馬利乘法引擎(MME)來完成。針對(duì)在不斷發(fā)展的網(wǎng)絡(luò)中所需的日益增長(zhǎng)的密鑰尺寸,為了以越來越高的速率執(zhí)行密鑰交換/連接建立,非常需要提高M(jìn)ME的效率,并且使用較小尺寸的MME對(duì)較大尺寸的操作數(shù)執(zhí)行蒙哥馬利乘法。
公鑰密碼術(shù)方案是一種非對(duì)稱的安全方案(發(fā)送方和接收方使用不同的密鑰)。它包括與實(shí)體相關(guān)聯(lián)的一對(duì)密鑰——公鑰和私鑰,所述實(shí)體需要以電子方式來驗(yàn)證其身份,或者簽名或加密數(shù)據(jù)。每個(gè)公鑰通過一個(gè)認(rèn)證授權(quán)機(jī)構(gòu)來公布,而對(duì)應(yīng)的私鑰則保密。與對(duì)稱安全方案(其中發(fā)送方和接收方使用相同的密鑰)相比,公鑰安全方案需要更多的計(jì)算(因?yàn)槭褂昧四邕\(yùn)算),因此不總是適用于大數(shù)據(jù)量的情況。然而,有可能使用公鑰方案來加密和發(fā)送對(duì)稱密鑰,該對(duì)稱密鑰隨后可被用來加密附加的數(shù)據(jù)。這是某些安全協(xié)議(例如SSL協(xié)議)所使用的方法。除了加密以外,公鑰安全方案還可以用于數(shù)字簽名應(yīng)用。
圖2圖示了使用基于公鑰安全方案的加密通信過程的流程圖。在框210中,發(fā)送方可以從認(rèn)證授權(quán)機(jī)構(gòu)獲得接收方的公鑰。在框220中,發(fā)送方可以使用所述公鑰來加密一個(gè)明文(cleartext)消息。在框230中,發(fā)送方可以通過網(wǎng)絡(luò)發(fā)送加密后的消息。在框240中,接收方可以從網(wǎng)絡(luò)中接收加密后的消息。在框250中,接收方可以使用其私鑰對(duì)所接收的加密后消息進(jìn)行解密。在框260中,接收方可以獲得來自發(fā)送方的明文消息。在發(fā)送方一側(cè)的使用公鑰的加密過程以及在接收方一側(cè)的使用私鑰的解密過程都涉及模冪運(yùn)算,例如Ae(mod m),其中A、e和m分別代表基數(shù)、指數(shù)和模數(shù);并且在公鑰安全方案中都是正整數(shù)。使用傳統(tǒng)方法來執(zhí)行模冪運(yùn)算在計(jì)算上是非常密集的,因?yàn)橹辽僖瓿蒭次乘法和求?;?jiǎn)(modular reduction)運(yùn)算。為了使得模冪運(yùn)算更快,在公鑰密碼術(shù)系統(tǒng)中一般使用基于蒙哥馬利乘法的方法來完成模冪運(yùn)算。
為了描述如何執(zhí)行蒙哥馬利乘法,有必要介紹一下m余數(shù)的概念,其中m是模數(shù),是一個(gè)k位整數(shù)。令r=2k,蒙哥馬利乘法要求r和m互質(zhì)。如果m是奇數(shù)的話,就滿足這個(gè)要求。整數(shù)A(A<m)的m余數(shù)是a=A·r(mod m)。已知兩個(gè)m余數(shù)a和b,蒙哥馬利積被定義為m余數(shù)o=a·b·r-1(mod m),(1)其中r-1是r模m的逆,即r-1·r=1(mod m);并且b=B·r(mod m)。實(shí)際上,o是積O=A·B(mod m)的m余數(shù),這是因?yàn)閛=a·b·r-1(mod m)=A·r·B·r·r-1(mod m)=O·r(mod m)。
圖3示出的偽碼說明了在基于公鑰的加密過程中,使用蒙哥馬利乘法來執(zhí)行模冪運(yùn)算Ae(mod m)的過程。令n等于指數(shù)e的位數(shù)。第1行示出了模冪運(yùn)算函數(shù)ModExp(A,e,m),用于計(jì)算Ae(mod m)。所述函數(shù)包括從第2行到第8行所示出的操作。在第2行中,獲得基數(shù)(A)的m余數(shù)(a)。在第3行中,獲得數(shù)(1)的m余數(shù)(x)。第4行開始一個(gè)包括n次迭代在內(nèi)的循環(huán),它從e的最高有效位開始,每次迭代包括在第5和第6行中所示的操作。在第5行中,計(jì)算x和x之間的蒙哥馬利積,其結(jié)果被用來更新x值。在第6行中,如果e的當(dāng)前位e[i]=1,則用x自身和基數(shù)A的m余數(shù)之間的蒙哥馬利積來進(jìn)一步更新x值。因此,取決于指數(shù)e的值,對(duì)于e中的每一位可能要完成一次或兩次蒙哥馬利乘法。第7行利用蒙哥馬利乘法的性質(zhì),使用其m余數(shù)來計(jì)算X,即,MontMult(x,l,m)=x·1·r-1(modm)=X·r·r-1(mod m)=X(mod m),其中X是模冪運(yùn)算Ae(mod m)的結(jié)果。第8行返回X的值。
圖4A示出的微碼說明了執(zhí)行蒙哥馬利乘法的示例性過程。第1行示出了蒙哥馬利乘法函數(shù)MontMult(x,y,m)。該函數(shù)采用三個(gè)參數(shù)x、y和m,其中m與MontMult被用來計(jì)算的模冪運(yùn)算Ae(mod m)中的模數(shù)是相同的。參數(shù)x、y和m具有相同的位數(shù)(假設(shè)位數(shù)是k)。為描述方便,k位輸入?yún)?shù)的蒙哥馬利乘法將被稱為尺寸k的蒙哥馬利乘法。在第2行中,被用來存儲(chǔ)x和y之間的蒙哥馬利積的變量T被初始化為0。第3行開始在第4和第5行中所示運(yùn)算的k次迭代。在第4行中,由(T+x[i]·y)(mod 2)獲得臨時(shí)結(jié)果Z,其中x[i]代表x的第i位的值。在第5行中,由(T+Z·m+x[i]·y)/2來更新T的值,其中除2的運(yùn)算就是“右移一位”的操作。在執(zhí)行第4和第5行k次迭代后,結(jié)果T的值被限制在0到2m的范圍內(nèi)。由于x和y之間的蒙哥馬利積應(yīng)當(dāng)小于m(在0到m-1的范圍內(nèi)),所以第6行檢查結(jié)果T的值是否位于所要求的0到m-1的范圍內(nèi);如果不是,則進(jìn)行校正。第7行返回最終結(jié)果T,它就是x和y之間的蒙哥馬利積。
注意,在圖4A的第4行中的(Z·m)的加法是有條件的。只有在(T+x[i]·y)(mod 2)的結(jié)果是奇數(shù)的時(shí)候,才進(jìn)行該加法。(T+x[i]·y)(mod 2)的結(jié)果是否為奇數(shù)僅僅取決于x[i]以及T和y的最低位(即T
和y
)。因此,圖4A中所示的偽碼可以被重寫為圖4B中所示的偽碼。從圖4B,特別是第4和第5行可以看出,蒙哥馬利乘法主要包括k次加法運(yùn)算(第4行中示出)和k次移位運(yùn)算(在第5行中示出),這在硬件實(shí)現(xiàn)上比通常的乘法和求模運(yùn)算要相對(duì)容易和簡(jiǎn)單一些。因此,要計(jì)算模冪運(yùn)算,使用蒙哥馬利乘法有可能比通常的乘法和求模運(yùn)算更快,更簡(jiǎn)單。
雖然圖4B第4行示出三個(gè)操作數(shù)的相加T,(T
xor(x[i]·y
))·m(“xor”代表異或運(yùn)算)和x[i]·y,但是更詳細(xì)的分析可以發(fā)現(xiàn),這一行實(shí)際上可以在兩個(gè)操作數(shù)之間實(shí)現(xiàn),因而可以通過進(jìn)位保存加法來實(shí)現(xiàn)。這兩個(gè)操作數(shù)之一是T,另一個(gè)是m、y和(m+y)之一,因?yàn)樵诿看蔚^程中,這三個(gè)值中只有一個(gè)值與T相加。在m、y和(m+y)中哪一個(gè)值與T相加,這取決于(T
xor(x[i]·y
))和x[i]的值,如下表中所示
實(shí)際上,復(fù)用器可被用來基于(T
xor(x[i]·y
))和x[i]的值,輸出用于每次迭代的四個(gè)互斥選擇信號(hào)sel_nothing、sel_y、sel_m和sel_m&y。因?yàn)?T
xor(x[i]·y
))的值用于確定模數(shù)m是否應(yīng)當(dāng)與T相加,所以(T
xor(x[i]·y
))此后將被稱為模數(shù)選擇指示符。在sel_nothing之下,什么都不做,前一T的值通過;在sel_y之下,只有y的值與T相加;在sel_m之下,只有m的值與T相加;而在sel_m&y之下,(m+y)的值與T相加。圖4C示出的偽碼用于說明通過進(jìn)位保存加法實(shí)現(xiàn)蒙哥馬利乘法的示例性過程。在圖4C中,變量T用進(jìn)位變量C與和變量S的和來表示。這樣的實(shí)現(xiàn)可以改進(jìn)蒙哥馬利乘法的性能。此外,T、y、m和m+y每一個(gè)中的位都可以分割成多個(gè)位組,每個(gè)位組中都具有少量位,對(duì)于每次迭代,可以基于這些位組來完成T與從0、y、m和m+y中選出的一個(gè)值之間的進(jìn)位保存加法(例如,如果每個(gè)位組僅包含1位,那么進(jìn)位保存加法可以一位一位地執(zhí)行)。
圖5示出了蒙哥馬利乘法的示例性實(shí)現(xiàn)。使用這一實(shí)現(xiàn)方案的蒙哥馬利乘法引擎(MME)可以包括k行,每一行代表圖4C中所示的第4和第5行中的一次迭代運(yùn)算。每一行包括k個(gè)蒙哥馬利乘法處理單元(“MMPE”)520。為描述方便,MMPE(u,v)將被用來表示在第“i=u”行和“第j=v”列交叉點(diǎn)處的MMPE,并且每一行中的MMPE的數(shù)量將被稱為MME的寬度。每個(gè)MMPE執(zhí)行T的一位(如圖4C所示)和選定值(0、y、m和m+y之一)的對(duì)應(yīng)位之間的進(jìn)位保存加法。例如,在對(duì)應(yīng)于j=2的列中,每個(gè)MMPE執(zhí)行T的第3位和選定值的第3位之間的進(jìn)位保存加法。(m+y)的值可以在第一次迭代開始之前被預(yù)先計(jì)算出來,因?yàn)閙值和y值在所有迭代開始之前就是已知的。每一行還包括選擇機(jī)制510,用于計(jì)算模數(shù)選擇指示符(T
xor(x[i]·y
)),并在0、y、m和m+y當(dāng)中進(jìn)行選擇。選擇機(jī)制510可以包括復(fù)用器,用于在0、y、m和m+y當(dāng)中選擇一個(gè)值并輸出這個(gè)選定值,以供該行中k個(gè)MMPE中的每一個(gè)來使用。在一個(gè)實(shí)施方案中,選擇機(jī)制可以計(jì)算模數(shù)選擇指示符的值,并且將該值傳播給行中的每個(gè)MMPE。每個(gè)MMPE包括復(fù)用器,以基于模數(shù)選擇指示符的值和x[i],在0、y、m和m+y中選擇一個(gè)值。
在第一行(i=0),因?yàn)門在第2行被初始化為0(如圖4C所示),所以每個(gè)MMPE可以只是將選定值的位傳過去,作為輸出的和值。因?yàn)樵趫D4C所示的第5行中的除法運(yùn)算,所以第1行中的進(jìn)位保存加法的輸出數(shù)據(jù)右移一位。在第二行(i=1)中并且在這之后,每個(gè)MMPE從第一行中的MMPE取得進(jìn)位值與和值,并與由第2行中的選擇機(jī)制510從0、y、m和m+y中選出的值的對(duì)應(yīng)位相加。例如,MMPE(1,1)將來自MMPE(0,0)的進(jìn)位值、MMPE(0,1)的和值以及由選擇機(jī)制510選出的值作為輸入。由于圖4C中第5行所示的右移操作,MMPE(1,1)代之以將來自MMPE(0,1)的進(jìn)位值與來自MMPE(0,2)的和值以及選定值作為輸入。由于在每次迭代過程中,進(jìn)位值與和值都被右移一比特位置,所以每次迭代對(duì)下一次迭代的影響有限。例如,迭代1(i=1),位0(MMPE(1,0))取決于迭代0,位0(MMPE(0,1))。迭代2,位0(MMPE(2,0))取決于迭代0的位0,1和2(MMPE(0,0)、MMPE(0,1)和MMPE(0,2))以及迭代1的位0和1(MMPE(1,0)和MMPE(1,1))??傊?,迭代u,位v(MMPE(u,v))將取決于迭代0的位v到v+u(MMPE(0,v)到MMPE(0,u+v))、迭代1的位v到v+u-1(MMPE(1,v)到MMPE(1,v+u-1))等依此類推。
理想情況下,應(yīng)當(dāng)總共有k行MMPE,每行有k個(gè)MMPE,形成總共k2個(gè)MMPE用以實(shí)現(xiàn)尺寸k的蒙哥馬利乘法。然而,實(shí)際上,總共k2個(gè)MMPE可能需要很大的管芯尺寸,特別是當(dāng)k比較大時(shí)。因此,只有少數(shù)行的k個(gè)MMPE(例如,8行)可被實(shí)際用來實(shí)現(xiàn)尺寸k的蒙哥馬利乘法。這些行可被重復(fù)使用來完成尺寸k的蒙哥馬利乘法所需的總共k次迭代的進(jìn)位保存加法。
蒙哥馬利乘法的尺寸與公鑰安全方案中的密鑰大小是相同的,一般為512位或更高。這意味著在圖5所示的每一行中可能有至少512個(gè)MMPE。沿MME寬度方向上的進(jìn)位傳播可能要花費(fèi)一些時(shí)間。另外,在MME寬度方向上傳播模數(shù)選擇指示符的值或者0、y、m和m+y當(dāng)中的選定值也可能會(huì)造成一定延時(shí)。這種傳播延時(shí)可能會(huì)限制MME的吞吐率。一種提高M(jìn)ME吞吐率的方法就是流水線化MMPE所執(zhí)行的進(jìn)位保存加法。進(jìn)位保存加法可以在MME的寬度方向上(“水平流水線化操作”)以及迭代方向上(“垂直流水線化操作”)被流水線化。
由于傳播延時(shí),在一次迭代中所包括的操作可能不會(huì)在一個(gè)周期中完成。在水平流水線化操作的情況下,一行中的k個(gè)MMPE可被分組成幾塊,使得在每一塊中所包括的操作可以在一個(gè)時(shí)鐘周期內(nèi)完成。每一塊中所包括的操作可以在各塊之間流水線化。例如,對(duì)于尺寸為512位的蒙哥馬利乘法,一行512個(gè)MMPE可被分組成5塊第1塊包括用于第0-7位的MMPE,第2塊包括用于第8-127位的MMPE,第3塊包括用于第128-255位的MMPE,第4塊包括用于第256-383位的MMPE,而第5塊包括用于第384-511位的MMPE。由于模數(shù)選擇指示符的值也是在第1塊中計(jì)算(這個(gè)值需要在對(duì)第0位的進(jìn)位保存加法之前被計(jì)算出來),所以第1塊中包括比較少的按位順序的(bit-wise)進(jìn)位保存加法。在一個(gè)實(shí)施方案中,在第1塊中計(jì)算出的模數(shù)選擇指示符的值可以被傳播到其他塊,使得那里的MMPE可以使用與每個(gè)MMPE相關(guān)聯(lián)的復(fù)用器,從0、y、m和m+y中選出一個(gè)值。在另一個(gè)實(shí)施方案中,這個(gè)值可以與x[i]一起被用來經(jīng)由復(fù)用器選擇0、y、m和m+y中的一個(gè)值,然后將選定值傳播到其他塊。這5個(gè)塊(對(duì)于尺寸為512位的蒙哥馬利乘法而言)中所包括的操作可以被流水線化,以改進(jìn)MME。
在每個(gè)周期可以完成的迭代次數(shù)方面,也有類似的限制。在垂直流水線化操作下,一個(gè)周期內(nèi)可以對(duì)一個(gè)水平塊執(zhí)行一組迭代。組的大小可以根據(jù)不同實(shí)現(xiàn)方案而不同。例如,組的大小可以是8,使得在一個(gè)周期內(nèi)可以對(duì)一個(gè)水平塊執(zhí)行8次迭代。由于迭代之間的依存性,MMPE(7,7)取決于從MMPE(0,7)到MMPE(0,14),MMPE(1,7)到MMPE(1,13)……以及MMPE(6,7)到MMPE(6,8)得到的結(jié)果。如果第1塊被定義為在第0-7位中所包括的操作,那么為了相對(duì)獨(dú)立,涉及第1塊的8次迭代的操作也應(yīng)當(dāng)包括由MMPE(0,7)到MMPE(0,14),MMPE(1,7)到MMPE(1,13)……以及MMPE(6,7)到MMPE(6,8)所執(zhí)行的操作??傊?,第w塊的M次迭代也應(yīng)當(dāng)包括為使得在第w塊的M次迭代中所包括的操作相對(duì)獨(dú)立所需的那些操作。
雖然圖5示出了每個(gè)MMPE執(zhí)行兩位之間的進(jìn)位保存加法的一個(gè)實(shí)施方案,但是不要求MMPE只是執(zhí)行按位順序的(bitwise)進(jìn)位保存加法。MMPE可以執(zhí)行蒙哥馬利乘法所需的基本運(yùn)算。這種基本運(yùn)算可以包括按位順序的進(jìn)位保存加法、兩個(gè)分別具有超過1位的運(yùn)算之間的進(jìn)位保存加法、兩個(gè)分別包括1位或多位的運(yùn)算之間的加法,或者任何其他運(yùn)算。水平和垂直流水線化技術(shù)的應(yīng)用與MMPE所執(zhí)行的具體運(yùn)算無關(guān)。
圖6是圖示了如何使用交織以及水平和垂直流水線化技術(shù)來調(diào)度蒙哥馬利乘法的表。假設(shè)每次迭代中的全部按位順序的進(jìn)位保存加法被分組到5個(gè)水平塊中,并且8次迭代可被分組在一起,使得在一個(gè)周期中可以對(duì)一個(gè)水平塊執(zhí)行8次迭代。令P[i]表示對(duì)于蒙哥馬利乘法P的一個(gè)水平塊,在第ix8到第(i+1)x8-1次迭代中所包括的運(yùn)算(例如,P
表示對(duì)于蒙哥馬利乘法P的一個(gè)水平塊,在第0到第7次迭代中所包括的運(yùn)算)。Q[i]與P[i]具有相同的含義,但它是用于一個(gè)不同的蒙哥馬利乘法Q。在第1周期中,可以執(zhí)行塊1的P
(即,對(duì)于P的塊1,在第0-7次迭代中所包括的運(yùn)算)。在第2周期中,可以執(zhí)行塊2的P
(即,對(duì)于P的塊2,在第0-7次迭代中所包括的運(yùn)算)。然而卻無法執(zhí)行塊1的P[1](即,對(duì)于P的塊1,在第8-15次迭代中所包括的運(yùn)算),因?yàn)閴K1的P[1]取決于塊2的P
的結(jié)果。為了充分利用MME的能力,可以執(zhí)行用于另一個(gè)不相關(guān)的模冪運(yùn)算的蒙哥馬利乘法Q。結(jié)果,兩個(gè)不相關(guān)的蒙哥馬利乘法P和Q可以被交織在一起,以提高M(jìn)ME的效率。因此,在第2周期中,雖然由于迭代間的依存性而無法執(zhí)行第1塊的P[1],但是可以執(zhí)行第1塊的Q
(即,對(duì)于Q的塊1,在第0-7次迭代中所包括的運(yùn)算)。
在第3周期中,可以執(zhí)行塊3的P
,并且可以執(zhí)行塊2的Q
。在這個(gè)周期中,由于已經(jīng)可以得到塊2的P
的結(jié)果,所以可以執(zhí)行塊1的P[1]。在第4周期中,可以執(zhí)行塊4的P
和塊2的P[1],但是由于塊1的P[2]取決于塊2的P[1]的結(jié)果,所以還無法執(zhí)行塊1的P[2]。同樣在這個(gè)周期中,可以執(zhí)行塊3的Q
和塊1的Q[1]。在第5周期中,可以執(zhí)行塊5的P
、塊3的P[1]和塊1的P[2]。同時(shí),可以執(zhí)行塊4的Q
和塊2的Q[1]。由于水平流水線化操作,蒙哥馬利乘法P的不同水平塊(即,塊1、塊3和塊5)可以在同一個(gè)周期(第5周期)中執(zhí)行。另外,由于垂直流水線化操作,同一蒙哥馬利乘法P的不同迭代組(即,塊5的第0-7次迭代、塊3的第8-15次迭代以及塊1的第16-23次迭代)也可以在同一周期(第5周期)中執(zhí)行。此外,由于交織操作,用于另一個(gè)不相關(guān)的蒙哥馬利乘法Q的塊4的Q
以及塊2的Q[1]也可以在第5周期中執(zhí)行。通過交織操作以及水平和垂直流水線化操作執(zhí)行蒙哥馬利乘法P和Q的過程可以從第6周期開始繼續(xù)向前進(jìn)行。每個(gè)水平塊的8次迭代所得到的結(jié)果可以被緩沖,并供下面的周期使用。一旦這些結(jié)果被所有相關(guān)的塊使用后,它們就可以從緩沖區(qū)中清除,使得緩沖區(qū)可以由其他結(jié)果來使用。
雖然上面參考圖6描述了水平和垂直流水線化技術(shù)和交織技術(shù),但是這些技術(shù)不必一起用在一個(gè)實(shí)施方案中。例如,可以在一個(gè)實(shí)施方案中使用水平和/或垂直流水線化操作,而不使用交織技術(shù);在另一個(gè)實(shí)施方案中,可以使用交織技術(shù),而不使用水平和垂直流水線化技術(shù)。
使用交織、水平流水線化和垂直流水線化技術(shù),就可以將多個(gè)較小尺寸的MME鏈?zhǔn)竭B接起來,以對(duì)較大尺寸的操作數(shù)執(zhí)行蒙哥馬利乘法。圖7圖示了使用多個(gè)較小尺寸的MME來調(diào)度較大尺寸操作數(shù)的蒙哥馬利乘法的過程,其中Bi代表水平塊i。在圖7中,作為一個(gè)實(shí)施例,兩個(gè)512位的MME被用來執(zhí)行1024位的蒙哥馬利乘法。兩個(gè)512位的MME中的每一個(gè)都具有5個(gè)水平塊,按照?qǐng)D6中所示的方式形成。
從第1到第5周期,可以按照和圖6中所示的同樣方式(從周期1到5)來調(diào)度引擎1。在圖7中,在單獨(dú)的兩行中示出了兩個(gè)交織的蒙哥馬利乘法P和Q,盡管在圖6中它們被示出在同一行中。在最初的5個(gè)周期內(nèi)引擎2是空閑的。對(duì)于P,在第0-7次迭代中的前512位在5個(gè)周期后已被處理完畢。在第6周期,在兩個(gè)引擎之間發(fā)生交叉。引擎2在第6周期中被使用,并將從第6周期開始往后,處理P和Q中的后一半位(即,第512-1023位)。因此,在引擎2中,B1對(duì)應(yīng)于P和Q的第512-519比特位置(塊6);B2對(duì)應(yīng)于第520-639比特位置(塊7);B3對(duì)應(yīng)于第640-767比特位置(塊8);B4對(duì)應(yīng)于第768-895比特位置(塊9);B5對(duì)應(yīng)于第896-1023比特位置(塊10)。換言之,引擎2中的B1-B5分別對(duì)應(yīng)于P和Q的塊6到塊10。
在第6周期中,在引擎2中執(zhí)行塊6的P
(即,對(duì)P的第0-7次迭代的第512-519比特位置的運(yùn)算),同時(shí)可以在引擎1中執(zhí)行塊4的P[1]、塊2的P[2]、塊5的Q
、塊3的Q[1]、塊1的Q[2]。在第7周期中,可以在引擎2中執(zhí)行塊7的P
(即,對(duì)P的第520-639比特位置的第0-7次迭代中的運(yùn)算)。然而,因?yàn)閴K6的P[1]取決于塊7的P
的結(jié)果,所以在引擎2中無法執(zhí)行塊6的P[1](即,對(duì)P的第512-519比特位置的第8-15次迭代中的運(yùn)算)。相反,在第7周期中,可以在引擎2中執(zhí)行塊6的Q
(即,對(duì)Q的第512-519比特位置的第0-7次迭代中的運(yùn)算)。同樣在第7周期中,可以在引擎1中執(zhí)行塊5的P[1]、塊3的P[2]、塊1的P[3]、塊4的Q[1]、塊2的Q[2]??梢钥吹?,對(duì)于P和Q而言,從引擎1到引擎2的交叉是平滑的,無需額外的操作。
在第8周期中,可以在引擎2中執(zhí)行塊8的P
、塊6的P[1]、塊7的Q
,同時(shí)可以在引擎1中執(zhí)行塊4的P[2]、塊2的P[3]、塊5的Q[1]塊3的Q[2]以及塊1的Q[3]。在第9周期中,可以在引擎2中執(zhí)行塊9的P
、塊7的P[1]塊8的Q
以及塊6的Q[1],同時(shí)可以在引擎1中執(zhí)行塊5的P[2]、塊3的P[3]、塊1的P[4]、塊4的Q[2]以及塊2的Q[3]。在第10周期中,可以在引擎2中執(zhí)行塊10的P
、塊8的P[1]、塊6的P[2]、塊9的Q
以及塊7的Q[1],同時(shí)可以在引擎1中執(zhí)行塊4的P[3]、塊2的P[4]、塊5的Q[2]、塊3的Q[3]以及塊1的Q[4]。從第10周期往后,水平流水線(在兩個(gè)引擎上有10個(gè)水平塊用于P和Q的每一個(gè))和垂直流水線(在兩個(gè)引擎上有4組迭代用于P和Q的每一個(gè))都是滿的,該過程可以持續(xù)到P和Q都結(jié)束為止。
雖然圖7示出了兩個(gè)尺寸相同的引擎,但是也可以將兩個(gè)不同尺寸的引擎鏈?zhǔn)竭B接在一起,以對(duì)較大尺寸的操作數(shù)執(zhí)行蒙哥馬利乘法。例如,可以將一個(gè)M位的MME、一個(gè)K位的MME和一個(gè)N位的MME鏈?zhǔn)竭B接在一起,以對(duì)(M+K+N)位的操作數(shù)執(zhí)行蒙哥馬利乘法,這可以以類似于上述的方式來調(diào)度。另外,雖然前面關(guān)于圖7描述了水平和垂直流水線化技術(shù)以及交織技術(shù),但是它們不需要一起用在一個(gè)實(shí)施方案中。例如,可以在一個(gè)實(shí)施方案中使用水平流水線化操作和/或垂直流水線化操作,而不使用交織技術(shù);在另一個(gè)實(shí)施方案中,可以使用交織技術(shù),而不使用水平和垂直流水線化技術(shù)。
圖8描繪了通過鏈?zhǔn)竭B接較小尺寸的蒙哥馬利乘法引擎,對(duì)較大的密鑰尺寸執(zhí)行模冪運(yùn)算的示例性系統(tǒng)800。系統(tǒng)800可以包括控制器810和多個(gè)MME 820(例如820A……,820M)。MME(例如820A)可以包括多個(gè)MMPE 822(例如822A,……,822N)。每個(gè)MMPE都可以完成基本運(yùn)算(例如,兩個(gè)分別包括1位或多位的操作數(shù)之間的加法或進(jìn)位保存加法)。這些MMPE可以構(gòu)成幾行,每一行包括多個(gè)MMPE,足以為蒙哥馬利乘法的一次迭代來計(jì)算基本運(yùn)算。兩個(gè)相鄰行之間的MMPE可以具有與圖5中類似的行間依存性。各行的MMPE可以在多次迭代之間反復(fù)使用。在一個(gè)實(shí)施方案中,MMPE可能不會(huì)按照?qǐng)D5中所示的類似方式來排列(例如,排列為多行),但仍然象圖5中的MMPE一樣實(shí)現(xiàn)類似的功能。
MME(例如820A)還可以包括調(diào)度器824,用于在MME內(nèi)部各組件之間調(diào)度蒙哥馬利乘法所需的操作。例如,調(diào)度器824可以將用于兩個(gè)不相關(guān)的模冪運(yùn)算的兩個(gè)蒙哥馬利乘法交織到MME中。此外,調(diào)度器824可以調(diào)度MME組件,使得執(zhí)行每個(gè)蒙哥馬利乘法的過程可以按照?qǐng)D6所示的方式在水平和垂直兩個(gè)方向上流水線化。此外,MME可以包括用于執(zhí)行完成蒙哥馬利乘法所需的其他操作的其他組件。例如,MME可以包括初始化中間結(jié)果的組件(例如,如圖4C中第2行所示設(shè)置T=0),如圖4C所示在所有迭代之前預(yù)先計(jì)算(m+y)的組件,以及在每次迭代開始前計(jì)算模數(shù)選擇指示符的組件,如此等等。
控制器可以通過連接830接受輸入?yún)?shù),并產(chǎn)生一個(gè)或多個(gè)模冪運(yùn)算的最終結(jié)果。控制器可以準(zhǔn)備并提供為完成預(yù)期的模冪運(yùn)算所必需的所有蒙哥馬利乘法的輸入?yún)?shù)。基于模冪運(yùn)算的密鑰大小,控制器可以選擇一個(gè)MME來執(zhí)行預(yù)期的蒙哥馬利乘法,如果這個(gè)MME可用的話;否則,控制器可以選擇一個(gè)以上的MME,并將它們鏈?zhǔn)竭B接在一起,以執(zhí)行預(yù)期的乘法??刂破?10可以將多個(gè)MME 820中的一些鏈?zhǔn)竭B接在一起,以對(duì)較大尺寸的操作數(shù)執(zhí)行蒙哥馬利乘法。例如,可以將兩個(gè)M位的MME鏈?zhǔn)竭B接在一起,以對(duì)2M位的操作數(shù)執(zhí)行蒙哥馬利乘法??梢詫位的MME和N位的MME鏈?zhǔn)竭B接在一起,以對(duì)(M+N)位的操作數(shù)執(zhí)行蒙哥馬利乘法。
控制器810可以協(xié)助鏈?zhǔn)竭B接的MME之間的數(shù)據(jù)流??刂破鬟€可以向每個(gè)鏈?zhǔn)竭B接的MME中的調(diào)度器發(fā)出指令,使得每個(gè)MME可以使用如圖6所描述的交織、水平流水線化和垂直流水線化技術(shù)來正確地調(diào)度較大尺寸的蒙哥馬利乘法。此外,控制器可以承擔(dān)鏈?zhǔn)竭B接的MME中的調(diào)度器的一部分功能,例如,中間結(jié)果的初始化(例如,如圖4C中第2行所示的設(shè)置T=0),如圖4C所示在所有迭代開始之前對(duì)(m+y)的預(yù)先計(jì)算,以及對(duì)迭代的輸出數(shù)據(jù)的后處理,以產(chǎn)生蒙哥馬利乘法的最終結(jié)果。此外,控制器可以控制MME來執(zhí)行為完成預(yù)期的模冪運(yùn)算所必需的所有蒙哥馬利乘法。
圖9圖示了使用單個(gè)較小尺寸的蒙哥馬利乘法引擎來調(diào)度較大尺寸操作數(shù)的蒙哥馬利乘法的過程。假設(shè)圖9中所示的MME是512位的MME,并被用來執(zhí)行1024位的蒙哥馬利乘法。該MME具有5個(gè)水平塊,按照和圖6中相似的方式構(gòu)成。為了利用MME的這5個(gè)水平塊,1024位的蒙哥馬利乘法被劃分成10個(gè)位塊第0-7位為塊1,第8-127位為塊2,第128-255位為塊3,第256-383位為塊4,第384-511位為塊5,第512-519位為塊6,第520-639位為塊7,第640-767位為塊8,第768-895位為塊9,第896-1023位為塊10。在圖9中,“P[i]-j”代表對(duì)于1024位的蒙哥馬利乘法P的塊j,在第ix8到(i+1)x8-1次迭代中所包括的操作(例如,P
-1代表對(duì)于蒙哥馬利乘法P的塊1,在迭代0到7中所包括的操作)。雖然假設(shè)在一塊的8次迭代中所包括的操作都可以在一個(gè)周期內(nèi)執(zhí)行,但是在不同的實(shí)現(xiàn)方案中,塊大小可以是不同的,迭代次數(shù)也可以是不同的。Q[i]-j具有和P[i]-j相同的意義,但它是用于一個(gè)不同的蒙哥馬利乘法Q。
從第1到第6周期,可以按照?qǐng)D6中所示的相同方式(從第1到第6周期)來調(diào)度MME。在圖9中,兩個(gè)交織的蒙哥馬利乘法P和Q被示出在單獨(dú)的兩行中,而在圖6中它們被示出在同一行中。在第7周期中,P[3]-1(第0-7位)或P
-6(第512-519位)的執(zhí)行都可以被調(diào)度用于MME的B1。在第7周期中,不去調(diào)度P[3]-1,而是調(diào)度P
-6用于MME的B1,這樣的調(diào)度使得已經(jīng)開始的操作能夠完成。在第8到第12周期中,調(diào)度P
對(duì)于不同水平塊的執(zhí)行。P
對(duì)于所有10個(gè)水平塊的執(zhí)行在第12周期結(jié)束時(shí)完成。在第13周期中,MME的B1是空的,因?yàn)樗荒鼙蝗魏萎?dāng)前正在執(zhí)行的操作所填充。因此,一組新的操作P[3]-1(第0-7位)可以被調(diào)度用于MME的B1。在第13周期結(jié)束時(shí),P[1]對(duì)于所有10個(gè)水平塊的執(zhí)行都完成。在第14周期中,P[3]對(duì)于塊2的執(zhí)行(即,P[3]-2)可以被調(diào)度用于MME的B2。同時(shí),Q[3]-1(第0-7位)的執(zhí)行可以被調(diào)度用于MME的B1。調(diào)度過程可以一直繼續(xù),直到P和Q都完成為止。
在一個(gè)實(shí)施方案中,可以調(diào)度P的不發(fā)生沖突的更高次序的比特位置(P的更高水平塊),而不是將P與不相關(guān)的蒙哥馬利乘法Q交織。這個(gè)實(shí)施方案可以實(shí)現(xiàn)低延時(shí)的MME操作。另外,雖然上面參考圖9描述了水平和垂直流水線化技術(shù)和交織技術(shù),但是這些技術(shù)不必一起用在一個(gè)實(shí)施方案中。例如,可以在一個(gè)實(shí)施方案中使用水平流水線化和/或垂直流水線化技術(shù),而不使用交織技術(shù);在另一個(gè)實(shí)施方案中,可以使用交織技術(shù),而不使用水平和垂直流水線化技術(shù)。
圖10描繪了使用單個(gè)較小尺寸的蒙哥馬利乘法引擎對(duì)較大密鑰尺寸執(zhí)行模冪運(yùn)算的示例性系統(tǒng)1000。系統(tǒng)1000可以包括控制器1010以及至少一個(gè)MME(例如1020)。MME的結(jié)構(gòu)類似于圖8中所描述的MME的結(jié)構(gòu),即MME 1020可以包括多個(gè)MMPE 1022(例如1022A,……,1022N)和調(diào)度器1024。MMPE(例如1022A)的功能類似于圖8中所描述的MMPE(例如822A)的功能;調(diào)度器1024的功能類似于圖8中所描述的調(diào)度器824的功能。
控制器1010可以通過連接1030接受輸入?yún)?shù),并產(chǎn)生一個(gè)或多個(gè)模冪運(yùn)算的最終結(jié)果??刂破骺梢詼?zhǔn)備并提供為完成預(yù)期的模冪運(yùn)算所必需的所有蒙哥馬利乘法的輸入?yún)?shù)。如果在系統(tǒng)1000中存在尺寸與預(yù)期的模冪運(yùn)算的密鑰大小相匹配的MME,則控制器可以選擇這個(gè)MME來執(zhí)行預(yù)期的蒙哥馬利乘法。如果存在多個(gè)尺寸小于密鑰大小,但是可以加在一起與密鑰大小匹配的MME,則控制器可以將這些MME鏈?zhǔn)竭B接在一起,以執(zhí)行預(yù)期的蒙哥馬利乘法。如果存在單個(gè)尺寸小于密鑰大小的MME,則控制器可以使用這單個(gè)小尺寸的MME,通過以類似于圖10中的方式調(diào)度操作來執(zhí)行預(yù)期的乘法。例如,M位的MME可被用來執(zhí)行尺寸為2M位或更少位(但在M到2M的范圍內(nèi))的蒙哥馬利乘法。控制器可以選擇一種以上的方法來并行執(zhí)行蒙哥馬利乘法。
控制器1010可以協(xié)助鏈?zhǔn)竭B接的MME之間的數(shù)據(jù)流。控制器可以向?qū)⒈挥脕韴?zhí)行較大尺寸的蒙哥馬利乘法的MME中的調(diào)度器發(fā)出指令,使得該MME可以使用如圖6所描述的交織、水平流水線化和垂直流水線化技術(shù)來正確地調(diào)度這樣的乘法。此外,控制器可以承擔(dān)這種MME中的調(diào)度器的一部分功能,例如,中間結(jié)果的初始化(例如,如圖4C中第2行所示的set T=0),如圖4C所示在所有迭代開始之前對(duì)(m+y)的預(yù)先計(jì)算,以及對(duì)迭代的輸出數(shù)據(jù)的后處理,以產(chǎn)生蒙哥馬利乘法的最終結(jié)果。此外,控制器可以控制MME來執(zhí)行為完成預(yù)期的模冪運(yùn)算所必需的所有蒙哥馬利乘法。
圖11圖示了執(zhí)行模冪運(yùn)算的示例性過程。在框1110中,可以接收用于兩個(gè)具有相同密鑰大小的模冪運(yùn)算的輸入?yún)?shù)。如果不能找到具有相同密鑰大小的兩個(gè)模冪運(yùn)算,則需要一些預(yù)處理,以使它們看上去具有相同的密鑰大小,或者僅是一個(gè)接一個(gè)地計(jì)算它們,而不進(jìn)行交織。在框1120中,可以基于預(yù)期模冪運(yùn)算的密鑰大小以及系統(tǒng)中MME的可用性來確定執(zhí)行所述模冪運(yùn)算的方法。例如,如果存在尺寸與模冪運(yùn)算的密鑰大小相匹配的MME,則可以選擇這個(gè)MME來執(zhí)行模冪運(yùn)算的蒙哥馬利乘法;否則,可以選擇多個(gè)尺寸小于密鑰大小的MME并將它們鏈?zhǔn)竭B接在一起,以執(zhí)行預(yù)期的蒙哥馬利乘法,如果這些MME可用的話;如若不然,可以選擇尺寸小于密鑰大小的單個(gè)MME來執(zhí)行預(yù)期的蒙哥馬利乘法。可以選擇一種以上的方法來并行執(zhí)行用于模冪運(yùn)算的蒙哥馬利乘法。另外,確定執(zhí)行哪種方法以及選擇哪個(gè)(些)MME也可以取決于其他因素,例如模冪運(yùn)算的優(yōu)先級(jí)以及MME之間的物理連接。例如,即使有可用的尺寸與密鑰大小匹配的MME,這個(gè)MME也可以被比預(yù)期的模冪運(yùn)算具有更高優(yōu)先級(jí)的其他模冪運(yùn)算使用。在這種情況下,可以使用一種不同于使用匹配MME的執(zhí)行方法。另外,即使有多個(gè)可用的尺寸小于密鑰大小的MME(但是沒有尺寸與密鑰大小匹配的MME),也可能缺少必要的物理連接將它們鏈?zhǔn)竭B接起來,以執(zhí)行預(yù)期的模冪運(yùn)算。在這種情況下,可以選擇單個(gè)尺寸小于密鑰大小的MME來執(zhí)行預(yù)期的操作。
在框1130中,所選擇的MME可被準(zhǔn)備來執(zhí)行預(yù)期的蒙哥馬利乘法,例如,如果所選擇的MME需要被鏈?zhǔn)竭B接在一起,那么可能需要產(chǎn)生一些連接(例如,通過交換機(jī)實(shí)現(xiàn)連接)。另外,至少可以部分地基于模冪運(yùn)算的輸入?yún)?shù)來為每個(gè)蒙哥馬利乘法準(zhǔn)備輸入數(shù)據(jù)。在框1140中,可以使用所確定的方法來執(zhí)行預(yù)期的蒙哥馬利乘法。例如,如果使用尺寸與密鑰大小匹配的MME,則可以按照?qǐng)D6中所述的類似方式來調(diào)度每個(gè)蒙哥馬利乘法。如果經(jīng)由鏈?zhǔn)竭B接使用多個(gè)尺寸小于密鑰大小的MME,則可以按照?qǐng)D7中所述的類似方式來調(diào)度每個(gè)蒙哥馬利乘法。如果使用單個(gè)尺寸小于密鑰大小的MME,則可以按照?qǐng)D9中所述的類似方式來調(diào)度每個(gè)蒙哥馬利乘法。在框1150中,可以判定為完成預(yù)期的模冪運(yùn)算所需的所有蒙哥馬利乘法是否都已結(jié)束(如圖3所示,模冪運(yùn)算需要完成多個(gè)蒙哥馬利乘法)。如果答案為“是”,則在框1160中可以獲得每個(gè)預(yù)期的模冪運(yùn)算的最終結(jié)果;否則,可以重復(fù)進(jìn)行框1150中所包括的操作,直到所有的蒙哥馬利乘法都結(jié)束。
圖12是包括基于蒙哥馬利乘法的模冪運(yùn)算模塊的網(wǎng)絡(luò)系統(tǒng)的圖。該系統(tǒng)可以包括一組通過交換結(jié)構(gòu)1210(例如,交叉開關(guān)或共享存儲(chǔ)器交換結(jié)構(gòu))互連的線卡(line card)1220(“刀片”)。各個(gè)線卡可位于相同的物理位置或不同的物理位置(例如,不同的城市)上。交換結(jié)構(gòu)例如可以遵守公共交換接口(CSIX)或其他結(jié)構(gòu)技術(shù),例如HyperTansport、Infiniband、外設(shè)部件互連(PCI)、Packet-over-SONET(同步光網(wǎng)絡(luò))、RapidIO、和/或UTOPIA(ATM通用測(cè)試和操作PHY(物理層)接口)。
各個(gè)線卡(例如1220A)可以包括一個(gè)或多個(gè)物理層(PHY)設(shè)備1222(例如,光、有線或無線PHY),用于處理網(wǎng)絡(luò)連接上的通信。PHY在不同網(wǎng)絡(luò)介質(zhì)所傳送的物理信號(hào)和數(shù)字系統(tǒng)所使用的位(例如,多個(gè)“0”和“1”)之間進(jìn)行翻譯轉(zhuǎn)換。線卡1220還可以包括成幀器設(shè)備(例如,以太網(wǎng)、同步光網(wǎng)絡(luò)(SONET)、高級(jí)數(shù)據(jù)鏈路(HDLC)成幀器或其他的“層2”設(shè)備)1224,該設(shè)備可以對(duì)幀執(zhí)行操作,例如檢錯(cuò)和/或糾錯(cuò)。示出的線卡1220還可以包括一個(gè)或多個(gè)網(wǎng)絡(luò)處理器1226,其對(duì)經(jīng)由PHY 1222接收到的包(packet)執(zhí)行包處理操作,并且經(jīng)由交換結(jié)構(gòu)1210將包送往提供用于轉(zhuǎn)發(fā)包的出口接口的線卡。潛在地,網(wǎng)絡(luò)處理器1226可以代替成幀器設(shè)備1224履行“層2”的職責(zé)。
網(wǎng)絡(luò)處理器1226可以是Interl因特網(wǎng)交換網(wǎng)絡(luò)處理器(IXP)或其他不同設(shè)計(jì)的網(wǎng)絡(luò)處理器。網(wǎng)絡(luò)處理器在單個(gè)集成電路上特有一組包處理引擎。各個(gè)引擎可以提供多個(gè)執(zhí)行線程。另外,網(wǎng)絡(luò)處理器包括一個(gè)核心處理器,它通常被編程來完成在網(wǎng)絡(luò)操作中所涉及的“控制平面”的任務(wù)。然而,核心處理器也可以處置“數(shù)據(jù)平面”的任務(wù)。網(wǎng)絡(luò)處理器1226還特有至少一個(gè)可以在處理器和其他網(wǎng)絡(luò)組件之間傳送包的接口。例如,處理器可以特有一個(gè)交換結(jié)構(gòu)接口1210,它使得處理器1226能夠向與所述結(jié)構(gòu)相連的其他處理器或電路發(fā)送包。處理器1226還可以特有一個(gè)使得處理器能夠與物理層(PHY)和/或鏈路層設(shè)備(例如MAC或成幀器設(shè)備)通信的接口。處理器1226還包括例如與主機(jī)或其他網(wǎng)絡(luò)處理器進(jìn)行通信的接口(例如,外設(shè)部件互連(PCI)總線接口)。此外,處理器1226還可以包括引擎之間共享的其他組件,例如存儲(chǔ)器控制器、哈希引擎和內(nèi)部便箋式存儲(chǔ)器。
如圖12所示,每個(gè)線卡1220可以與至少一個(gè)模冪運(yùn)算(ModExp)模塊1230(例如1230A)有效地耦合,所述模塊1230包括至少一個(gè)為模冪運(yùn)算執(zhí)行蒙哥馬利乘法的MME。交織、水平流水線化和垂直流水線化技術(shù)可被用來實(shí)現(xiàn)蒙哥馬利乘法。多個(gè)較小尺寸的MME可被鏈?zhǔn)竭B接在一起,以執(zhí)行較大密鑰尺寸的模冪運(yùn)算的蒙哥馬利乘法。單個(gè)較小尺寸的MME可被用來執(zhí)行較大密鑰尺寸的模冪運(yùn)算的蒙哥馬利乘法。在一個(gè)實(shí)施方案中,ModExp模塊可以與線卡相互分離。在另一個(gè)實(shí)施方案中,ModExp模塊可以與線卡集成在一起。另外在一個(gè)實(shí)施方案中,ModExp模塊可以是網(wǎng)絡(luò)處理器1226的一部分或PHY1222的一部分。而在另外一個(gè)實(shí)施方案中,ModExp模塊可以位于其他網(wǎng)絡(luò)層中,例如鏈路層、網(wǎng)絡(luò)層和/或應(yīng)用層。
雖然參考圖1-12描述了本發(fā)明的示例性實(shí)施方案,但是本領(lǐng)域的技術(shù)人員將容易明白,可以替換性地使用很多其他方法來實(shí)現(xiàn)本發(fā)明。例如,可以改變功能框或處理過程的執(zhí)行順序,和/或可以改變、取消或合并所描述的功能框或處理過程的一部分。
在以上描述中,已經(jīng)描述了本發(fā)明的不同方面。出于解釋的目的,闡述了特定的數(shù)量、系統(tǒng)和配置,以提供對(duì)本發(fā)明的完整理解。然而,獲知本發(fā)明的本領(lǐng)域的技術(shù)人員將會(huì)清楚,沒有這些具體的細(xì)節(jié)也可以實(shí)現(xiàn)本發(fā)明。此外,為了不使本發(fā)明變得模糊,省略、簡(jiǎn)化、合并或分離了公知的特征、組件或模塊。
這里所描述的本發(fā)明的實(shí)施方案可以用電路來實(shí)現(xiàn),包括硬連線電路、數(shù)字電路、模擬電路、可編程電路等。它們也可以用計(jì)算機(jī)程序來實(shí)現(xiàn)。這些計(jì)算機(jī)程序可以用高級(jí)程序性語言或面向?qū)ο蟮木幊陶Z言來編寫。然而,如果需要的話,也可以用匯編語言或機(jī)器語言來實(shí)現(xiàn)這些程序。語言可以被編譯或解譯。另外,這些技術(shù)可以用在寬廣的連網(wǎng)環(huán)境中。這樣的計(jì)算機(jī)程序可以被存儲(chǔ)在通用或?qū)S每删幊烫幚硐到y(tǒng)可讀的存儲(chǔ)介質(zhì)或設(shè)備(例如硬盤驅(qū)動(dòng)器、軟件驅(qū)動(dòng)器、只讀存儲(chǔ)器(ROM)、CD-ROM設(shè)備、閃存器件、數(shù)字通用盤(DVD)或其他存儲(chǔ)設(shè)備)上,用于當(dāng)所述存儲(chǔ)介質(zhì)或設(shè)備由處理系統(tǒng)讀取時(shí),配置并運(yùn)行該處理系統(tǒng)來執(zhí)行這里所描述的過程。本發(fā)明的實(shí)施方案還可以被實(shí)現(xiàn)為機(jī)器可讀存儲(chǔ)介質(zhì),配置來與處理系統(tǒng)一起使用,其中存儲(chǔ)介質(zhì)被配置為使得處理系統(tǒng)以專門的和預(yù)定的方式來運(yùn)行,以實(shí)現(xiàn)這里所描述的功能。
雖然已參考所圖示的實(shí)施方案描述了本發(fā)明,但是這一描述不想被理解為限制性的。本發(fā)明所屬領(lǐng)域的技術(shù)人員清楚的對(duì)圖示實(shí)施方案的各種修改以及本發(fā)明的其他實(shí)施方案都被視為落入本發(fā)明的精神和范圍內(nèi)。
權(quán)利要求
1.一種用于執(zhí)行模冪運(yùn)算的裝置,包括至少一個(gè)執(zhí)行蒙哥馬利乘法以完成模冪運(yùn)算的蒙哥馬利乘法引擎(MME),所述模冪運(yùn)算的尺寸由該模冪運(yùn)算的模數(shù)中的位數(shù)來確定;以及至少部分基于所述模冪運(yùn)算的尺寸以及在所述至少一個(gè)MME當(dāng)中的可用MME的尺寸,確定用于執(zhí)行所述模冪運(yùn)算的蒙哥馬利乘法的方法的控制器。
2.如權(quán)利要求1所述的裝置,其中MME的尺寸是該MME被設(shè)計(jì)來支持的模冪運(yùn)算的最大尺寸。
3.如權(quán)利要求1所述的裝置,其中所述方法包括至少以下之一使用尺寸與所述模冪運(yùn)算的尺寸相匹配的MME來執(zhí)行所述蒙哥馬利乘法;將尺寸小于所述模冪運(yùn)算的尺寸的多個(gè)MME鏈?zhǔn)竭B接起來,以執(zhí)行所述蒙哥馬利乘法;以及使用尺寸小于所述模冪運(yùn)算的尺寸的單個(gè)MME來執(zhí)行所述蒙哥馬利乘法。
4.如權(quán)利要求1所述的裝置,其中所述控制器進(jìn)一步根據(jù)所確定的方法,從所述至少一個(gè)MME中選擇至少一個(gè)或多個(gè)MME來執(zhí)行所述蒙哥馬利乘法。
5.如權(quán)利要求1所述的裝置,其中所述控制器能夠?qū)⒕哂兄辽僖粋€(gè)第一尺寸的多個(gè)MME鏈?zhǔn)竭B接起來,以執(zhí)行具有第二尺寸的模冪運(yùn)算的蒙哥馬利乘法,其中所述第二尺寸大于所述至少一個(gè)第一尺寸。
6.如權(quán)利要求1所述的裝置,其中所述控制器能夠控制單個(gè)具有第一尺寸的MME來執(zhí)行具有第二尺寸的模冪運(yùn)算的蒙哥馬利乘法,其中所述第二尺寸大于所述第一尺寸。
7.如權(quán)利要求1所述的裝置,其中所述控制器接受用于模冪運(yùn)算的輸入?yún)?shù),至少部分基于所述輸入?yún)?shù)來準(zhǔn)備輸入數(shù)據(jù)給所述至少一個(gè)MME,并且基于從所述至少一個(gè)MME處獲得的結(jié)果而產(chǎn)生所述模冪運(yùn)算的最終結(jié)果。
8.如權(quán)利要求1所述的裝置,其中所述至少一個(gè)MME包括多個(gè)用于執(zhí)行至少一個(gè)蒙哥馬利乘法的基本操作的蒙哥馬利乘法處理單元(即MMPE),基本操作包括加法;以及調(diào)度所述多個(gè)MMPE來流水線化執(zhí)行所述基本操作的過程的調(diào)度器。
9.如權(quán)利要求8所述的裝置,其中所述調(diào)度器通過與所述控制器協(xié)作,為蒙哥馬利乘法而調(diào)度所述多個(gè)MMPE在水平和垂直兩個(gè)方向上流水線化執(zhí)行所述基本操作的過程,所述蒙哥馬利乘法包括多次具有N個(gè)基本操作的迭代,其中N是正整數(shù)。
10.如權(quán)利要求9所述的裝置,其中所述調(diào)度器進(jìn)一步通過與所述控制器協(xié)作,調(diào)度所述多個(gè)MMPE來交織執(zhí)行用于兩個(gè)獨(dú)立蒙哥馬利乘法的基本操作的過程。
11.如權(quán)利要求9所述的裝置,其中所述水平流水線化操作包括將一次迭代內(nèi)的N個(gè)基本操作分組到多個(gè)水平塊中,并且流水線化在所述多個(gè)水平塊中所包括的操作。
12.如權(quán)利要求9所述的裝置,其中所述垂直流水線化操作包括在多次迭代之間流水線化N個(gè)基本操作。
13.一種用于執(zhí)行模冪運(yùn)算的方法,包括接收用于至少一個(gè)模冪運(yùn)算的輸入?yún)?shù);至少部分基于所述至少一個(gè)模冪運(yùn)算的尺寸,確定用于執(zhí)行蒙哥馬利乘法以完成所述至少一個(gè)模冪運(yùn)算的方法;基于所確定的方法,使用至少一個(gè)蒙哥馬利乘法引擎(MME),來執(zhí)行所述蒙哥馬利乘法;以及基于來自所述至少一個(gè)MME的輸出數(shù)據(jù),產(chǎn)生所述至少一個(gè)模冪運(yùn)算的結(jié)果。
14.如權(quán)利要求13所述的方法,其中模冪運(yùn)算的尺寸由該模冪運(yùn)算的模數(shù)中的位數(shù)來確定。
15.如權(quán)利要求13所述的方法,其中確定用于執(zhí)行蒙哥馬利乘法的方法的步驟包括將所述至少一個(gè)模冪運(yùn)算的尺寸與可用的MME的尺寸進(jìn)行比較,MME的尺寸是該MME被設(shè)計(jì)來支持的模冪運(yùn)算的最大尺寸。
16.如權(quán)利要求13所述的方法,其中用于執(zhí)行蒙哥馬利乘法的方法包括至少以下之一使用尺寸與所述模冪運(yùn)算的尺寸相匹配的MME來執(zhí)行所述蒙哥馬利乘法;將尺寸小于所述模冪運(yùn)算的尺寸的多個(gè)MME鏈?zhǔn)竭B接起來,以執(zhí)行所述蒙哥馬利乘法;以及使用尺寸小于所述模冪運(yùn)算的尺寸的單個(gè)MME來執(zhí)行所述蒙哥馬利乘法。
17.如權(quán)利要求13所述的方法,還包括基于所確定的方法,選擇至少一個(gè)蒙哥馬利乘法引擎,即MME來執(zhí)行所述蒙哥馬利乘法。
18.如權(quán)利要求13所述的方法,其中執(zhí)行所述蒙哥馬利乘法的步驟包括將尺寸小于所述至少一個(gè)模冪運(yùn)算的尺寸的多個(gè)MME鏈?zhǔn)竭B接起來;以及使用鏈?zhǔn)竭B接的MME來執(zhí)行所述蒙哥馬利乘法。
19.如權(quán)利要求13所述的方法,其中執(zhí)行所述蒙哥馬利乘法的步驟包括使用尺寸小于所述至少一個(gè)模冪運(yùn)算的尺寸的單個(gè)MME來執(zhí)行所述蒙哥馬利乘法。
20.如權(quán)利要求13所述的方法,還包括至少部分基于所接收的輸入?yún)?shù),為所述至少一個(gè)MME準(zhǔn)備輸入數(shù)據(jù)。
21.如權(quán)利要求13所述的方法,其中執(zhí)行所述蒙哥馬利乘法的步驟包括通過所述至少一個(gè)MME交織兩個(gè)獨(dú)立的模冪運(yùn)算。
22.如權(quán)利要求13所述的方法,其中執(zhí)行所述蒙哥馬利乘法的步驟包括執(zhí)行用于每個(gè)蒙哥馬利乘法的基本操作,蒙哥馬利乘法包括多次具有N個(gè)基本操作的迭代,其中N是正整數(shù),并且基本操作包括加法;以及在水平和垂直兩個(gè)方向上流水線化所述基本操作。
23.如權(quán)利要求22所述的方法,其中所述水平流水線化操作包括將一次迭代內(nèi)的N個(gè)基本操作分組到多個(gè)水平塊中,并且流水線化在所述多個(gè)水平塊中所包括的操作。
24.如權(quán)利要求22所述的方法,其中所述垂直流水線化操作包括在多次迭代之間流水線化N個(gè)基本操作。
25.一種網(wǎng)絡(luò)系統(tǒng),包括交換結(jié)構(gòu);多個(gè)通過所述交換結(jié)構(gòu)互連的線卡;和多個(gè)模冪運(yùn)算模塊,每個(gè)模塊可操作地與線卡耦合,用以執(zhí)行模冪運(yùn)算,模冪運(yùn)算模塊包括至少一個(gè)執(zhí)行蒙哥馬利乘法以完成模冪運(yùn)算的蒙哥馬利乘法引擎(MME),所述模冪運(yùn)算的尺寸由該模冪運(yùn)算的模數(shù)中的位數(shù)來確定;和至少部分基于所述模冪運(yùn)算的尺寸以及在所述至少一個(gè)MME當(dāng)中的可用MME的尺寸,確定用于執(zhí)行所述模冪運(yùn)算的蒙哥馬利乘法的方法的控制器,MME的尺寸是該MME被設(shè)計(jì)來支持的模冪運(yùn)算的最大尺寸。
26.如權(quán)利要求25所述的網(wǎng)絡(luò)系統(tǒng),其中用于執(zhí)行所述蒙哥馬利乘法的方法包括至少以下之一使用尺寸與所述模冪運(yùn)算的尺寸相匹配的MME來執(zhí)行所述蒙哥馬利乘法;將尺寸小于所述模冪運(yùn)算的尺寸的多個(gè)MME鏈?zhǔn)竭B接起來,以執(zhí)行所述蒙哥馬利乘法;以及使用尺寸小于所述模冪運(yùn)算的尺寸的單個(gè)MME來執(zhí)行所述蒙哥馬利乘法。
27.如權(quán)利要求25所述的網(wǎng)絡(luò)系統(tǒng),其中所述控制器進(jìn)一步根據(jù)所確定的方法,從所述至少一個(gè)MME中選擇至少一個(gè)或多個(gè)MME來執(zhí)行所述蒙哥馬利乘法。
28.如權(quán)利要求25所述的網(wǎng)絡(luò)系統(tǒng),其中所述控制器能夠?qū)⒕哂兄辽僖粋€(gè)第一尺寸的多個(gè)MME鏈?zhǔn)竭B接起來,以執(zhí)行具有第二尺寸的模冪運(yùn)算的蒙哥馬利乘法,其中所述第二尺寸大于所述至少一個(gè)第一尺寸。
29.如權(quán)利要求25所述的網(wǎng)絡(luò)系統(tǒng),其中所述控制器能夠控制單個(gè)具有第一尺寸的MME來執(zhí)行具有第二尺寸的模冪運(yùn)算的蒙哥馬利乘法,其中所述第二尺寸大于所述第一尺寸。
30.如權(quán)利要求25所述的網(wǎng)絡(luò)系統(tǒng),其中所述至少一個(gè)MME包括多個(gè)用于執(zhí)行至少一個(gè)蒙哥馬利乘法的基本操作的蒙哥馬利乘法處理單元(即MMPE),基本操作包括加法;以及調(diào)度所述多個(gè)MMPE來流水線化執(zhí)行所述基本操作的過程的調(diào)度器。
31.如權(quán)利要求30所述的網(wǎng)絡(luò)系統(tǒng),其中所述調(diào)度器通過與所述控制器協(xié)作,為蒙哥馬利乘法而調(diào)度所述多個(gè)MMPE在水平和垂直兩個(gè)方向上流水線化執(zhí)行所述基本操作的過程。
32.如權(quán)利要求30所述的網(wǎng)絡(luò)系統(tǒng),其中所述調(diào)度器進(jìn)一步通過與所述控制器協(xié)作,調(diào)度所述多個(gè)MMPE來交織執(zhí)行用于兩個(gè)獨(dú)立蒙哥馬利乘法的基本操作的過程。
全文摘要
提供了一種用于執(zhí)行模冪運(yùn)算的方式??梢酝ㄟ^使用多個(gè)蒙哥馬利乘法來完成模冪運(yùn)算。蒙哥馬利乘法包括多次迭代的基本操作(例如,進(jìn)位保存加法),并由蒙哥馬利乘法引擎(MME)來執(zhí)行。多個(gè)較小尺寸的MME可以被鏈?zhǔn)竭B接在一起,以執(zhí)行較大尺寸的模冪運(yùn)算。另外,單個(gè)較小尺寸的MME可被調(diào)度來執(zhí)行較大尺寸的模冪運(yùn)算。此外,執(zhí)行蒙哥馬利乘法的過程可以在水平和垂直兩個(gè)方向上流水線化。此外,執(zhí)行兩個(gè)蒙哥馬利乘法的過程可以被交織在一起,并由同一個(gè)MME或鏈?zhǔn)竭B接的MME來執(zhí)行。
文檔編號(hào)G06F7/72GK1750460SQ20051010299
公開日2006年3月22日 申請(qǐng)日期2005年9月16日 優(yōu)先權(quán)日2004年9月16日
發(fā)明者卡馬爾·科沙爾, 吉爾伯特·沃爾里奇, 雅羅斯勞·西迪爾, 瓦吉迪·費(fèi)格哈利 申請(qǐng)人:英特爾公司