專利名稱:基于改進(jìn)的蒙哥馬利算法的模乘器的制作方法
技術(shù)領(lǐng)域:
迅速發(fā)展的電子商務(wù)、保密通訊等應(yīng)用對(duì)開(kāi)放網(wǎng)路上的信息安全提出了更高的要求,于是RSA、ECC的等公開(kāi)密鑰密碼體制,被廣泛用于密鑰傳遞和數(shù)字簽名。RSA和素?cái)?shù)域ECC的核心操作都是模乘冪運(yùn)算,而且為了保證一定程度的安全性,RSA模數(shù)和指數(shù)的位長(zhǎng)需要達(dá)到1024位以上,ECC模數(shù)和指數(shù)的位長(zhǎng)也需要達(dá)到233位以上。但是這種規(guī)模的大數(shù)模乘運(yùn)算用軟件實(shí)現(xiàn)效率是很低的,會(huì)占用大量的系統(tǒng)資源,因此各種大數(shù)模冪乘的硬件應(yīng)運(yùn)而生。本設(shè)計(jì)中的模乘器VLSI結(jié)構(gòu)正是屬于此類的加/解密技術(shù)領(lǐng)域。
背景技術(shù):
應(yīng)用最廣泛的模乘法算法是蒙哥馬利算法,它的核心思想是將通常的取模運(yùn)算中的比較和減法轉(zhuǎn)化為乘法和加法。
1.Montgomery原始算法Montgomery算法表示為Mon_pro(A,B)=ABR-1mod N,其具體算法是Function Mon_pro(A,B)T←A*Bu←-T*N-1(mod R)x←(T+u*N)/RIf x≥N return x←x-NElse return x其中N為模數(shù),R與N互質(zhì)R=2n,n是N的位數(shù)。N-1和R-1分別滿足NN-1mod R=1和RR-1mod N=1。值得注意的是N-1和R-1是事先預(yù)計(jì)算得到的,只有更新模數(shù)的時(shí)候才需要計(jì)算一次;另外由于R=2n,模R或除R的操作就分別為取低位和取高位的簡(jiǎn)單操作。
由此可見(jiàn)Montgomey算法對(duì)A、B的積T取模時(shí)只用了2次普通的乘法操作。而一般的比較相減的取模方法需要n次減法。而且出于安全的需要n通常很大,本設(shè)計(jì)中n=233,這樣Montgomery算法的大大降低了運(yùn)算的次數(shù)也就降低了運(yùn)算所需的時(shí)鐘數(shù)。
另外一個(gè)問(wèn)題是原始的Montgomery算法中包含的乘法和加法運(yùn)算全部是大數(shù)運(yùn)算,VLSI實(shí)現(xiàn)時(shí)硬件的代價(jià)很大,而且由于進(jìn)位鏈太長(zhǎng),關(guān)鍵路徑延時(shí)很大,制約了系統(tǒng)的時(shí)鐘頻率。脈動(dòng)陣列結(jié)構(gòu)是解決長(zhǎng)進(jìn)位鏈問(wèn)題的策略之一,但該類策略的缺點(diǎn)在于計(jì)算周期多且VLSI實(shí)現(xiàn)面積大而下文所述的改進(jìn)算法通過(guò)將可以有效的解決這個(gè)問(wèn)題。
2.Montgomery改進(jìn)算法本設(shè)計(jì)采用的Montgomery改進(jìn)算法具體計(jì)算步驟如下n位的2進(jìn)制A也可以理解為s位的r進(jìn)制數(shù),即A=(as-1as-2…a1a0),其中ai為r進(jìn)制數(shù),同理B也可以理解為s位的r進(jìn)制數(shù),即B=(bs-1bs-2…b1b0),其中bi為r進(jìn)制數(shù)、N也可以理解為s位的r進(jìn)制數(shù),即N=(ns-1ns-2…n1n0),其中bi為r進(jìn)制數(shù)。n’0為只與N有關(guān)常數(shù)且滿足n0n0’mod r=1。
算法分為3個(gè)步驟第一步計(jì)算中間結(jié)果mi1 for i=0 to s-11.1 for j=0 to i-1S=S+ajbi-j+mjni-j,1.2 Mi=Sn’0mod r,1.3 S=S+min0,1.4 S=S/r,第二步計(jì)算最終結(jié)果存于mi2 for i=s to 2s-12.1 for j=i-s+1 to s-1S=S+ajbi-j+mjni-j,2.2 mi-s=S mod r,2.3 S=S/r,第三步調(diào)整結(jié)果到區(qū)間
令M=(ms-1ms-2…m1m0),若M≥N則輸出M-N,否則輸出M可以看出,改進(jìn)的算法中,位數(shù)很長(zhǎng)的大數(shù)被分解為相對(duì)較小的數(shù)來(lái)分別進(jìn)行計(jì)算,改善了由大數(shù)的加法和乘法進(jìn)位鏈過(guò)長(zhǎng)的問(wèn)題。本設(shè)計(jì)綜合考慮了時(shí)鐘頻率和所需的總時(shí)鐘數(shù)兩方面的因素后,S定為4,相應(yīng)的r=264。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種時(shí)間周期少、流水線連續(xù)、速度快、面積小的基于改進(jìn)的Montgomery算法的模乘器。
本發(fā)明特征在于,該模乘器是一種在外部狀態(tài)機(jī)的控制下對(duì)輸入數(shù)據(jù)按改進(jìn)的Montgomery算法操作的,位長(zhǎng)233位的模乘器,該算法把位長(zhǎng)很長(zhǎng)的大數(shù)分解為相對(duì)較小的數(shù)來(lái)分別進(jìn)行計(jì)算,即把n位2進(jìn)制的被乘數(shù)A視為s位的r進(jìn)制數(shù),表示為A=as-1as-2…a1a0,ai為r進(jìn)制數(shù),把n位2進(jìn)制的乘數(shù)B視為s位的r進(jìn)制數(shù),表示為B=bs-1bs-2…b1b0,bi為r進(jìn)制數(shù),把n位2進(jìn)制的模N視為s位的r進(jìn)制數(shù),表示為N=ns-1ns-2…n1n0,ni為r進(jìn)制數(shù),其中s=4,r=264,i=0,1,2,3,所述基于改進(jìn)的Montgomery算法的模乘器含有輸入單元、中間單元、預(yù)計(jì)算單元、輸出單元和一個(gè)多路選擇器,其中輸入單元,含有第一采用7級(jí)流水的64位乘法器,輸入數(shù)據(jù)為a和b;第二采用7級(jí)流水的64位乘法器,輸入數(shù)據(jù)為n和中間結(jié)果m;第一128位寄存器,該寄存器的輸入端與所述的第一采用7級(jí)流水的64位乘法器的輸出端相連;第二128位寄存器,該寄存器的輸入端與所述的第二采用7級(jí)流水的64位乘法器的輸出端相連;中間單元,含有一個(gè)128位加法器,該加法器的兩個(gè)輸入端分別與所述第一128位寄存器和第二128位寄存器的輸出端相連;一個(gè)129位寄存器,該寄存器的輸入端與所述128位加法器的輸出端相連;預(yù)計(jì)算單元,含有133位加法器I、133位加法器II、133位加法器III,所述各133位加法器的一個(gè)輸入端分別和所述129位寄存器的輸出端相連;133位寄存器I、133位寄存器II、133位寄存器III,所述各133位寄存器的輸入端分別依次與所對(duì)應(yīng)133位加法器的輸出端相連,所述各133位寄存器的輸出端分別依次與所述個(gè)133位加法器的另一個(gè)輸入端相連,
多路選擇器,該選擇器的各輸入端分別同時(shí)與所述個(gè)133位寄存器的輸出端相連;輸出單元,含有一個(gè)133位加法器IV,該加法器IV的兩個(gè)輸入端分別于所述多路選擇器、129位寄存器的輸出端相連;一個(gè)133位寄存器IV,該寄存器IV的輸入端與所述133位加法器的輸出端相連,該寄存器的輸出端在輸出數(shù)據(jù)的同時(shí)又與所述第二采用7級(jí)流水的64位乘法器的輸入中間結(jié)果m用的輸入端相連;在外部狀態(tài)機(jī)的控制下,在i=0的循環(huán)內(nèi),所述第一采用7級(jí)流水的64位乘法器被依次按以下步驟輸入數(shù)據(jù)在第一次等待計(jì)算結(jié)果S=a0b0的時(shí)鐘周期內(nèi),被提前輸入i=1時(shí)循環(huán)內(nèi)用的與前一級(jí)運(yùn)算結(jié)果無(wú)關(guān)的包括a0、b1、a1、b0在內(nèi)的數(shù)據(jù),產(chǎn)生相應(yīng)的部分積a0b1、a1b0,在外部狀態(tài)機(jī)的控制下送入所述預(yù)計(jì)算單元累加并寄存在寄存器I中;在第二次等待計(jì)算結(jié)果m1=sn’0時(shí)鐘周期內(nèi),被提前輸入i=2時(shí)的循環(huán)內(nèi)的數(shù)據(jù)a0、b2、a1、b1、a2、b0,產(chǎn)生相應(yīng)的部分積a0b2、a1b1、a2b0,在外部狀態(tài)機(jī)的控制下送入預(yù)計(jì)算單元累加并寄存在寄存器II中,n’0為只與N有關(guān)常數(shù)且滿足n0n0′mod r=1;在第三次等待計(jì)算結(jié)果m1n0時(shí)鐘周期內(nèi),被提前輸入i=2時(shí)的循環(huán)內(nèi)的數(shù)據(jù)a0、b3、a1、b2、a2、b1、a3、b0,產(chǎn)生相應(yīng)的部分積a0b3、a1b2、a2b1、a3b0,在外部狀態(tài)機(jī)的控制下送入預(yù)計(jì)算單元累加并寄存在寄存器III中;在所述外部狀態(tài)機(jī)的控制下,在i=1、i=2、i=3的循環(huán)內(nèi),同樣按i=0循環(huán)內(nèi)所屬的步驟依次進(jìn)行;所述的129位寄存器和多路選擇器,按照i=0,1,2,3各個(gè)不同的循環(huán)周期,把所寄存的各相應(yīng)數(shù)據(jù)送往所述133位加法器IV累加后送往所述133位寄存器IV寄存,該寄存器IV把中間結(jié)果m送往第二采用7級(jí)流水的64位加法器,直到所有各循環(huán)結(jié)束,輸出最終運(yùn)算結(jié)果,以上所述的基于改進(jìn)的Montgomery模乘器是在數(shù)字集成電路上實(shí)現(xiàn)的。
本設(shè)計(jì)用Verilog進(jìn)行行為級(jí)、RTL級(jí)編碼和功能仿真,驗(yàn)證系統(tǒng)功能的正確性?;赟MIC 0.18微米工藝庫(kù)完成邏輯綜合(DC),并提取門延時(shí)信息,進(jìn)行門級(jí)仿真驗(yàn)證,確保功能正確性和時(shí)序上的準(zhǔn)確性。最終,本摸乘器關(guān)鍵路徑時(shí)延約3.8ns,考慮到布局布線階段可能引入的連線延時(shí)和I/O pin等因素,整個(gè)芯片時(shí)鐘典型頻率可以達(dá)到200MHz,面積約2mm2,完成一次摸乘需要108個(gè)時(shí)鐘周期。
圖1.本發(fā)明所述模乘器的電路框圖。
具體實(shí)施例方式
本設(shè)計(jì)的模乘器電路機(jī)構(gòu)如圖1所示,是用ASIC芯片實(shí)現(xiàn)的。
整個(gè)數(shù)據(jù)通路由輸入單元、中間單元、預(yù)計(jì)算單元、輸出單元和多路選擇器五個(gè)單元構(gòu)成。輸入單元包括a、b、n三個(gè)輸入端口和兩個(gè)64位乘法器;中間單元包括一個(gè)128位的加法器和一個(gè)129位寄存器;預(yù)計(jì)算單元由加法器I、加法器II、加法器III和寄存器I、寄存器II、寄存器III構(gòu)成;輸出單元由加法器IV和寄存器IV構(gòu)成。
本設(shè)計(jì)的一個(gè)特點(diǎn)在于盡管模乘器的操作數(shù)已經(jīng)被分解為位長(zhǎng)相對(duì)較短的64位數(shù),但64位的乘法器的時(shí)延還是比較大的,在0.18um的工藝下仍達(dá)到20ns以上,限制了系統(tǒng)的時(shí)鐘頻率。因此本設(shè)計(jì)采用了7級(jí)流水線結(jié)構(gòu)的乘法器以縮短其關(guān)鍵路徑的時(shí)延到4ns以內(nèi)。本設(shè)計(jì)的另一個(gè)特點(diǎn)是具有獨(dú)特的預(yù)計(jì)算單元雖然流水線結(jié)構(gòu)可以提高系統(tǒng)的時(shí)鐘頻率,但是Montgomery算法本身的特點(diǎn)會(huì)造成流水線的停頓,導(dǎo)致效率系統(tǒng)下降,實(shí)際的運(yùn)算速度變慢。根據(jù)這個(gè)問(wèn)題,我們提出了預(yù)計(jì)算單元,在相關(guān)數(shù)據(jù)未就緒導(dǎo)致流水線停頓時(shí)提前計(jì)算其他數(shù)據(jù),提高了流水線乘法器的利用率,使問(wèn)題得到有效地緩解。
現(xiàn)在我們具體分析一下上述數(shù)據(jù)通路在執(zhí)行2.4中Montgomery算法時(shí),流水線停頓是怎么發(fā)生的,預(yù)計(jì)算單元又是如何解決該問(wèn)題的以第一步為例,i=0時(shí),我們需要產(chǎn)生部分積a0b0、m0n0并累加;i=1時(shí),我們需要產(chǎn)生部分積a0b1、m0n1、a1b0、m1n0并累加;i=2時(shí),我們需要產(chǎn)生部分積a0b2、m0n2、a1b1、m1n1、a2b0、m2n0并累加;i=3時(shí),我們需要產(chǎn)生部分積a0b3、m0n3、a1b2、m1n2、a2b1、m2n1、a3b0、m3n0并累加。
其中ai、bi、ni都是輸入數(shù)據(jù),隨時(shí)能進(jìn)入乘法器用以生成相應(yīng)的部分積,不會(huì)引起流水線的停頓,而mi為中間運(yùn)算的結(jié)果,如果其在計(jì)算的過(guò)程當(dāng)中時(shí)被乘法器調(diào)用就會(huì)導(dǎo)致流水線輸入數(shù)據(jù)的中斷。如在i=0的循環(huán)中,a0、b0進(jìn)入乘法器計(jì)算部分積a0b0,此時(shí)應(yīng)同時(shí)輸入m0和n0,但m0是S(即部分積a0b0)乘n’0得到的,顯然此時(shí)還沒(méi)有就緒。不難看出在i=0的循環(huán)中,流水線乘法器停頓了三次,第一次等待S=a0*b0的計(jì)算;第二次是等待m1=S*n’0的計(jì)算;第三次是等待m1*n0的計(jì)算,每一次等待7個(gè)時(shí)鐘周期(流水線深度)。可見(jiàn)普通的沒(méi)有預(yù)計(jì)算單元的數(shù)據(jù)通路在i=0的循環(huán)內(nèi)會(huì)浪費(fèi)21個(gè)時(shí)鐘周期。實(shí)際上這樣的浪費(fèi)不止發(fā)生在i=0的循環(huán)內(nèi),而是發(fā)生在每一個(gè)循環(huán)內(nèi),所以光第一步的4個(gè)循環(huán)就要浪費(fèi)84個(gè)時(shí)鐘周期。
為了解決這個(gè)問(wèn)題,更高效地利用流水線乘法器,節(jié)省時(shí)鐘周期的開(kāi)銷,我們?cè)诘谝淮蔚却龝r(shí)提前將i=1時(shí)的循環(huán)內(nèi)與前一級(jí)運(yùn)算結(jié)果無(wú)關(guān)的數(shù)據(jù),包括a0、b1、a1、b0等送入乘法器,產(chǎn)生相應(yīng)的部分積在狀態(tài)機(jī)的控制下進(jìn)入預(yù)計(jì)算單元累加并寄存在寄存器I中;在第二次等待時(shí)將i=2時(shí)的循環(huán)內(nèi)的數(shù)據(jù)a0、b2、a1、b1、a2、b0送入乘法器,產(chǎn)生相應(yīng)的部分積送入預(yù)計(jì)算單元累加并寄存在寄存器II中;同理在第三次等待時(shí)將i=3時(shí)的循環(huán)內(nèi)的數(shù)據(jù)a0、b3、m0、n3、a1、b2、a2、b1、a3、b0送入乘法器,產(chǎn)生相應(yīng)的部分積送入預(yù)計(jì)算單元累加并寄存在寄存器III中。當(dāng)算法真正進(jìn)入i=1、i=2或i=3循環(huán)體時(shí),寄存器I、寄存器II、寄存器III中的部分積可以直接送入輸出單元進(jìn)行累加而不必臨時(shí)計(jì)算。當(dāng)然,在i=1、i=2或i=3循環(huán)中,也會(huì)遇到流水線停頓的情況,此時(shí)就可以預(yù)先計(jì)算步驟2中各個(gè)循環(huán)中的數(shù)據(jù),以此類推。
這種機(jī)制的核心在于不讓流水線乘法器停頓下來(lái),而是不斷地使后續(xù)循環(huán)中的不相關(guān)數(shù)據(jù)進(jìn)入乘法器,提前計(jì)算以后將用到的部分積送到預(yù)計(jì)算單元累加然后寄存起來(lái),在需要的時(shí)候就可以將寄存的數(shù)據(jù)直接送到輸出單元的加法器中進(jìn)行累加,從而節(jié)約了大量的時(shí)鐘周期。
權(quán)利要求
1.基于改進(jìn)的蒙哥馬利算法的模乘器,其特征在于,該模乘器是一種在外部狀態(tài)機(jī)的控制下對(duì)輸入數(shù)據(jù)按改進(jìn)的蒙哥馬利算法操作的,位長(zhǎng)233位的模乘器,該算法把位長(zhǎng)很長(zhǎng)的大數(shù)分解為相對(duì)較小的數(shù)來(lái)分別進(jìn)行計(jì)算,即把n位2進(jìn)制的被乘數(shù)A視為s位的r進(jìn)制數(shù),表示為A=as-1as-2…a1a0,ai為r進(jìn)制數(shù),把n位2進(jìn)制的乘數(shù)B視為s位的r進(jìn)制數(shù),表示為B=bs-1bs-2…b1b0,bi為r進(jìn)制數(shù),把n位2進(jìn)制的模N視為s位的r進(jìn)制數(shù),表示為N=ns-1ns-2…n1n0,ni為r進(jìn)制數(shù),其中s=4,r=264,i=0,1,2,3,所述基于改進(jìn)的蒙哥馬利算法的模乘器含有輸入單元、中間單元、預(yù)計(jì)算單元、輸出單元和一個(gè)多路選擇器,其中輸入單元,含有第一采用7級(jí)流水的64位乘法器,輸入數(shù)據(jù)為a和b;第二采用7級(jí)流水的64位乘法器,輸入數(shù)據(jù)為n和中間結(jié)果m第一128位寄存器,該寄存器的輸入端與所述的第一采用7級(jí)流水的64位乘法器的輸出端相連;第二128位寄存器,該寄存器的輸入端與所述的第二采用7級(jí)流水的64位乘法器的輸出端相連;中間單元,含有一個(gè)128位加法器,該加法器的兩個(gè)輸入端分別與所述第一128位寄存器和第二128位寄存器的輸出端相連;一個(gè)129位寄存器,該寄存器的輸入端與所述128位加法器的輸出端相連;預(yù)計(jì)算單元,含有133位加法器I、133位加法器II、133位加法器III,所述各133位加法器的一個(gè)輸入端分別和所述129位寄存器的輸出端相連;133位寄存器I、133位寄存器II、133位寄存器III,所述各133位寄存器的輸入端分別依次與所對(duì)應(yīng)133位加法器的輸出端相連,所述各133位寄存器的輸出端分別依次與所述個(gè)133位加法器的另一個(gè)輸入端相連,多路選擇器,該選擇器的各輸入端分別同時(shí)與所述個(gè)133位寄存器的輸出端相連;輸出單元,含有一個(gè)133位加法器IV,該加法器IV的兩個(gè)輸入端分別于所述多路選擇器、129位寄存器的輸出端相連;一個(gè)133位寄存器IV,該寄存器IV的輸入端與所述133位加法器的輸出端相連,該寄存器的輸出端在輸出數(shù)據(jù)的同時(shí)又與所述第二采用7級(jí)流水的64位乘法器的輸入中間結(jié)果m用的輸入端相連;在外部狀態(tài)機(jī)的控制下,在i=0的循環(huán)內(nèi),所述第一采用7級(jí)流水的64位乘法器被依次按以下步驟輸入數(shù)據(jù)在第一次等待計(jì)算結(jié)果S=a0b0的時(shí)鐘周期內(nèi),被提前輸入i=1時(shí)循環(huán)內(nèi)用的與前一級(jí)運(yùn)算結(jié)果無(wú)關(guān)的包括a0、b1、a1、b0在內(nèi)的數(shù)據(jù),產(chǎn)生相應(yīng)的部分積a0b1、a1b0,在外部狀態(tài)機(jī)的控制下送入所述預(yù)計(jì)算單元累加并寄存在寄存器I中;在第二次等待計(jì)算結(jié)果m1=sn’0時(shí)鐘周期內(nèi),被提前輸入i=2時(shí)的循環(huán)內(nèi)的數(shù)據(jù)a0、b2、a1、b1、a2、b0,產(chǎn)生相應(yīng)的部分積a0b2、a1b1、a2b0,在外部狀態(tài)機(jī)的控制下送入預(yù)計(jì)算單元累加并寄存在寄存器II中,n’0為只與N有關(guān)常數(shù)且滿足n0n0’modr=1;在第三次等待計(jì)算結(jié)果m1n0時(shí)鐘周期內(nèi),被提前輸入i=2時(shí)的循環(huán)內(nèi)的數(shù)據(jù)a0、b3、a1、b2、a2、b1、a3、b0,產(chǎn)生相應(yīng)的部分積a0b3、a1b2、a2b1、a3b0,在外部狀態(tài)機(jī)的控制下送入預(yù)計(jì)算單元累加并寄存在寄存器III中;在所述外部狀態(tài)機(jī)的控制下,在i=1、i=2、i=3的循環(huán)內(nèi),同樣按i=0循環(huán)內(nèi)所屬的步驟依次進(jìn)行;所述的129位寄存器和多路選擇器,按照i=0,1,2,3各個(gè)不同的循環(huán)周期,把所寄存的各相應(yīng)數(shù)據(jù)送往所述133位加法器IV累加后送往所述133位寄存器IV寄存,該寄存器IV把中間結(jié)果m送往第二采用7級(jí)流水的64位加法器,直到所有各循環(huán)結(jié)束,輸出最終運(yùn)算結(jié)果,以上所述的基于改進(jìn)的蒙哥馬利模乘器是在數(shù)字集成電路上實(shí)現(xiàn)的。
全文摘要
本發(fā)明屬于計(jì)算機(jī)加/解密技術(shù)領(lǐng)域,其特征在于該模乘器用了兩個(gè)7級(jí)流水的64位乘法器來(lái)分解操作數(shù)以提高系統(tǒng)的時(shí)鐘頻率,用預(yù)計(jì)算單元把在外部狀態(tài)機(jī)控制下提前輸入的數(shù)據(jù)分期送入乘法器,所屬分期是按照計(jì)算操作數(shù)中前一位值的那個(gè)階段中存在的三個(gè)等待計(jì)算結(jié)果的時(shí)鐘周期來(lái)劃分的。從i=0時(shí)計(jì)算第一階段開(kāi)始,重復(fù)上述步驟,直到操作數(shù)中個(gè)位數(shù)全部模乘結(jié)束為止。從而解決了流水線停頓的問(wèn)題,提高了系統(tǒng)的并行性,減少了所需的時(shí)鐘數(shù)。所述模乘器位長(zhǎng)233位,基于SMIC 0.18um最壞的工藝,關(guān)鍵路徑最大時(shí)延3.8ns,面積2mm
文檔編號(hào)G06F7/60GK1786900SQ20051011670
公開(kāi)日2006年6月14日 申請(qǐng)日期2005年10月28日 優(yōu)先權(quán)日2005年10月28日
發(fā)明者李樹國(guó), 毛天然 申請(qǐng)人:清華大學(xué)