專利名稱:一種蒙哥馬利模乘器的制作方法
技術(shù)領(lǐng)域:
本實用新型涉及一種模乘器,更具體地說,涉及一種一維的具有多級處理單元PE(Processing Element)的可以實現(xiàn)蒙哥馬利模乘運算的蒙哥馬利模乘器。
RSA加密算法是由R.L.Riverst、A.Shamir和L.Adleman提出并用三個人名命名的算法。在使用該加密算法的系統(tǒng)中,對于每個用戶而言對應著三個很大的整數(shù)模數(shù)M、加密指數(shù)e和解密指數(shù)d,一般其二進制表示的位數(shù)為512位或1024位,位數(shù)越大所加密的信息越難破解。這三個二進制整數(shù)之間有著特殊的關(guān)系,其中模數(shù)M和加密指數(shù)e是公開的,d是保密的,由用戶保存,M是模數(shù),加密指數(shù)e和模數(shù)M是加密密鑰對,解密指數(shù)d和模數(shù)M是解密密鑰對。當向某用戶發(fā)送信息C時,利用對應該用戶的加密密鑰e,對信息C加密再發(fā)向該用戶,這里C為明文,E為密文,加密過程可表示為E=CemodM;當用戶接到密文信息E后,用對應該用戶的解密密鑰d對其解密可恢復明文信息CC=EdmodM。
可見,加密/解密過程涉及大數(shù)的模冪運算。按照指數(shù)掃描算法模冪運算可分解為多次模乘運算。大數(shù)模乘可以由蒙哥馬利模乘來實現(xiàn),所以蒙哥馬利模乘是RSA加密算法的核心運算。這種運算很復雜,用軟件實現(xiàn)速度慢,難于滿足應用時的速度要求,采用硬件方法實現(xiàn)RSA加密運算可大大降低運算時間,提高運算性能。美國專利US6,061,706提出了一種蒙哥特馬利模乘運算硬件電路,由基本處理單元連接而成,在時鐘信號控制下進行迭代運算,該電路完成模數(shù)長度為n位的蒙哥馬利模乘運算需要2n+11個時鐘周期,雖然相對而言運算時間有所減少,但該電路完成模長為n位的蒙哥馬利模乘運算需要2n+11個時鐘周期,運算時間仍比較長。
本實用新型所要解決的問題可以通過以下技術(shù)方案來解決算法I是一種蒙哥馬利算法的變形,是所述蒙哥馬利模乘器的實現(xiàn)基礎(chǔ)。
算法I如下輸入基b=2k;模數(shù)M,n位的模數(shù),在基b下的表示為 操作數(shù)A,n位的操作數(shù),在基b下的表示為 操作數(shù)B,n位的操作數(shù),在基b下的表示為 M<R=2km,R為預計算因子;M’=-M-1mod2k,gcd(2k,M)=1;輸出Sm=ABR-1modM;計算步驟如下1、SO=02、FOR i=0 to m-1 DO3、qi=(((Si+aiB)mod 2k)M’)mod 2k4、Si+1=(Si+qiM+aiB)/2k5、END FOR
6、IF Sm≥M RETURN(Sm-M)ELSE RETURN Sm其中n為模數(shù)的二進制表示位長度(簡稱為模數(shù)長度),k為基b的二進制表示位數(shù),通?;鵥≥1,m=[n/k],[n/k]表示不小于n/k的最小整數(shù)。
一種蒙哥馬利模乘器,由m+3個結(jié)構(gòu)相同的處理單元PE連接而成,其特征在于所述處理單元包括運算電路、用于計算蒙哥馬利模乘運算預計算因子并對運算電路鏈的最終計算結(jié)果進行后處理的預計算/后處理電路;所述運算電路的輸入端與所述預計算/后處理電路的輸出端相連接,運算電路的輸出端與預計算/后處理電路的輸入端相連接;其中m=[n/k],[n/k]表示不小于n/k的最小整數(shù),n為模數(shù)的二進制表示位長度(簡稱為模數(shù)長度),k為基b的二進制表示位數(shù),通?;鵥≥1。
總線信號M_Bus同時輸入所有處理單元PE0、PE1、……、PEm+2,模數(shù)的相應數(shù)據(jù)位通過該總線輸入到各處理單元中。
第1個處理單元PEO的輸入信號包括ai[0]、qi[0]、r[0]、s[0]、M[0]、A[0]、B[0]、C[0]、D[0],其中輸入信號A[0]、B[0]、C[0]、D[0]、M[0]都被設(shè)置為0;信號r、信號s為第1個處理單元PE0的輸出信號。第1個處理單元PE0的輸出信號ai[1]、qi[1]、A[1]、B[1]、C[1]、D[1]、M[1]以及第3個處理單元的輸出信號r[1]、s[1]作為第2個處理單元PE1的輸入信號;第2個處理單元PE1的輸出信號r[0]、s[0]作為第1處理單元PE0的輸入信號,第2個處理單元PE1的輸出信號ai[2]、qi[2]、A[2]、B[2]、C[2]、D[2]、M[2]作為第3個處理單元PE2的輸入信號。
第j個處理單元PEj-1的輸出信號ai[j]、qi[j]、A[j]、B[j]、C[j]、D[j]、M[j]以及第j+2個處理單元PEj+1的輸出信號r[j]、s[j]作為第j+1個處理單元PEj的輸入信號;第j+1個處理單元PEj的輸出信號r[j-1]、s[j-1]作為第j個處理單元PEj-1的輸入信號,第j+1個處理單元PEj的輸出信號ai[j+1]、qi[j+1]、A[j+1]、B[j+1]、C[j+1]、D[j+1]、M[j+1]作為第j+2個處理單元PEj+1的輸入信號;其中j=1,2,3,……,m+1。第m+3個處理單元PEm+2的輸入信號r[m+2]、s[m+2]設(shè)置為0,輸出信號M[m+2]的輸出端口不與其它端口連接。
構(gòu)成蒙哥馬利模乘器的所有處理單元的預計算/后處理電路構(gòu)成一個預計算/后處理電路鏈,所有處理單元的運算電路構(gòu)成一個運算電路鏈;預計算/后處理電路鏈用于計算蒙哥馬利模乘運算的預計算因子并對運算電路鏈的最終計算結(jié)果進行后處理。
所述處理單元的預計算/后處理電路包括預計算因子寄存器,用于保存預計算因子計算過程的中間值或最終的預計算因子;多路選擇器,用于選擇是進行預計算過程還是后處理過程;減法電路,作為預計算/后處理過程的運算單元;預計算因子寄存器的輸出端與多路選擇器的輸入端相連接,預計算因子寄存器的輸出端與運算電路相連接,多路選擇器的輸出端與減法電路的輸入端相連接,減法電路的輸出端與預計算因子寄存器的輸入端相連接,運算電路的輸出端與多路選擇器的輸入端相連接。
所述處理單元運算電路包括6個寄存器、3個加法器、2個乘法器、2個多路選擇器、3個對數(shù)據(jù)進行拆分的拆分器;運算電路的寄存器包括操作數(shù)寄存器A_reg、B_reg、Q_reg、模數(shù)寄存器M_reg、輸出寄存器Res_reg、結(jié)果寄存器S_reg。
預計算/后處理電路的輸出端與第一多路選擇器的輸入端相連接;第一多路選擇器的輸出端與操作數(shù)寄存器B_reg的輸入端相連接;操作數(shù)寄存器B_reg的輸出信號分別輸入到預計算/后處理電路、第一乘法器、第二多路選擇器;第一乘法器的輸出端與第一拆分器的輸入端相連接;第一拆分器將輸入數(shù)據(jù)的數(shù)據(jù)位平均拆分為高位和低位,第一拆分器的高位輸出信號A[j+1]輸入到處理單元PEj+1(其中j=1,2,……,m+1),第一拆分器的低位輸出端與第一加法器的輸入端相連接;處理單元PEj-1的輸出信號A[j]輸入到第一加法器,第一加法器的輸出端與第三加法器的輸入端相連接;第三加法器的輸出端與結(jié)果寄存器S_reg的輸入端相連接,處理單元PEj-1的輸出信號C[j]輸入到第三加法器,處理單元PEj+1的輸出信號s[j]輸入到第三加法器;結(jié)果寄存器S_reg的輸出端與第三拆分器的輸入端相連接;第三拆分器對結(jié)果寄存器S_reg的數(shù)據(jù)進行拆分,第三拆分器將輸入數(shù)據(jù)的數(shù)據(jù)位拆分為高位和低位,其中高位數(shù)據(jù)為2位,拆分后得到的低位數(shù)據(jù)s[j-1]分別輸入到第一、二多路選擇器及處理單元PEj-1,高位數(shù)據(jù)C[j+1]輸入到處理單元PEj+1;總線信號M_bus輸入到操作數(shù)寄存器M_reg,操作數(shù)寄存器M_reg的輸出信號M[j+1]分別輸入到第二乘法器、處理單元PEj+1;第二乘法器的輸出端與第二拆分器的輸入端相連接;第二拆分器將輸入數(shù)據(jù)的數(shù)據(jù)位平均拆分為高位和低位,第二拆分器的高位輸出信號B[j+1]輸入到處理單元PEj+1,第二拆分器的低位輸出端與第二加法器的輸入端相連接;處理單元PEj-1的輸出信號B[j]輸入到第二加法器,第二加法器的輸出端與第三加法器的輸入端相連接;處理單元PEj-1的輸出信號ai[j]、qi[j]分別輸入到操作數(shù)寄存器A_reg、Q_reg,操作數(shù)寄存器A_reg的輸出信號ai[j+1]分別輸入第一乘法器、處理單元PEj+1,操作數(shù)寄存器Q_reg的輸出信號qi[j+1]分別輸入第二乘法器、處理單元PEj+1;第二多路選擇器輸出端與輸出寄存器Res_reg的輸入端相連接,來自處理單元PEj+1的信號r[j]輸入到第二多路選擇器;輸出寄存器Res_reg的輸出信號r[j-1]輸入到處理單元PEj-1;來自處理單元PEj-1的信號D[j]、M[j]輸入預計算/后處理電路,預計算/后處理電路的輸出信號D[j+1]輸入到處理單元PEj+1。
與現(xiàn)有技術(shù)相比,由于我們采用處理單元構(gòu)成的一維心動陣列來實現(xiàn)蒙哥馬利模乘器模乘器,同時將預計算/后處理用硬件實現(xiàn),并將預計算/后處理電路集成到處理單元中,既提高數(shù)據(jù)的處理速度,也可以簡化外部的計算量。采用心動陣列可以實現(xiàn)并行計算,構(gòu)成心動陣列的每個處理單元一次可以處理k個數(shù)據(jù)位,完成一次模數(shù)長度為n位的蒙哥馬利模乘運算只需2n/k個時鐘,使運算時間縮短,運算性能提高。
算法I是一種蒙哥馬利算法的變形,是所述蒙哥馬利模乘器的實現(xiàn)基礎(chǔ)。
算法I如下輸入基b=2k;
模數(shù)M,n位的模數(shù),在基b下的表示為 操作數(shù)A,n位的操作數(shù),在基b下的表示為 操作數(shù)B,n位的操作數(shù),在基b下的表示為 M<R=2km,R為預計算因子;M’=-M-1mod2k,gcd(2k,M)=1;輸出Sm=ABR-1mod M;計算步驟如下7、SO=08、FOR i=0 to m-1 DO9、qi=(((Si+aiB)mod 2k)M’)mod 2k10、Si+1=(Si+qiM+aiB)/2k11、END FOR12、IF Sm≥M RETURN(Sm-M)ELSE RETURN Sm其中n為模數(shù)的二進制表示位長度(簡稱為模數(shù)長度),k為基b的二進制表示位數(shù),通?;鵥≥1,m=[n/k],[n/k]表示不小于n/k的最小整數(shù)。
如
圖1所示蒙哥馬利模乘器由一維心動陣列構(gòu)成,心動陣列由處理單元構(gòu)成,各處理單元的結(jié)構(gòu)相同,構(gòu)成心動陣列的處理單元個數(shù)為m+3個,其中m=[n/k],[n/k]表示不小于n/k的最小整數(shù),n為模數(shù)的二進制表示位長度(簡稱為模數(shù)長度),k為基b的二進制表示位數(shù),通常基b≥1。
總線信號M_Bus同時輸入所有處理單元PE0、PE1、……、PEm+2,模數(shù)的相應數(shù)據(jù)位通過該總線輸入到各處理單元中。
第1個處理單元PE0的輸入信號包括ai[0]、qi[0]、r[0]、s[0]、M[0]、A[0]、B[0]、C[0]、D[0],其中輸入信號A[0]、B[0]、C[0]、D[0]、M[0]都被設(shè)置為0;信號r、信號s為第1個處理單元PE0的輸出信號。第1個處理單元PE0的輸出信號ai[1]、qi[1]、A[1]、B[1]、C[1]、D[1]、M[1]以及第3個處理單元的輸出信號r[1]、s[1]作為第2個處理單元PE1的輸入信號;第2個處理單元PE1的輸出信號r[0]、s[0]作為第1處理單元PE0的輸入信號,第2個處理單元PE1的輸出信號ai[2]、qi[2]、A[2]、B[2]、C[2]、D[2]、M[2]作為第3個處理單元PE2的輸入信號。
第j個處理單元PEj-1的輸出信號ai[j]、qi[j]、A[j]、B[j]、C[j]、D[j]、M[j]以及第j+2個處理單元PEj+1的輸出信號r[j]、s[j]作為第j+1個處理單元PEj的輸入信號;第j+1個處理單元PEj的輸出信號r[j-1]、s[j-1]作為第j個處理單元PEj-1的輸入信號,第j+1個處理單元PEj的輸出信號ai[j+1]、qi[j+1]、A[j+1]、B[j+1]、C[j+1]、D[j+1]、M[j+1]作為第j+2個處理單元PEj+1的輸入信號;其中j=1,2,3,……,m+1。第m+3個處理單元PEm+2的輸入信號r[m+2]、s[m+2]設(shè)置為0,輸出信號M[m+2]的輸出端口不與其它端口連接。
如圖2所示,以蒙哥馬利模乘器的處理單元PEm為例,蒙哥馬利模乘器的處理單元包括運算電路、用于計算蒙哥馬利模乘運算的預計算因子并對運算電路鏈的最終計算結(jié)果進行后處理的預計算/后處理電路;所述運算電路的輸入端與所述預計算/后處理電路的輸出端相連接,運算電路的輸出端與預計算/后處理電路的輸入端相連接。
下面簡單講一下處理單元的運算電路及預計算/后處理電路的信號流向。運算電路的輸入信號包括ai[m]、qi[m]、A[m]、B[m]、C[m]、r[m]、s[m]、M_bus,對應的輸出信號為ai[m+1]、qi[m+1]、A[m+1]、B[m+1]、C[m+1]、r[m-1]s[m-1]、M[m+1];運算電路的輸入信號還包括來自預計算/后處理電路的信號Pre_out。預計算/后處理電路的輸入信號包括D[m]、M[m]及來自運算電路的信號B_In,輸出信號為D[m+1]。
構(gòu)成蒙哥馬利模乘器的所有處理單元的預計算/后處理電路構(gòu)成一個預計算/后處理電路鏈,所有處理單元的運算電路構(gòu)成一個運算電路鏈;預計算/后處理電路鏈用于計算蒙哥馬利模乘運算的預計算因子并對運算電路鏈的最終計算結(jié)果進行后處理。運算電路鏈用于實現(xiàn)算法I中的循環(huán)計算。
如圖3所示,以蒙哥馬利模乘器的處理單元PEm為例,蒙哥馬利模乘器處理單元的預計算/后處理電路包括預計算因子寄存器、多路選擇器、減法電路;預計算因子寄存器用于保存預計算因子計算過程的中間值或最終的預計算因子,多路選擇器用于選擇是進行預計算過程還是后處理過程,減法電路作為預計算/后處理過程的運算單元。
預計算因子寄存器的輸出端與多路選擇器的輸入端相連接,預計算因子寄存器的輸出信號Pre_out輸入到運算電路;多路選擇器的輸出端與減法電路的輸入端相連接;減法電路的輸出端與預計算因子寄存器的輸入端相連接,減法電路的輸入信號還包括來自其它處理單元的信號M[m];運算電路的輸出端與多路選擇器的輸入端相連接。
如圖4所示,以模數(shù)長度為16、基為16(長度為4比特,即基的二進制表示位數(shù)為4位)的蒙哥馬利模乘器為例,此時蒙哥馬利模乘器心動陣列的處理單元的個數(shù)為7個,這7個處理單元分別為PE0、PE1、……、PE6,各處理單元的結(jié)構(gòu)相同。
總線信號M_Bus同時輸入所有處理單元PE0、PE1、……、PE6,模數(shù)的相應數(shù)據(jù)位通過該總線輸入到各處理單元中。
第1個處理單元PE0的輸入信號包括ai[0]、qi[0]、r[0]、s[0]、M[0]、A[0]、B[0]、C[0]、D[0],其中輸入信號A[0]、B[0]、C[0]、D[0]、M[0]都被設(shè)置為0;信號r、信號s為第1個處理單元PE0的輸出信號。第1個處理單元PE0的輸出信號ai[1]、qi[1]、A[1]、B[1]、C[1]、D[1]、M[1]以及第3個處理單元的輸出信號r[1]、s[1]作為第2個處理單元PE1的輸入信號;第2個處理單元PE1的輸出信號r[0]、s[0]作為第1處理單元PE0的輸入信號,第2個處理單元PE1的輸出信號ai[2]、qi[2]、A[2]、B[2]、C[2]、D[2]、M[2]作為第3個處理單元PE2的輸入信號。
第4個處理單元PE3的輸出信號r[2]、s[2]作為第3個處理單元PE2的輸入信號;第3個處理單元PE2的輸出信號r[1]、s[1]作為第2個處理單元PE1的輸入信號,第3個處理單元PE2的輸出信號ai[3]、qi[3]、A[3]、B[3]、C[3]、D[3]、M[3]作為第4個處理單元PE3的輸入信號。
第5個處理單元PE4的輸出信號r[3]、s[3]作為第4個處理單元PE3的輸入信號;第4個處理單元PE3的輸出信號r[2]、s[2]作為第3個處理單元PE2的輸入信號,第4個處理單元PE3的輸出信號ai[4]、qi[4]、A[4]、B[4]、C[4]、D[4]、M[4]作為第5個處理單元PE4的輸入信號。
第6個處理單元PE5的輸出信號r[4]、s[4]作為第5個處理單元PE4的輸入信號;第5個處理單元PE4的輸出信號r[3]、s[3]作為第4個處理單元PE3的輸入信號,第5個處理單元PE4的輸出信號ai[5]、qi[5]、A[5]、B[5]、C[5]、D[5]、M[5]作為第6個處理單元PE5的輸入信號。
第7個處理單元PE6的輸入信號r[6]、s[6]設(shè)置為0,輸出信號M[6]的輸出端口不與其它端口連接。此蒙哥馬利模乘器在特定的外部控制時序的控制下可以快速的進行RSA算法的模冪計算。
圖5為模數(shù)長度為16、基為16的蒙哥馬利模乘器處理單元的詳細框圖,處理單元PE0、PE1、……、PE6包括運算電路、預計算/后處理電路;所述運算電路包括6個寄存器、3個加法器、2個乘法器、2個多路選擇器、3個對數(shù)據(jù)進行拆分的拆分器;運算電路的寄存器包括4位的操作數(shù)寄存器A_reg、B_reg、Q_reg、4位的模數(shù)寄存器M_reg、4位的輸出寄存器Res_reg、6位的結(jié)果寄存器S_reg。
預計算/后處理電路的輸出端與第一多路選擇器的輸入端相連接;第一多路選擇器的輸出端與操作數(shù)寄存器B_reg的輸入端相連接;操作數(shù)寄存器B_reg的輸出信號分別輸入到預計算/后處理電路、第一乘法器、第二多路選擇器;第一乘法器的輸出端與第一拆分器的輸入端相連接;第一拆分器將輸入數(shù)據(jù)的數(shù)據(jù)位平均拆分為高位和低位,第一拆分器的高位輸出信號A[j+1]輸入到處理單元PEj+1,第一拆分器的低位輸出端與第一加法器的輸入端相連接;處理單元PEj-1的輸出信號A[j]輸入到第一加法器,第一加法器的輸出端與第三加法器的輸入端相連接;第三加法器的輸出端與結(jié)果寄存器S_reg的輸入端相連接,處理單元PEj-1的輸出信號C[j]輸入到第三加法器,處理單元PEj+1的輸出信號s[j]輸入到第三加法器;結(jié)果寄存器S_reg的輸出端與第三拆分器的輸入端相連接;第三拆分器對結(jié)果寄存器S_reg的數(shù)據(jù)進行拆分,第三拆分器將輸入數(shù)據(jù)的數(shù)據(jù)位拆分為高位和低位,其中高位數(shù)據(jù)為2位,拆分后得到的低位數(shù)據(jù)s[j-1]分別輸入到第一、二多路選擇器及處理單元PEj-1,高位數(shù)據(jù)C[j+1]輸入到處理單元PEj+1;總線信號M_bus輸入到操作數(shù)寄存器M_reg,操作數(shù)寄存器M_reg的輸出信號M[j+1]分別輸入到第二乘法器、處理單元PEj+1;第二乘法器的輸出端與第二拆分器的輸入端相連接;第二拆分器將輸入數(shù)據(jù)的數(shù)據(jù)位平均拆分為高位和低位,第二拆分器的高位輸出信號B[j+1]輸入到處理單元PEj+1,第二拆分器的低位輸出端與第二加法器的輸入端相連接;處理單元PEj-1的輸出信號B[j]輸入到第二加法器,第二加法器的輸出端與第三加法器的輸入端相連接;處理單元PEj-1的輸出信號ai[j]、qi[j]分別輸入到操作數(shù)寄存器A_reg、Q_reg,操作數(shù)寄存器A_reg的輸出信號ai[j+1]分別輸入第一乘法器、處理單元PEj+1,操作數(shù)寄存器Q_reg的輸出信號qi[j+1]分別輸入第二乘法器、處理單元PEj+1;第二多路選擇器輸出端與輸出寄存器Res_reg的輸入端相連接,來自處理單元PEj+1的信號r[j]輸入到第二多路選擇器;輸出寄存器Res_reg的輸出信號r[j-1]輸入到處理單元PEj-1。來自處理單元PEj-1的信號D[j]、M[j]輸入預計算/后處理電路,預計算/后處理電路的輸出信號D[j+1]輸入到處理單元PEj+1。
第二多路選擇器與輸出寄存器Res_reg構(gòu)成輸出電路,蒙哥馬利模乘器心動陣列所有處理單元的輸出電路構(gòu)成一個輸出鏈,該輸出鏈輸出中間計算結(jié)果或者最終計算結(jié)果。
此蒙哥馬利模乘器在特定的外部控制時序的控制下可以快速的進行RSA算法的模冪計算。
操作數(shù)寄存器B_reg保存操作數(shù)B或中間的計算結(jié)果或最終的計算結(jié)果。模數(shù)寄存器M_reg保存做模數(shù)M或模數(shù)M的變換形式M’。另一個操作數(shù)A輸入并保存在操作數(shù)寄存器A_reg中,算法I計算步驟3中的qi輸入并保存在操作數(shù)寄存器Q_reg,這兩個值分別與操作數(shù)寄存器A_reg、模數(shù)寄存器M_reg中保存的值相乘,將得到的結(jié)果分別拆分出A[j+1]和B[j+1]輸出給下一個處理單元,拆分出的另一部分分別與輸入的來自上一個處理單元的A[j]和B[j]相加,兩次加法運算得到的結(jié)果與來自下一個處理單元的s[j]以及來自上一個單元的進位C[j]相加,相加得到的和寄存在結(jié)果寄存器S_reg中。結(jié)果寄存器S_reg的輸出分成兩部分,一部分做s[j-1]輸出給上一個處理單元,一部分做C[j+1]輸出給下一個處理單元。
在計算開始時,操作數(shù)寄存器B_reg保存的是預計算因子的4位數(shù)據(jù),在計算過程中寄存器B_reg保存中間值的4位數(shù)據(jù),在計算結(jié)束時,寄存器B_reg保存的是結(jié)果的4位數(shù)據(jù)。模數(shù)寄存器M_reg保存的是模數(shù)的4位數(shù)據(jù)。操作數(shù)寄存器A_reg保存的是操作數(shù)的4位數(shù)據(jù)。操作數(shù)寄存器Q_reg保存的是商q的4位數(shù)據(jù)。結(jié)果寄存器S_reg保存的是該處理單元中各運算單元最終的運算結(jié)果,該寄存結(jié)果的低4位保存到寄存器B_reg中,高兩位作為進位輸出給心動陣列中的下一個處理單元。
操作數(shù)ai和qi相應的數(shù)據(jù)位(4位)作為輸入信號ai[j]、qi[j]分別輸入到處理單元內(nèi)部的操作數(shù)寄存器A_reg和Q_reg中,操作數(shù)寄存器A_reg保存的值作為輸出信號ai[j+1]輸出給處理單元PEj+1的同時輸出給操作數(shù)寄存器B_reg,并與操作數(shù)寄存器B_reg中保存的值相乘。操作數(shù)寄存器A_reg和操作數(shù)寄存器B_reg都是4位,相乘的結(jié)果為8位,乘積由第一拆分器進行拆分,分成高4位和低4位,低4位作為第一加法器的一個輸入信號,高4位作為輸出信號A[j+1]輸出給下一個處理單元PEj+1。保存在模數(shù)寄存器M_reg中的模數(shù)作為輸出信號M[j+1]輸出給處理單元PEj+1的同時輸出給操作數(shù)寄存器Q_reg,并與保存在操作數(shù)寄存器Q_reg中的值相乘,操作數(shù)寄存器Q_reg和模數(shù)寄存器M_reg都是4位的,相乘的結(jié)果為8位。乘積由第二拆分器進行拆分,分成高4位和低4位,低4位作為第二加法器的一個輸入信號,高4位作為輸出信號A[j+1]輸出給下一個處理單元PEj+1。第一加法器的另一個輸入信號為A[j],A[j]是4位的信號,相加的結(jié)果為5位,將該結(jié)果輸入給第三加法器。第二加法器的另一個輸入信號為B[j],B[j]是4位的信號,相加的結(jié)果為5位,將該結(jié)果輸入給第三加法器。第三加法器還有兩個輸入信號s[j]和C[j],其中s[j]是4位的信號,C[j]是2位的信號,第三加法器的和為6位,相加得到的和寄存在結(jié)果寄存器S_reg中。第三拆分器對寄存器S_reg的6位數(shù)據(jù)作拆分,高兩位作為輸出信號C[j+1]輸出下一個處理單元PEj+1,低4位作為輸出信號s[j-1]輸出給處理單元PEj-1、第一、二多路選擇器。
每個處理單元用來完成算法I計算步驟4中Si+qiM+aiB的部分位的計算,構(gòu)成模乘器心動陣列的所有處理單元則完成整個運算的全部位的計算。由于處理單元PEj的計算結(jié)果s[j-1](對于處理單元PE0該結(jié)果用s表示)是輸出給編號小于本處理單元編號的處理單元,這種結(jié)構(gòu)實現(xiàn)了算法I計算步驟4中的除法運算。
當輸入完所有的操作數(shù)數(shù)據(jù)位后,計算結(jié)果s[j-1](對于處理單元PE0該結(jié)果用s表示)通過處理單元內(nèi)部的數(shù)據(jù)通路保存到操作數(shù)寄存器B_reg中,然后該數(shù)據(jù)輸入預計算/后處理電路進行后處理。后處理的結(jié)果保存到操作數(shù)寄存器B_reg中。該結(jié)果通過第二多路選擇器輸出到輸出鏈中,經(jīng)過一級一級的傳遞最后在處理單元PE0輸出。
權(quán)利要求1.一種蒙哥馬利模乘器,由m+3個結(jié)構(gòu)相同的處理單元PE(ProcessingElement)連接而成,其特征在于所述處理單元包括運算電路、用于計算蒙哥馬利模乘運算的預計算因子并對運算電路鏈的最終計算結(jié)果進行后處理的預計算/后處理電路;所述運算電路的輸入端與所述預計算/后處理電路的輸出端相連接,運算電路的輸出端與預計算/后處理電路的輸入端相連接;其中m=[n/k],[n/k]表示不小于n/k的最小整數(shù),n為模數(shù)的二進制表示位長度,簡稱為模數(shù)長度,k為基b的二進制表示位數(shù),通?;鵥≥1。
2.如權(quán)利要求1所述的蒙哥馬利模乘器,其特征在于構(gòu)成蒙哥馬利模乘器的所有處理單元的預計算/后處理電路構(gòu)成一個預計算/后處理電路鏈,所有處理單元的運算電路構(gòu)成一個運算電路鏈;預計算/后處理電路鏈用于計算蒙哥馬利模乘運算的預計算因子并對運算電路鏈的最終計算結(jié)果進行后處理。
3.如權(quán)利要求1所述的蒙哥馬利模乘器,其特征在于,所述預計算/后處理電路包括預計算因子寄存器,用于保存預計算因子計算過程的中間值或最終的預計算因子;多路選擇器,用于選擇是進行預計算過程還是后處理過程;減法電路,作為預計算/后處理過程的運算單元;預計算因子寄存器的輸出端與多路選擇器的輸入端相連接,多路選擇器的輸出端與減法電路的輸入端相連接,減法電路的輸出端與預計算因子寄存器的輸入端相連接。
4.如權(quán)利要求3所述的蒙哥馬利模乘器,其特征在于所述預計算因子寄存器的輸出端與運算電路相連接,所述多路選擇器的輸入端與運算電路的輸出端相連接。
5.如權(quán)利要求1所述的蒙哥馬利模乘器,其特征在于所述運算電路包括6個寄存器、3個加法器、2個乘法器、2個多路選擇器、3個對數(shù)據(jù)進行拆分的拆分器;運算電路的寄存器包括操作數(shù)寄存器A_reg、B_reg、Q_reg、模數(shù)寄存器M_reg、輸出寄存器Res_reg、結(jié)果寄存器S_reg;預計算/后處理電路的輸出端與第一多路選擇器的輸入端相連接;第一多路選擇器的輸出端與操作數(shù)寄存器B_reg的輸入端相連接;操作數(shù)寄存器B_reg的輸出信號分別輸入到預計算/后處理電路、第一乘法器、第二多路選擇器;第一乘法器的輸出端與第一拆分器的輸入端相連接;第一拆分器的高位輸出信號A[j+1]輸入到處理單元PEj+1(其中j=1,2,……,m+1),第一拆分器的低位輸出端與第一加法器的輸入端相連接;處理單元PEj-1的輸出信號A[j]輸入到第一加法器,第一加法器的輸出端與第三加法器的輸入端相連接;第三加法器的輸出端與結(jié)果寄存器S_reg的輸入端相連接,處理單元PEj-1的輸出信號C[j]輸入到第三加法器,處理單元PEj+1的輸出信號s[j]輸入到第三加法器;結(jié)果寄存器S_reg的輸出端與第三拆分器的輸入端相連接;第三拆分器對結(jié)果寄存器S_reg的數(shù)據(jù)進行拆分,拆分后得到的低位數(shù)據(jù)s[j-1]分別輸入到第一、二多路選擇器及處理單元PEj-1,高位數(shù)據(jù)C[j+1]輸入到處理單元PEj+1;總線信號M_bus輸入到操作數(shù)寄存器M_reg,操作數(shù)寄存器M_reg的輸出信號M[j+1]分別輸入到第二乘法器、處理單元PEj+1;第二乘法器的輸出端與第二拆分器的輸入端相連接;第二拆分器的高位輸出信號B[j+1]輸入到處理單元PEj+1,第二拆分器的低位輸出端與第二加法器的輸入端相連接;處理單元PEj-1的輸出信號B[j]輸入到第二加法器,第二加法器的輸出端與第三加法器的輸入端相連接;處理單元PEj-1的輸出信號ai[j]、qi[j]分別輸入到操作數(shù)寄存器A_reg、Q_reg,操作數(shù)寄存器A_reg的輸出信號ai[j+1]分別輸入第一乘法器、處理單元PEj+1,操作數(shù)寄存器Q_reg的輸出信號qi[j+1]分別輸入第二乘法器、處理單元PEj+1;第二多路選擇器輸出端與輸出寄存器Res_reg的輸入端相連接,來自處理單元PEj+1的信號r[j]輸入到第二多路選擇器;輸出寄存器Res_reg的輸出信號r[j-1]輸入到處理單元PEj-1;來自處理單元PEj-1的信號D[j]、M[j]輸入預計算/后處理電路,預計算/后處理電路的輸出信號D[j+1]輸入到處理單元PEj+1。
6.如權(quán)利要求5所述的蒙哥馬利模乘器,其特征在于所述運算電路操作數(shù)寄存器A_reg、B_reg、Q_reg為4位、模數(shù)寄存器M_reg為4位、輸出寄存器Res_reg為4位、結(jié)果寄存器S_reg為6位。
7.如權(quán)利要求5所述的蒙哥馬利模乘器,其特征在于所述第二多路選擇器與輸出寄存器Res_reg構(gòu)成輸出電路,蒙哥馬利模乘器心動陣列所有處理單元的輸出電路構(gòu)成一個輸出鏈,該輸出鏈輸出中間計算結(jié)果或者最終計算結(jié)果。
8.如權(quán)利要求5所述的蒙哥馬利模乘器,其特征在于第一拆分器將輸入數(shù)據(jù)的數(shù)據(jù)位平均拆分為高位和低位。
9.如權(quán)利要求5所述的蒙哥馬利模乘器,其特征在于第二拆分器將輸入數(shù)據(jù)的數(shù)據(jù)位平均拆分為高位和低位。
10.如權(quán)利要求5所述的蒙哥馬利模乘器,其特征在于第三拆分器將輸入數(shù)據(jù)的數(shù)據(jù)位拆分為高位和低位,其中高位數(shù)據(jù)為2位。
專利摘要本實用新型公開了一種由m+3個結(jié)構(gòu)相同的處理單元PE連接而成的蒙哥馬利模乘器,所述處理單元包括運算電路、用于計算蒙哥馬利模乘運算預計算因子并對運算電路鏈的最終計算結(jié)果進行后處理的預計算/后處理電路;所述運算電路的輸入端與所述預計算/后處理電路的輸出端相連接,運算電路的輸出端與預計算/后處理電路的輸入端相連接;其中m=[n/k],[n/k]表示不小于n/k的最小整數(shù),n為模數(shù)的二進制表示位長度(簡稱為模數(shù)長度),k為基b的二進制表示位數(shù),通?;鵥≥1。本實用新型縮短了蒙哥馬利模乘運算所需的運算時間,并提高運算性能。
文檔編號G06F7/38GK2507064SQ0125638
公開日2002年8月21日 申請日期2001年10月18日 優(yōu)先權(quán)日2001年10月18日
發(fā)明者康小剛 申請人:深圳市中興集成電路設(shè)計有限責任公司