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