高速可擴展的Montgomery乘法器設計方案
本文提出一種高速可擴展的Montgomery乘法器設計方案,該方案是在Tenca提出的Booth-8 Montgomery模乘法器的基礎上,采用Booth-64編碼進行改進,使速度平均提高了48%。同時對數(shù)據(jù)通路進行了優(yōu)化,使得流水線數(shù)據(jù)通路的平均延遲大大降低。
其中,k表示基,X為模乘運算的乘數(shù),Y是被乘數(shù),M是模數(shù)。其中,操作數(shù)長度為N,部分積用為S表示,Y、M和S分成NW個BPW bit的字進行運算,xj表示X的第j bit,Sk(i)表示第i個字的第k位,Ca、Cb表示進位,qyj、qMj分別是在計算部分積過程中Y和M的系數(shù)。
核心數(shù)據(jù)路徑采用流水線組織結構,每一級之間用寄存器隔開。每個MMcell單元完成一輪外循環(huán),每個時鐘輸入Y、M、SS、SC的一個字參與運算,并把Y、M和計算出來的SS、SC傳遞該下一級。為了能使數(shù)據(jù)路徑可伸縮,加入了兩個FIFO分別用來存儲SS和SC。如圖1所示,NS是流水線級數(shù),由面積和時間需求來決定。
2 基為64的高速Montgomery乘法器設計
Tenca提出的模乘器設計中Booth編碼采用的基為8,并且能夠支持操作數(shù)長度可變的模乘運算,對操作數(shù)按字進行運算,縮短了關鍵路徑的延遲,并且使用CSA(Carry Save Adder)提高了整體的系統(tǒng)性能。
通過分析,采用基為8的Booth編碼可以將部分積數(shù)量減少為原來的1/3,而采用基為64的Booth編碼則可以將部分積數(shù)量減少為原來的1/6。據(jù)此本文對Tenca提出的設計方案進行改進,因此提出基為64的高速Montgomery乘法器。
對于基為64的設計,乘數(shù)X每次掃描6 bit,經(jīng)Booth編碼后得到7 bit的輸入數(shù)據(jù),同時Y和M每次輸入一個字。乘數(shù)X的Booth編碼為:
3 性能分析與比較
對于基為64的Montgomery乘法器,計算一次模乘運算的總時鐘周期數(shù)時,需要考慮NW≤2NS和NW>2NS兩種情況,NW代表操作數(shù)所含的字數(shù)。一個MMcell需要兩個時鐘周期的執(zhí)行時間,因此一個字經(jīng)過流水線的總時鐘周期數(shù)是2NS+1。由于每次可處理6 bit,所以需
從表1可以看出,在不同條件下,本文的設計在性能上平均比Tenca的設計提高了48%。本文采用字長32 bit,級數(shù)NS=8實現(xiàn)基為64的Montgomery乘法器,且使用Verilog HDL語言實現(xiàn)上述設計,并使用ModelSim 對設計進行了仿真驗證;基于SMIC 0.18 μm CMOS標準數(shù)字邏輯工藝,利用Design Compiler 進行了綜合設計,結果顯示頻率達到251 MHz,面積為37 381門。
顧葉華在參考文獻[4]中對Tenca提出的流水線結構進行了優(yōu)化,提出了一種基為4的Montgomery乘法器方案。面積和速度的比較如表2所示。從表中可以看出,本設計在512 bit和1 024 bit下具有最小的時間×面積的值,綜合性能最優(yōu)。
本文對Tenca提出的基為8的可擴展Montgomery模乘器進行改進,采用了更高的基為64的設計,進一步減少了部分積的個數(shù),縮短了運算時間。與Tenca在參考文獻[2]中的設計相比,時鐘周期數(shù)平均減少了48%,并且縮短了關鍵路徑的延遲相比,綜合性能具有明顯地提高。