專利名稱::用于soc的加解密協(xié)處理器、其實(shí)現(xiàn)方法及編程模型的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種超大規(guī)模數(shù)字集成電路(VLSI),特別是涉及一種在超大規(guī)模數(shù)字芯片中適用于SOC(systemonachip芯片上的系統(tǒng))設(shè)計(jì)集成的加密解密協(xié)處理器。本發(fā)明還涉及該協(xié)處理器的實(shí)現(xiàn)方法及用于該方法的編程模型。
背景技術(shù):
:目前國內(nèi)在這一領(lǐng)域沒有類似專利。國外這一領(lǐng)域的專利多專注于特定加密解密算法的特定實(shí)現(xiàn)(高速實(shí)現(xiàn),低功耗實(shí)現(xiàn)等)。這些專利的特點(diǎn)是專用性強(qiáng),速度快,但一種硬件結(jié)構(gòu)只能用于一種或兩種算法(如DES,RSA,ECC等),適合用于實(shí)時(shí)性要求非常強(qiáng)的情況。目前這一領(lǐng)域中大多數(shù)S0C芯片的實(shí)現(xiàn)均采用一個(gè)硬件IP(硬件知識(shí)產(chǎn)權(quán)模塊)或協(xié)處理器實(shí)現(xiàn)一種加密解密算法的架構(gòu),這樣導(dǎo)致芯片面積增大,功耗增大。而且值得注意的是,這些IP大多從不同的第三方IP供應(yīng)商購買而來,而這些供應(yīng)商為了商業(yè)目的,會(huì)將這些IP的性能目標(biāo)定在業(yè)界所知的最高性能。但是,目前大多數(shù)應(yīng)用場合都不需要如此高速的實(shí)現(xiàn),需要的是中等速度,更加靈活(可配置)和更加經(jīng)濟(jì)(節(jié)省硅片面積)的實(shí)現(xiàn)。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提供一種適用于S0C設(shè)計(jì)的加解密協(xié)處理器,它更加靈活、經(jīng)濟(jì),能以中等速度實(shí)現(xiàn)大多數(shù)已知加密解密算法,并能滿足大多數(shù)SOC芯片設(shè)計(jì)的要求;為此,本發(fā)明還要提供一種該協(xié)處理器的實(shí)現(xiàn)方法及用于該方法的編程模型。為解決上述技術(shù)問題,本發(fā)明的適用于S0C設(shè)計(jì)的加解密協(xié)處理器包括,總線接口和配置寄存器,連接通用CPU總線,該總線接口接收來自通用CPU總線的讀寫命令,對(duì)其進(jìn)行解釋并讀寫相應(yīng)的配置寄存器;中央控制模塊,用于控制所述總線接口所接收的讀寫命令及觸發(fā)所述協(xié)處理器相應(yīng)動(dòng)作的開始、執(zhí)行和結(jié)束;32位ALU和桶式移位器,其中,32位ALU執(zhí)行微碼當(dāng)中的通用指令;桶式移位器執(zhí)行微碼當(dāng)中的移位和旋轉(zhuǎn)指令;256位位處理器,執(zhí)行加密算法和數(shù)字簽名算法中常用的哈希算法;256位位排序器,執(zhí)行對(duì)稱加密算法中常用的數(shù)據(jù)洗牌算法;所述的256位位排序器不能做任意的比特排序,只能執(zhí)行所有預(yù)定義的比特排序模式;32位乘法,乘累加和域乘法器,在一個(gè)時(shí)鐘周期內(nèi)完成32位乘法、乘累加或GP域乘法;所述的32位乘法、乘累加和域乘法器集成為一個(gè)整體,在一個(gè)時(shí)鐘周期內(nèi)完成32位乘法,乘累加或GP域乘法;其中,在執(zhí)行RSA算法時(shí),使用乘法和乘累加功能;在執(zhí)行ECC算法時(shí),使用GP域乘法功能;內(nèi)部總線,256比特,進(jìn)行所述協(xié)處理器的內(nèi)部信息傳輸;包括數(shù)據(jù)輸入總線256位、數(shù)據(jù)輸出總線256位、數(shù)據(jù)地址總線16位、代碼輸出總線256位、代碼地址總線16位,控制信號(hào)包括CS、RW和SEL;數(shù)據(jù)緩沖器,作為外部系統(tǒng)內(nèi)存和所述協(xié)處理器之間的緩沖和高速緩沖存儲(chǔ)器;寄存器文件,進(jìn)行數(shù)據(jù)的暫存和快速的存?。籇MA控制器,連接第二通用CPU總線,在所述中央控制模塊控制下進(jìn)行數(shù)據(jù)處理。所述的用于SOC的加解密協(xié)處理器的方法,包括如下步驟在PC或工作站上進(jìn)行軟件開發(fā),將各種常用的加解密算法中運(yùn)算量最大的算子識(shí)別出來,并使用所述協(xié)處理器的微碼對(duì)這些算子進(jìn)行實(shí)現(xiàn);系統(tǒng)軟件通過一個(gè)C語言庫函數(shù)的調(diào)用運(yùn)行該算子;使用C語言實(shí)現(xiàn)加解密算法的控制邏輯和輸入輸出,其中通過C語言庫函數(shù)調(diào)用各種加速算子;實(shí)現(xiàn)所述協(xié)處理器的中斷處理程序,以處理各種協(xié)處理器通知。所述的協(xié)處理器的編程模型如下命令寄存器寄存器地址0;寄存器性質(zhì),只寫;寫入?yún)f(xié)處理器命令,該命令包括開始,即開始執(zhí)行配置的算子,終止,即終止正在執(zhí)行的算子,査詢,即査詢正在執(zhí)行算子的狀態(tài),并反映至狀態(tài)寄存器;狀態(tài)寄存器寄存器地址4;寄存器性質(zhì),只讀;反映協(xié)處理器狀態(tài),包括運(yùn)行狀態(tài),出錯(cuò)狀態(tài);中斷寄存器寄存器地址8;寄存器性質(zhì),讀寫;反映協(xié)處理器中斷狀態(tài),寫入l則清除相應(yīng)中斷比特;中斷使能寄存器寄存器地址12;寄存器性質(zhì),讀寫;比特為1則屏蔽相應(yīng)中斷;代碼寄存器寄存器地址16;寄存器性質(zhì),讀寫;存儲(chǔ)輸入微碼塊首地址的物理地址,DMA控制器從這里取數(shù)據(jù);輸入寄存器A:寄存器地址20;寄存器性質(zhì),讀寫;存儲(chǔ)輸入數(shù)據(jù)A的物理地址,DMA控制器從這里取數(shù)據(jù);輸入寄存器B:寄存器地址24;寄存器性質(zhì),讀寫;存儲(chǔ)輸入數(shù)據(jù)B的物理地址,DMA控制器從這里取數(shù)據(jù);輸出寄存器寄存器地址28;寄存器性質(zhì),讀寫;存儲(chǔ)輸出數(shù)據(jù)的物理地址,DMA控制器往這里寫數(shù)據(jù);上述寄存器均為32位。采用本發(fā)明的適用于soc設(shè)計(jì)的加解密協(xié)處理器,能夠更加靈活和經(jīng)濟(jì)的實(shí)現(xiàn)加密解密協(xié)處理器,并以中等速度實(shí)現(xiàn)大多數(shù)已知加密解密算法,滿足大多數(shù)SOC芯片設(shè)計(jì)的要求;而且硬件規(guī)模小,功耗更低。下面結(jié)合附圖與具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明附圖是本發(fā)明的原理框圖。具體實(shí)施例方式如圖所示,本發(fā)明的適用于SOC設(shè)計(jì)的加解密協(xié)處理器包括總線接口和配置寄存器、中央控制模塊、32位ALU(運(yùn)算器)和桶式移位器、256位位處理器、256位位排序器、32位乘法,乘累加和域乘法器、內(nèi)部總線、數(shù)據(jù)緩沖器、寄存器文件、DMA(直接數(shù)據(jù)傳輸)控制器。所述的總線接口(即協(xié)處理器接口)和配置寄存器,連接通用CPU(中央處理器)總線。該通用CPU總線包括數(shù)據(jù)輸入總線32位、數(shù)據(jù)輸出總線32位、地址總線32位,控制信號(hào)包括CS(片選)、RW(讀寫)、INT(中斷)和SEL(數(shù)據(jù)粒度)。該通用CPU總線可以很容易的與各種流行的CPU總線架構(gòu)相連接,如ARM公司的AHB和APB、OpenCore組織的WISHBONE和IBM的OPB等等。所述的總線接口接收來自所述的通用CPU總線的讀寫命令,對(duì)其進(jìn)行解釋并讀寫相應(yīng)的配置寄存器。所述配置寄存器中包括數(shù)據(jù)寄存器、狀態(tài)寄存器和命令寄存器。數(shù)據(jù)寄存器只簡單的存儲(chǔ)各種參數(shù),狀態(tài)寄存器反映所述的協(xié)處理器當(dāng)前狀態(tài),而命令寄存器的讀寫則會(huì)觸發(fā)協(xié)處理器相應(yīng)的動(dòng)作。所述的中央控制模塊即中央控制邏輯和有限狀態(tài)機(jī)。所述總線接口接收來自通用CPU總線的讀寫命令,讀寫命令寄存器并觸發(fā)所述協(xié)處理器相應(yīng)的動(dòng)作;這些動(dòng)作的開始、執(zhí)行和結(jié)束,則由中央控制模塊控制。該中央控制模塊對(duì)上述動(dòng)作的控制過程如下所述中央控制模塊收到開始命令后,開始執(zhí)行命令包含的特定算法;如已有算法在執(zhí)行中,則不予執(zhí)行并返回出錯(cuò)代碼,CPU可通過狀態(tài)寄存器讀取出錯(cuò)代碼;所述中央控制模塊控制所述的DMA控制器從系統(tǒng)內(nèi)存讀取微碼和數(shù)據(jù)進(jìn)入微碼和數(shù)據(jù)緩沖器;所述中央控制模塊控制32位ALU,256位位處理器和256位位排序器等各種執(zhí)行模塊執(zhí)行微碼數(shù)據(jù)緩沖器中的代碼;算法執(zhí)行時(shí),所述中央控制模塊控制DMA控制器將中間結(jié)果寫入系統(tǒng)內(nèi)存;算法執(zhí)行完畢后,所述中央控制模塊控制DMA控制器將最終結(jié)果寫入系統(tǒng)內(nèi)存,并觸發(fā)中斷通知CPU。所述的32位ALU和桶式移位器中,32位ALU執(zhí)行微碼當(dāng)中的通用指令,如加法、減法、位或、位與、異或和跳轉(zhuǎn)等運(yùn)算;桶式移位器執(zhí)行微碼當(dāng)中的左移、右移和旋轉(zhuǎn)等指令。256位位處理器,執(zhí)行各種加密算法和數(shù)字簽名算法(例如SHA1,SHA256,MD5等算法)中常用的哈希算法(如MD5、SHA1)。256位位排序器,執(zhí)行各種對(duì)稱加密算法(例如DES,3DES等算法)中常用的數(shù)據(jù)洗牌算法(如DES、MD5、SHA1)。該位排序器可以在一個(gè)時(shí)鐘周期內(nèi)完成CPU要耗費(fèi)數(shù)百時(shí)鐘周期的運(yùn)算。值得指出的是,該位排序器并不能做任意的比特排序,只能執(zhí)行所有預(yù)定義的比特排序模式,否則硬件邏輯過大,導(dǎo)致不必要的硬件和功耗的浪費(fèi)。32位乘法、乘累加和域乘法器。各種通用CPU在作32位乘法時(shí)往往效率極低,而32位乘法在加密解密運(yùn)算中是極為重要的,它直接影響到運(yùn)算的執(zhí)行效率,尤其對(duì)RSA和ECC等非對(duì)稱加密算法的影響極為巨大。因此一個(gè)速度較快的32位乘法器是必須的。在本發(fā)明中將32位乘法、乘累加和域乘法器集成在一起,節(jié)省了芯片面積,降低了芯片功耗。該32位乘法、乘累加和域乘法器可以在一個(gè)時(shí)鐘周期內(nèi)完成32位乘法,乘累加或GP域乘法,大大提高了RSA和ECC等非對(duì)稱加密算法的執(zhí)行效率。在執(zhí)行RSA算法時(shí),將主要使用所述32位乘法、乘累加和域乘法器的乘法和乘累加功能;在執(zhí)行ECC算法時(shí),將主要使用所述32位乘法、乘累加和域乘法器的GP域乘法功能。所述的內(nèi)部總線(即所述協(xié)處理器的內(nèi)部總線),為256比特。包括數(shù)據(jù)輸入總線256位、數(shù)據(jù)輸出總線256位、數(shù)據(jù)地址總線16位、代碼輸出總線256位、代碼地址總線16位,控制信號(hào)包括CS(片選),RW(讀寫)和SEL(數(shù)據(jù)粒度)。所述內(nèi)部總線256比特的超大帶寬使得內(nèi)部數(shù)據(jù)的傳輸速度大大提高;使得內(nèi)部數(shù)據(jù)的計(jì)算和傳輸都以256位的數(shù)據(jù)粒度進(jìn)行成為可能。所述的數(shù)據(jù)緩沖器,為8塊32位SRAM(靜態(tài)隨機(jī)存儲(chǔ)器)和緩沖器控制邏輯所組成。它的作用是充當(dāng)外部系統(tǒng)內(nèi)存和所述協(xié)處理器之間的緩沖和高速緩沖存儲(chǔ)器。這樣各種加密解密運(yùn)算可以直接運(yùn)算在緩沖的數(shù)據(jù)上,而不必去等待存取速度慢的外部系統(tǒng)內(nèi)存了。并且所述的數(shù)據(jù)緩沖器有兩個(gè)讀口,一個(gè)寫口,可以同時(shí)進(jìn)行數(shù)據(jù)的讀寫。一邊為各個(gè)運(yùn)算模塊提供數(shù)據(jù),一邊接受DMA控制器寫入的數(shù)據(jù)。各個(gè)S0C實(shí)現(xiàn)可以選用大小不一的數(shù)據(jù)緩沖器,以實(shí)現(xiàn)性能和芯片面積之間的權(quán)衡。優(yōu)選每塊SRAM為4K字節(jié)以上大小。所述的微碼緩沖器為4塊32位SRAM和緩沖器控制邏輯所組成。它的作用是充當(dāng)外部系統(tǒng)內(nèi)存和協(xié)處理器之間的代碼緩沖和代碼Cache。這樣協(xié)處理器可以每個(gè)時(shí)鐘周期讀取并執(zhí)行一條指令,減少了等待時(shí)間。256位的代碼寬度使得各個(gè)執(zhí)行模塊可以并行進(jìn)行運(yùn)算,大大減少了算法的執(zhí)行時(shí)間。該微碼緩沖器有-一個(gè)讀口,一個(gè)寫口,可以同時(shí)進(jìn)行代碼的讀寫。-邊為各個(gè)運(yùn)算模塊提供代碼,一邊接受DMA控制器從外部系統(tǒng)內(nèi)存載入的數(shù)據(jù)。各個(gè)soc實(shí)現(xiàn)可以選用大小不一的代碼緩沖器,以實(shí)現(xiàn)性能和芯片面積之間的權(quán)衡。優(yōu)選每塊SRAM為4K字節(jié)以上大小。所述的寄存器文件由A、B兩個(gè)寄存器堆組成。每個(gè)寄存器堆由8個(gè)32比特的寄存器組成。每個(gè)寄存器可以單獨(dú)尋址,也可結(jié)隊(duì)尋址,直接提供256比特的操作數(shù)。寄存器文件的存在是為了數(shù)據(jù)的暫存和快速的存取。所述的DMA控制器連接第二通用CPU總線,并且為主設(shè)備。該第二通用CPU總線具有數(shù)據(jù)輸入總線32位,數(shù)據(jù)輸出總線32位,地址總線32位,控制信號(hào)包括CS(片選),RW(讀寫),INT(中斷)和SEL(數(shù)據(jù)粒度)。該第二通用CPU總線也可以很容易的與各種流行的CPU總線架構(gòu)相連接,如ARM公司的AHB和APB、OpenCore組織的WISHBONE和IBM的OPB等等。該第二通用CPU總線一般要接入SOC系統(tǒng)中的總線仲裁器,與其他主設(shè)備競爭總線。所述的第二通用CPU總線為DMA總線,即系統(tǒng)主總線,總線格式與總線接口所述的通用CPU總線相同,但數(shù)據(jù)流方向相反??偩€接口所述的通用CPU總線是系統(tǒng)傳輸命令和數(shù)據(jù)給協(xié)處理器(協(xié)處理器被動(dòng)接受),而所述的第二通用CPU總線則主動(dòng)從協(xié)處理器傳輸命令和數(shù)據(jù)給系統(tǒng)。所述的DMA控制器在中央控制模塊的控制下將執(zhí)行以下操作將數(shù)據(jù)從外部內(nèi)存載入到內(nèi)部數(shù)據(jù)緩存;將數(shù)據(jù)寫出到外部內(nèi)存;將數(shù)據(jù)自動(dòng)刷新到外部內(nèi)存;將代碼從外部內(nèi)存載入到內(nèi)部代碼緩存;數(shù)據(jù)/代碼傳輸完畢后,通過中斷通知CPU或通知中央控制模塊。除所述的中央控制模塊和總線接口以外,本發(fā)明中的配置寄存器、32位ALU(運(yùn)算器)和桶式移位器、256位位處理器、256位位排序器、32位乘法,乘累加和域乘法器、內(nèi)部總線、數(shù)據(jù)緩沖器、寄存器文件、DMA控制器,在空閑狀態(tài)時(shí)均可被中央控制模塊設(shè)置于省電模式,可以進(jìn)一步降低功耗。本發(fā)明所述的協(xié)處理器的整體實(shí)現(xiàn)實(shí)際上是通過軟硬件的劃分,將各種加密解密算法分解為各個(gè)硬件運(yùn)算單元,然后使用軟件(微代碼)控制和調(diào)度各個(gè)硬件運(yùn)算單元,進(jìn)一步達(dá)到控制協(xié)處理器運(yùn)行的目的。這樣系統(tǒng)CPU就可以動(dòng)態(tài)配置協(xié)處理器,可以將其配置成DES協(xié)處理器、RSA協(xié)處理器或ECC協(xié)處理器等等。在不使用所述的協(xié)處理器時(shí),還可以將協(xié)處理器使用的內(nèi)存釋放掉,不影響系統(tǒng)整體的運(yùn)行。'由于本發(fā)明所述的協(xié)處理器的設(shè)計(jì)方式為軟硬件結(jié)合,使用方式較為復(fù)雜,下面將詳細(xì)介紹該協(xié)處理器的具體實(shí)施方法。一般一個(gè)算法的實(shí)現(xiàn)包括一個(gè)或多個(gè)C語言程序和一個(gè)或多個(gè)實(shí)現(xiàn)了各種算子的微碼塊。C語言程序?qū)崿F(xiàn)算法的控制邏輯,包括循環(huán)和跳轉(zhuǎn)。各種算子的微碼則高效實(shí)現(xiàn)了數(shù)據(jù)通路的各種運(yùn)算。軟件和硬件配合高效實(shí)現(xiàn)了整個(gè)算法。本發(fā)明所述的協(xié)處理器的開發(fā)流程如下在PC或工作站上進(jìn)行軟件開發(fā),將各種常用的加解密算法中運(yùn)算量最大的算子識(shí)別出來,并使用所述協(xié)處理器的微碼對(duì)這些算子進(jìn)行實(shí)現(xiàn)。由于算法一般為循環(huán)執(zhí)行方式,一些關(guān)鍵操作或算子的執(zhí)行時(shí)間將占大部分算法的整體執(zhí)行時(shí)間,因此將這些算子使用所述協(xié)處理器進(jìn)行實(shí)現(xiàn),執(zhí)行速度將加快10到100倍不等。系統(tǒng)軟件可以通過一個(gè)c語言庫函數(shù)的調(diào)用運(yùn)行該算子。使用C語言實(shí)現(xiàn)加解密算法的控制邏輯和輸入輸出等,其中通過C語言庫函數(shù)調(diào)用各種加速算子。由于執(zhí)行當(dāng)中關(guān)鍵算子得到了加速,這種實(shí)現(xiàn)將比純軟件實(shí)現(xiàn)快1到2個(gè)數(shù)量級(jí)。實(shí)現(xiàn)所述協(xié)處理器的中斷處理程序,以處理各種協(xié)處理器通知,如操作完成,數(shù)據(jù)傳輸完成等等,配合算法實(shí)現(xiàn)函數(shù)完成整個(gè)算法。在各種算子微碼的二進(jìn)制實(shí)現(xiàn)完成后,就可以開始使用協(xié)處理器了。本發(fā)明所述的協(xié)處理器的使用流程如下將各種算子的微碼的二進(jìn)制實(shí)現(xiàn)和其他控制邏輯或操作系統(tǒng)代碼連接成最終的應(yīng)用程序并放置在SOC內(nèi)部的SRAM或ROM中,各微碼塊的首地址組成一張表。個(gè)別使用頻率不高的微碼塊還可以存放在磁盤或閃存上的文件中以節(jié)省內(nèi)存。各個(gè)算子的調(diào)用都遵循相同的過程,首先是算子配置過程,然后是算子使用過程。所述的配置過程如下:首先將要使用的算子微碼塊的首地址寫入?yún)f(xié)處理器的配置寄存器;然后將源操作數(shù)地址存入源操作數(shù)A和B的地址寄存器;最后將結(jié)果操作數(shù)地址存入結(jié)果操作數(shù)地址寄存器。所述的使用過程如下將開始命令寫入?yún)f(xié)處理器命令寄存器,命令協(xié)處理器開始工作;協(xié)處理器開始執(zhí)行微碼,操作各個(gè)執(zhí)行單元對(duì)數(shù)據(jù)進(jìn)行處理,將臨時(shí)結(jié)果寫出至數(shù)據(jù)緩沖器,最終結(jié)果序?qū)懗鲋镣獠績?nèi)存,快速實(shí)現(xiàn)算子;算子執(zhí)行完畢,協(xié)處理器通過中斷通知CPU運(yùn)算完畢;CPU得到通知,開始運(yùn)行下一個(gè)算子或結(jié)束整個(gè)算法。在S0C設(shè)計(jì)當(dāng)中,每個(gè)外設(shè)、IP或協(xié)處理器都有一個(gè)編程模型,即寄存器描述,作為軟件和硬件之間的接口。而且往往會(huì)被包裝為驅(qū)動(dòng)程序和驅(qū)動(dòng)程序庫,供上層軟件或操作系統(tǒng)使用。本發(fā)明也不例外,也有一個(gè)預(yù)定義的編程模型,該編程模型將為協(xié)處理器的C語言或匯編語言驅(qū)動(dòng)程序所使用。本發(fā)明所述的協(xié)處理器的編程模型(寄存器描述)如下表所示<table>complextableseeoriginaldocumentpage17</column></row><table>本發(fā)明中所述的所有元件均為通用元件,可以向ARM,MIPS等各個(gè)IP供應(yīng)商進(jìn)行購買。權(quán)利要求1、一種用于SOC的加解密協(xié)處理器,其特征在于包括,總線接口和配置寄存器,連接通用CPU總線,該總線接口接收來自通用CPU總線的讀寫命令,對(duì)其進(jìn)行解釋并讀寫相應(yīng)的配置寄存器;中央控制模塊,用于控制所述總線接口所接收的讀寫命令及觸發(fā)所述協(xié)處理器相應(yīng)動(dòng)作的開始、執(zhí)行和結(jié)束;32位ALU和桶式移位器,其中,32位ALU執(zhí)行微碼當(dāng)中的通用指令;桶式移位器執(zhí)行微碼當(dāng)中的移位和旋轉(zhuǎn)指令;256位位處理器,執(zhí)行加密算法和數(shù)字簽名算法中常用的哈希算法;256位位排序器,執(zhí)行對(duì)稱加密算法中常用的數(shù)據(jù)洗牌算法;所述的256位位排序器不能做任意的比特排序,只能執(zhí)行所有預(yù)定義的比特排序模式;32位乘法,乘累加和域乘法器,在一個(gè)時(shí)鐘周期內(nèi)完成32位乘法、乘累加或GP域乘法;所述的32位乘法、乘累加和域乘法器集成為一個(gè)整體,在一個(gè)時(shí)鐘周期內(nèi)完成32位乘法,乘累加或GP域乘法;其中,在執(zhí)行RSA算法時(shí),使用乘法和乘累加功能;在執(zhí)行ECC算法時(shí),使用GP域乘法功能;內(nèi)部總線,256比特,進(jìn)行所述協(xié)處理器的內(nèi)部信息傳輸;包括數(shù)據(jù)輸入總線256位、數(shù)據(jù)輸出總線256位、數(shù)據(jù)地址總線16位、代碼輸出總線256位、代碼地址總線16位,控制信號(hào)包括CS、RW和SEL;數(shù)據(jù)緩沖器,作為外部系統(tǒng)內(nèi)存和所述協(xié)處理器之間的緩沖和高速緩沖存儲(chǔ)器;寄存器文件,進(jìn)行數(shù)據(jù)的暫存和快速的存?。籇MA控制器,連接第二通用CPU總線,在所述中央控制模塊控制下進(jìn)行數(shù)據(jù)處理。2、根據(jù)權(quán)利要求1所述的用于S0C的加解密協(xié)處理器,其特征在于所述配置寄存器中包括數(shù)據(jù)寄存器、狀態(tài)寄存器和命令寄存器,其中,數(shù)據(jù)寄存器存儲(chǔ)各種參數(shù),狀態(tài)寄存器反映所述的協(xié)處理器當(dāng)前狀態(tài),命令寄存器的讀寫則觸發(fā)所述的協(xié)處理器相應(yīng)的動(dòng)作。3、根據(jù)權(quán)利要求1或2所述的用于S0C的加解密協(xié)處理器,其特征在于所述的中央控制模塊的控制過程如下所述中央控制模塊收到開始命令后,開始執(zhí)行命令包含的特定算法;如已有算法在執(zhí)行中,則不予執(zhí)行并返回出錯(cuò)代碼,CPU通過狀態(tài)寄存器讀取出錯(cuò)代碼;控制所述的DMA控制器從系統(tǒng)內(nèi)存讀取微碼和數(shù)據(jù)進(jìn)入微碼和數(shù)據(jù)緩沖器;控制各種執(zhí)行模塊執(zhí)行微碼數(shù)據(jù)緩沖器中的代碼;當(dāng)算法執(zhí)行時(shí),控制DMA控制器將中間結(jié)果寫入系統(tǒng)內(nèi)存;當(dāng)算法執(zhí)行完畢后,控制DMA控制器將最終結(jié)果寫入系統(tǒng)內(nèi)存,并觸發(fā)中斷通知CPU。4、根據(jù)權(quán)利要求1所述的用于S0C的加解密協(xié)處理器,其特征在于:所述的數(shù)據(jù)緩沖器由8塊32位SRAM和緩沖器控制邏輯所組成,該數(shù)據(jù)緩沖器有兩個(gè)讀口、-一個(gè)寫口,同時(shí)進(jìn)行數(shù)據(jù)的讀寫;所述SRAM每塊大于4K字節(jié)。5、根據(jù)權(quán)利要求1所述的用于S0C的加解密協(xié)處理器,其特征在于:所述的微碼緩沖器由4塊32位SRAM和緩沖器控制邏輯組成;該微碼緩沖器有一個(gè)讀口,一個(gè)"口,同時(shí)進(jìn)行代碼的讀寫;所述SRAM每塊大于4K字節(jié)。6、根據(jù)權(quán)利要求1所述的用于S0C的加解密協(xié)處理器,其特征在于:所述的寄存器文件由A、B兩個(gè)寄存器堆組成,每個(gè)寄存器堆由8個(gè)32比特的寄存器組成;每個(gè)寄存器單獨(dú)尋址或結(jié)隊(duì)尋址,直接提供256比特的操作數(shù)。7、根據(jù)權(quán)利要求1所述的用于SOC的加解密協(xié)處理器,其特征在于所述的DMA控制器執(zhí)行以下操作將數(shù)據(jù)從外部內(nèi)存載入到內(nèi)部數(shù)據(jù)緩存;將數(shù)據(jù)寫出到外部內(nèi)存;將數(shù)據(jù)自動(dòng)刷新到外部內(nèi)存;將代碼從外部內(nèi)存載入到內(nèi)部代碼緩存;數(shù)據(jù)/代碼傳輸完畢后,通過中斷通知CPU或通知中央控制模塊。8、根據(jù)權(quán)利要求1所述的用于SOC的加解密協(xié)處理器,其特征在于所述的配置寄存器、32位ALU和桶式移位器、256位位處理器、256位位排序器、32位乘法,乘累加和域乘法器、內(nèi)部總線、數(shù)據(jù)緩沖器、寄存器文件、DMA控制器,在空閑狀態(tài)時(shí)被中央控制模塊設(shè)置于省電模式。9、根據(jù)權(quán)利要求1所述的用于S0C的加解密協(xié)處理器,其特征在于:在不使用所述的協(xié)處理器時(shí),將該協(xié)處理器使用的內(nèi)存釋放掉。10、一種實(shí)現(xiàn)權(quán)利要求1所述的用于S0C的加解密協(xié)處理器的方法,其特征在于在PC或工作站上進(jìn)行軟件開發(fā),將各種常用的加解密算法中運(yùn)算量最大的算子識(shí)別出來,并使用所述協(xié)處理器的微碼對(duì)這些算子進(jìn)行實(shí)現(xiàn);系統(tǒng)軟件通過一個(gè)C語言庫函數(shù)的調(diào)用運(yùn)行該算子;使用C語言實(shí)現(xiàn)加解密算法的控制邏輯和輸入輸出,其中通過C語言庫函數(shù)調(diào)用各種加速算子;實(shí)現(xiàn)所述協(xié)處理器的中斷處理程序,以處理各種協(xié)處理器通知。11、如權(quán)利要求10所述的方法,其特征在于所述的協(xié)處理器的使用流程如下將各種算子的微碼實(shí)現(xiàn)連接,進(jìn)入應(yīng)用程序并放置在S0C內(nèi)部的SRAM或R0M中,各微碼塊的首地址組成一張表;各個(gè)算子的調(diào)用都遵循相同的過程,首先是算子配置過程,然后是算子使用過程;所述的算子配置過程如下首先將要使用的算子微碼塊的首地址寫入?yún)f(xié)處理器的配置寄存器;然后將源操作數(shù)地址存入源操作數(shù)A和B的地址寄存器;最后將結(jié)果操作數(shù)地址存入結(jié)果操作數(shù)地址寄存器;所述的算子使用過程如下將開始命令寫入?yún)f(xié)處理器命令寄存器,命令協(xié)處理器開始工作;協(xié)處理器通過DMA控制器將微碼和數(shù)據(jù)讀入微碼和數(shù)據(jù)緩沖器;協(xié)處理器開始執(zhí)行微碼,操作各個(gè)執(zhí)行單元對(duì)數(shù)據(jù)進(jìn)行處理,將臨時(shí)結(jié)果寫出至數(shù)據(jù)緩沖器,最終結(jié)果寫出至外部內(nèi)存,快速實(shí)現(xiàn)算子;算子執(zhí)行完畢,協(xié)處理器通過中斷通知CPU運(yùn)算完畢;CPU得到通知,開始運(yùn)行下一個(gè)算子或結(jié)束整個(gè)算法。12、一種實(shí)現(xiàn)權(quán)利要求10所述方法的編程模型,其特征在于所述的協(xié)處理器的編程模型如下命令寄存器寄存器地址0;寄存器性質(zhì),只寫;寫入?yún)f(xié)處理器命令,該命令包括開始,即開始執(zhí)行配置的算子,終止,即終止正在執(zhí)行的算子,査詢,即杳詢正在執(zhí)行算子的狀態(tài),并反映至狀態(tài)寄存器;狀態(tài)寄存器寄存器地址4;寄存器性質(zhì),只讀;反映協(xié)處理器狀態(tài),包括運(yùn)行狀態(tài),出錯(cuò)狀態(tài);中斷寄存器寄存器地址8;寄存器性質(zhì),讀寫;反映協(xié)處理器中斷狀態(tài),寫入1則清除相應(yīng)中斷比特;中斷使能寄存器寄存器地址12;寄存器性質(zhì),讀寫;比特為1則屏蔽相應(yīng)中斷;代碼寄存器寄存器地址16;寄存器性質(zhì),讀寫;存儲(chǔ)輸入微碼塊首地址的物理地址,DMA控制器從這里取數(shù)據(jù);輸入寄存器A:寄存器地址20;寄存器性質(zhì),讀寫;存儲(chǔ)輸入數(shù)據(jù)A的物理地址,DMA控制器從這里取數(shù)據(jù);輸入寄存器B:寄存器地址24;寄存器性質(zhì),讀寫;存儲(chǔ)輸入數(shù)據(jù)B的物理地址,DMA控制器從這里取數(shù)據(jù);輸出寄存器寄存器地址28;寄存器性質(zhì),讀寫;存儲(chǔ)輸出數(shù)據(jù)的物理地址,DMA控制器往這里寫數(shù)據(jù);上述寄存器均為32位。全文摘要本發(fā)明公開了一種用于SOC的加解密協(xié)處理器、其實(shí)現(xiàn)方法及編程模型??偩€接口連接通用CPU總線,接收來自通用CPU總線的讀寫命令;中央控制模塊用于控制總線接口所接收的讀寫命令及觸發(fā)所述協(xié)處理器相應(yīng)動(dòng)作的開始、執(zhí)行和結(jié)束;256位位處理器執(zhí)行加密算法和數(shù)字簽名算法中常用的數(shù)據(jù)檢索和哈希算法;DMA控制器連接第二通用CPU總線,在中央控制模塊控制下進(jìn)行數(shù)據(jù)處理。實(shí)現(xiàn)方法是通過軟硬件的劃分,將各種加密解密算法分解為各個(gè)硬件運(yùn)算單元,使用軟件控制和調(diào)度各個(gè)硬件運(yùn)算單元。編程模型即寄存器描述。本發(fā)明更加靈活、經(jīng)濟(jì),能以中等速度實(shí)現(xiàn)大多數(shù)已知加密解密算法,并能滿足大多數(shù)SOC芯片設(shè)計(jì)的要求。文檔編號(hào)G06F15/76GK101201811SQ200610119410公開日2008年6月18日申請(qǐng)日期2006年12月11日優(yōu)先權(quán)日2006年12月11日發(fā)明者張立軍,邊立劍申請(qǐng)人:邊立劍;張立軍