專利名稱:一種軟硬件結(jié)合加速器及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算方法的實(shí)現(xiàn)領(lǐng)域,尤其是一種軟硬件結(jié)合加速器及其實(shí)現(xiàn)方法。
背景技術(shù):
隨著通訊技術(shù)的發(fā)展,信息的安全問題也越來越重要。如何保證傳輸?shù)男畔踩?完整和不可抵賴性已經(jīng)成為傳輸中需要解決的重要問題。為此出現(xiàn)了各種信息加密、解密技術(shù)。RSA公鑰加密算法是目前最具影響力的公開密鑰算法。RSA公鑰加密算法是1977 年由Ron Rivest、Adi Shamir和LenAdleman在美國麻省理工學(xué)院開發(fā)的,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn)。RSA算法基于一個十分簡單的數(shù)論事實(shí)將兩個大素?cái)?shù)相乘十分容易,但那時想要對其乘積進(jìn)行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。RSA算法中包含的數(shù)據(jù)都是非常大的,越大則越難被破解,一般用二進(jìn)制表示都有512位,1024位,甚至2048位,這樣的數(shù)我們稱之為大數(shù)。 ECC算法也是一種公開密鑰算法,具體原理我們不做闡述,其中運(yùn)算的數(shù)據(jù)也是大數(shù)。還有其他加解密算法等場合,均需要進(jìn)行大數(shù)的運(yùn)算。一般處理器字長32位、或者64位,遠(yuǎn)遠(yuǎn)小于大數(shù)的位數(shù),因而無法直接進(jìn)行大數(shù)的直接計(jì)算。大數(shù)由于位數(shù)多,導(dǎo)致大數(shù)計(jì)算的運(yùn)算量非常大,采用軟件實(shí)現(xiàn)大數(shù)運(yùn)算(圖 1)成本低廉但是由于運(yùn)算量大,速度慢,性能低,對處理器要求高,在某些場合(例如嵌入式應(yīng)用)是無法接受的。如果完全硬件實(shí)現(xiàn),采用硬件實(shí)現(xiàn)大數(shù)運(yùn)算(圖2、速度可以很快, 性能高,但是需要的硬件資源較多,即成本會比較高。在進(jìn)行大數(shù)運(yùn)算的處理器上本身就會有一定的硬件資源,如乘法器、高速RAM 等。軟件實(shí)現(xiàn)大數(shù)運(yùn)算實(shí)際上就是調(diào)用了處理器現(xiàn)有的資源進(jìn)行運(yùn)算。通過軟件調(diào)用,同一時刻只能有某個特定硬件資源工作,不能做到幾個硬件資源同時工作,例如某個時刻僅運(yùn)行乘法器做乘法運(yùn)算,某個時刻僅讀取RAM……這樣,處理器硬件資源由于不能并行工作而無法發(fā)揮到最大的性能。根據(jù)大數(shù)運(yùn)算的需要,和處理器原有硬件資源的特點(diǎn),通過修改處理器,增加輔助邏輯的方法,讓大數(shù)計(jì)算時,處理器的硬件資源發(fā)揮最大性能。這樣僅添加少量硬件、增加少量成本,即可顯著提高大數(shù)計(jì)算性能,從而達(dá)到最佳的性價比。
發(fā)明內(nèi)容
本發(fā)明的目的正是要解決上述技術(shù)存在的不足,而提供一種軟硬件結(jié)合加速器及其實(shí)現(xiàn)方法,采用軟硬件結(jié)合方法實(shí)現(xiàn)大數(shù)的乘、除運(yùn)算,僅增加少量成本就能達(dá)到較高的性能,可以達(dá)到成本性能之間的平衡。本發(fā)明解決其技術(shù)問題采用的技術(shù)方案這種軟硬件結(jié)合加速器,在處理器上增加連接有大數(shù)乘法加速器,大數(shù)乘法加速器中增加硬件邏輯從高速RAM將數(shù)據(jù)裝載入單周期乘法器,增加硬件邏輯將乘法結(jié)果和目標(biāo)高速RAM中數(shù)據(jù)相加,再輸出到目標(biāo)高速RAM 中。
本發(fā)明所述的軟硬件結(jié)合加速器的實(shí)現(xiàn)方法,具體如下
(1)、長度η的大數(shù)A{A[n-l]……A[2]A[1]A
},長度m的大數(shù)B{B[m_l]…… B[2]B[1]B
}相乘。將大數(shù)B中B
和大數(shù)A相乘,得到長度n+1的中間結(jié)果大數(shù){C[η]
……C [2]
C [1]
C
},重復(fù)上述過程,將B [1]、Β [2]……B [m_l],分別和大數(shù)A 相乘,總計(jì)得到m個中間結(jié)果大數(shù);最終將這些中間結(jié)果分別左移,相加,最終得到一個長度m+n的結(jié)果大數(shù);
O)、大數(shù)乘法加速器中增加硬件邏輯從高速RAM將數(shù)據(jù)裝載入單周期乘法器,增加硬件邏輯將乘法結(jié)果和目標(biāo)高速RAM中數(shù)據(jù)相加,再輸出到目標(biāo)高速RAM中;
(3)、在單周期乘法器運(yùn)行時,讀取下一次乘法運(yùn)算數(shù)據(jù),同時讀取目標(biāo)RAM數(shù)據(jù), 每次運(yùn)算平均需要乘法1個周期,加法和寫回目標(biāo)RAM數(shù)據(jù)1個周期,每次2個周期。
所述的單周期乘法器,在單周期內(nèi)完成一個32bit*32bit的乘法,但是結(jié)果輸出需要2個周期;所述的高速RAM,在單周期內(nèi)完成一次讀操作,或者一次寫操作。
本發(fā)明有益的效果是本發(fā)明中提出了一種軟硬件結(jié)合實(shí)現(xiàn)大數(shù)計(jì)算的方法。在充分利用處理器現(xiàn)有硬件資源的基礎(chǔ)上,僅增加少量硬件資源,處理大數(shù)計(jì)算最耗時部分, 其他部分由軟件完成。這樣在成本僅略有增加的情況下,大幅提高大數(shù)計(jì)算的速度,從而達(dá)到了成本和性能上的平衡。從而適合嵌入式、對成本要求比較嚴(yán)格的場合使用。
圖1為軟件方式進(jìn)行大數(shù)運(yùn)算的示意圖
圖2為硬件方式進(jìn)行大數(shù)運(yùn)算的示意圖
圖3為本發(fā)明進(jìn)行大數(shù)運(yùn)算的示意圖4為大數(shù)乘法原理示意圖5為n*l大數(shù)乘法原理示意圖6為n*l大數(shù)乘法加速器工作示意圖
圖7為10進(jìn)制乘法示意圖8為現(xiàn)有技術(shù)的處理器結(jié)構(gòu);
圖9為本發(fā)明的處理器結(jié)構(gòu)。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步說明
一個大數(shù)乘法加速器實(shí)現(xiàn)的例子
1、大數(shù)乘法計(jì)算原理
總所周知普通10進(jìn)制乘法我們可以采用豎式乘法(圖7),大數(shù)乘法計(jì)算方法的原理和普通10進(jìn)制乘法原理一致,也可以采用豎式乘法的方式(圖4);
如大數(shù)A有η個32bit,則稱大數(shù)A長度n,長度η的大數(shù)A{Α[η_1]……Α[2]Α[1] A
},長度m的大數(shù)B {B [m-1]……B [2] B [1] B W]}相乘。將大數(shù)B中_和大數(shù)A相乘, 得到長度n+1的中間結(jié)果大數(shù){C[η]
……C[2]
C[1]
C
},重復(fù)上述過程,將 B[1]、B[2]……B [m-1],分別和大數(shù)A相乘,總計(jì)得到m個中間結(jié)果大數(shù)。最終將這些中間結(jié)果分別左移,相加,最終得到一個長度m+n的結(jié)果大數(shù)。
2、實(shí)際處理器擁有資源1)單周期乘法器,可在單周期內(nèi)完成一個32bit*32bit的乘法,但是結(jié)果輸出需要2個周期。2)高速RAM,可在單周期內(nèi)完成一次讀操作,或者一次寫操作。3、計(jì)算量分析如果m和η均為32,處理器字長為32bit,上述計(jì)算,總計(jì)大約需要IOM次乘法, 2080次加法,每次運(yùn)算需要輸入2個數(shù)據(jù),耗時2個周期、保存1個數(shù)據(jù),耗時1個周期,每次乘法運(yùn)算完成得到結(jié)果需要2個周期,每次乘法運(yùn)算需要1個周期,每次加法運(yùn)算需要1 個周期,這樣最少需要10 * (2+1+2+1)+2080* 0+1+1) = 14464個周期。4、大數(shù)乘法加速器設(shè)計(jì)原理處理器乘法運(yùn)算速度很快只需要1個周期,但是乘法結(jié)果輸出卻需要2個周期,每次乘法、加法進(jìn)行輸入輸入需要1個周期,輸出數(shù)據(jù)需要1個周期,實(shí)際運(yùn)算外消耗時間比運(yùn)算時間還要多。這樣設(shè)計(jì)大數(shù)乘法加速器增加硬件邏輯自動從高速RAM將數(shù)據(jù)裝載入單周期乘法器。增加硬件邏輯自動將乘法結(jié)果和目標(biāo)高速RAM中數(shù)據(jù)相加,再輸出到目標(biāo)高速RAM 中。(圖8、圖9)在乘法器運(yùn)行時,可以讀取下一次乘法運(yùn)算數(shù)據(jù),同時讀取目標(biāo)RAM數(shù)據(jù),這樣每次運(yùn)算平均僅需要乘法1個周期,加法和寫回目標(biāo)RAM數(shù)據(jù)1個周期,每次2個周期。這樣 m和η均為32bit,一次大數(shù)乘法大約要32*32*2 = 2048個周期。僅為軟件計(jì)算理論周期數(shù)的14. 16%,計(jì)算速度大為提升。下面演示長度η的乘數(shù)A和長度1的乘數(shù)B相乘,加速器具體工作方式記長度η的乘數(shù)Α,每32bit數(shù)據(jù)為A W]、A[l]、A[2]……A[n_l],長度1的乘數(shù) B,數(shù)據(jù)為B
。A放置在高速RAM地址A中,B放置在高速RAM地址B中,相乘結(jié)果C,長度為(n+1),每32bit數(shù)據(jù)為C
、C[l]、C[2]……C[η]放置在高速RAM地址C中。如圖6,第3個周期得到結(jié)果以0],第5個周期得到結(jié)果C[l],第7個周期將得到 C[2]……5、大數(shù)乘法加速器優(yōu)點(diǎn)分析1)充分利用了 CPU的原有資源,單周期32bit乘法器、高速RAM,僅增加了 3個 RAM讀取邏輯,1個RAM寫入邏輯,1個加法邏輯,需要的硬件資源非常少??偹苤瑔沃芷?2bit乘法器、高速RAM需要的硬件資源是遠(yuǎn)大于加法邏輯和讀寫邏輯的。最終該加速器設(shè)計(jì)僅使用5千門左右,而硬件方式實(shí)現(xiàn)需要8萬門左右。2)對CPU改動比較少,僅添加一些新的控制邏輯,不影響CPU原有邏輯的使用。通過分析,找到大數(shù)運(yùn)算最耗時部分。添加輔助硬件邏輯,充分利用處理器已有硬件資源,將該最耗時部分運(yùn)算實(shí)現(xiàn),從而大幅度提高大數(shù)運(yùn)算性能。同時成本僅略微增加。除上述實(shí)施例外,本發(fā)明還可以有其他實(shí)施方式。凡采用等同替換或等效變換形成的技術(shù)方案,均落在本發(fā)明要求的保護(hù)范圍。
權(quán)利要求
1.一種軟硬件結(jié)合加速器,其特征在于在處理器上增加連接有大數(shù)乘法加速器,大數(shù)乘法加速器中增加硬件邏輯從高速RAM將數(shù)據(jù)裝載入單周期乘法器,增加硬件邏輯將乘法結(jié)果和目標(biāo)高速RAM中數(shù)據(jù)相加,再輸出到目標(biāo)高速RAM中。
2.一種采用如權(quán)利要求1所述的軟硬件結(jié)合加速器的實(shí)現(xiàn)方法,其特征在于(1)、長度η的大數(shù)A{A[n-l]……A[2]A[1]A
},長度m的大數(shù)B{B[m_l]……B[2]B[1] B
}相乘。
3.將大數(shù)B中B
和大數(shù)A相乘,得到長度n+1的中間結(jié)果大數(shù){C[η]
……C[2]
C[1]
C
},重復(fù)上述過程,將B[1]、B[2]……B[m_l],分別和大數(shù)A相乘,總計(jì)得到m個中間結(jié)果大數(shù);最終將這些中間結(jié)果分別左移,相加,最終得到一個長度m+n的結(jié)果大數(shù);(2)、大數(shù)乘法加速器中增加硬件邏輯從高速RAM將數(shù)據(jù)裝載入單周期乘法器,增加硬件邏輯將乘法結(jié)果和目標(biāo)高速RAM中數(shù)據(jù)相加,再輸出到目標(biāo)高速RAM中;(3 )、在單周期乘法器運(yùn)行時,讀取下一次乘法運(yùn)算數(shù)據(jù),同時讀取目標(biāo)RAM數(shù)據(jù),每次運(yùn)算平均需要乘法1個周期,加法和寫回目標(biāo)RAM數(shù)據(jù)1個周期,每次2個周期。
4.根據(jù)權(quán)利要求1所述的軟硬件結(jié)合加速器的實(shí)現(xiàn)方法,其特征在于所述的單周期乘法器,在單周期內(nèi)完成一個32bit*32bit的乘法,但是結(jié)果輸出需要2個周期;所述的高速RAM,在單周期內(nèi)完成一次讀操作,或者一次寫操作。
全文摘要
本發(fā)明涉及一種軟硬件結(jié)合加速器及其實(shí)現(xiàn)方法,在處理器上增加連接有大數(shù)乘法加速器,大數(shù)乘法加速器中增加硬件邏輯從高速RAM將數(shù)據(jù)裝載入單周期乘法器,增加硬件邏輯將乘法結(jié)果和目標(biāo)高速RAM中數(shù)據(jù)相加,再輸出到目標(biāo)高速RAM中。在單周期乘法器運(yùn)行時,讀取下一次乘法運(yùn)算數(shù)據(jù),同時讀取目標(biāo)RAM數(shù)據(jù),每次運(yùn)算平均需要乘法1個周期,加法和寫回目標(biāo)RAM數(shù)據(jù)1個周期,每次2個周期。本發(fā)明有益的效果是在充分利用處理器現(xiàn)有硬件資源的基礎(chǔ)上,僅增加少量硬件資源,處理大數(shù)計(jì)算最耗時部分,其他部分由軟件完成。這樣在成本僅略有增加的情況下,大幅提高大數(shù)計(jì)算的速度,從而達(dá)到了成本和性能上的平衡。
文檔編號G06F7/575GK102520907SQ20111041406
公開日2012年6月27日 申請日期2011年12月13日 優(yōu)先權(quán)日2011年12月13日
發(fā)明者徐功益, 楊波, 賀曉明, 邱柏云 申請人:杭州晟元芯片技術(shù)有限公司