基為64的可擴展模乘法器設(shè)計
摘 要: 針對Tenca提出的基為8的Montgomery模乘器,采用基為64的改進(jìn)設(shè)計,使其在不同運算長度下,運算速度比Tenca的設(shè)計平均提高了48%。同時對硬件設(shè)計進(jìn)行了優(yōu)化,縮短了關(guān)鍵路徑的延遲。該設(shè)計具有良好的可擴展性,能夠支持任意位數(shù)的模乘運算,可廣泛應(yīng)用于不同性能和面積需求的公鑰密碼協(xié)處理器設(shè)計。
關(guān)鍵詞: Montgomery乘法器;高基;可擴展
模乘運算在公鑰密碼系統(tǒng)中(例如RSA算法、橢圓曲線密碼算法(ECC)以及ElGamal算法等)有著廣泛的應(yīng)用。Montgomery模乘算法利用易于硬件實現(xiàn)的加法和移位操作來實現(xiàn)大整數(shù)的模乘運算,避免了復(fù)雜的除法運算,從而大大提高了模乘運算的效率[1]。
本文提出一種高速可擴展的Montgomery乘法器設(shè)計方案,該方案是在Tenca提出的Booth-8 Montgomery模乘法器的基礎(chǔ)上,采用Booth-64編碼進(jìn)行改進(jìn),使速度平均提高了48%。同時對數(shù)據(jù)通路進(jìn)行了優(yōu)化,使得流水線數(shù)據(jù)通路的平均延遲大大降低。
其中,k表示基,X為模乘運算的乘數(shù),Y是被乘數(shù),M是模數(shù)。其中,操作數(shù)長度為N,部分積用為S表示,Y、M和S分成NW個BPW bit的字進(jìn)行運算,xj表示X的第j bit,Sk(i)表示第i個字的第k位,Ca、Cb表示進(jìn)位,qyj、qMj分別是在計算部分積過程中Y和M的系數(shù)。
核心數(shù)據(jù)路徑采用流水線組織結(jié)構(gòu),每一級之間用寄存器隔開。每個MMcell單元完成一輪外循環(huán),每個時鐘輸入Y、M、SS、SC的一個字參與運算,并把Y、M和計算出來的SS、SC傳遞該下一級。為了能使數(shù)據(jù)路徑可伸縮,加入了兩個FIFO分別用來存儲SS和SC。如圖1所示,NS是流水線級數(shù),由面積和時間需求來決定。