專利名稱:一種用于密碼學(xué)運算的微處理器內(nèi)核的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全領(lǐng)域的密碼學(xué)技術(shù),特別是用于密碼學(xué)運算 的微處理器內(nèi)核。
技術(shù)背景密碼學(xué)是現(xiàn)代信息技術(shù)中的一項基礎(chǔ)技術(shù),廣泛應(yīng)用于數(shù)據(jù)加密、 身份識別、電子交易等涉及信息安全的各個領(lǐng)域,高效、安全的密碼 學(xué)運算功能是組成一個安全系統(tǒng)的重要部件?;镜拿艽a學(xué)算法大致可以分為對稱密鑰算法(如DES和AES)、非對稱密鑰算法(如RSA 和ECC)、文摘算法(如MD5和SHA-1),這幾類算法在現(xiàn)代安全系統(tǒng) (例如公共密鑰架構(gòu),PKI)中都是必不可少的運算功能?,F(xiàn)有技術(shù)中, 一般的密碼學(xué)算法的共同特點是l)算法的程序規(guī) 模小,流程、結(jié)構(gòu)簡單,通常的算法都是以相同或相近的處理流程進 行若干次循環(huán)。2)算法的數(shù)據(jù)規(guī)模小,但訪問密度大。待處理的數(shù) 據(jù)一般為幾個至幾十個字,程序反復(fù)的對其讀取、運算和回寫。3) 算法中既會用到普通處理器的算術(shù)邏輯功能,例如加、減、移位、邏 輯等操作,同時也可能用到特定算法所要求的特殊運算功能。普通的 處理器指令都不直接提供特殊運算功能,而用硬件則非常容易實現(xiàn), 例如DES中的置位操作,用硬件實現(xiàn)只需若干連線,但用軟件實現(xiàn)則 需要大量的代碼。所以說,密碼學(xué)算法的軟件實現(xiàn)和硬件實現(xiàn)各有其 優(yōu)缺點。在軟件實現(xiàn)方式中,算法程序與系統(tǒng)的其它程序運行在同一個通 用的處理器上,其優(yōu)點是成本低(僅僅是密碼學(xué)軟件開發(fā)成本),程 序便于移植,便于實現(xiàn)多種算法,以及算法功能靈活(參數(shù)易于設(shè)置), 缺點是程序只能使用通用的指令,實現(xiàn)特殊運算功能代價大,而且一 條指令只能完成單一的功能,無法做到在硬件實現(xiàn)中常用的并行流水 線處理方式,因此運算速度低;同時,由于密碼學(xué)程序和其它程序運 行在同一處理器上,密鑰和數(shù)據(jù)都存儲在普通存儲器中,易于受到攻 擊,安全性低;另外也無法在嵌入式應(yīng)用中使用(如智能卡)。在硬件實現(xiàn)方式中,專用的硬件模塊實現(xiàn)所需的密碼學(xué)算法,可 以根據(jù)算法特點將若干子步驟進行并行和流水線處理,從而大大提供運算速度;同時密碼學(xué)運算是在硬件內(nèi)部完成,不易受到外部攻擊, 安全性高;缺點是硬件加速模塊通常只針對一種加密算法設(shè)計,而且 算法的參數(shù)不易改變(例如,對于RSA算法只能提供固定長度的運算), 缺乏靈活性和通用性。另外,當(dāng)需要多種算法就必須針對各種算法設(shè) 計各自的加速硬件,不同硬件內(nèi)的相同或相似功能難以共享,使得系 統(tǒng)的成本變高。發(fā)明內(nèi)容為了克服上述現(xiàn)有技術(shù)中的缺點,本發(fā)明的目的是提供一種用于 密碼學(xué)運算的微處理器內(nèi)核。它通過軟硬件結(jié)合的方式,既可以獲得 較高的運算速度,又能獲得算法功能的靈活性和通用性,具有成本低,
性能高,功能可配置,靈活通用的特點。為了達到上述發(fā)明目的,本發(fā)明的技術(shù)方案以如下方式實現(xiàn) 一種用于密碼學(xué)運算的微處理器內(nèi)核,它與程序存儲器及數(shù)據(jù)存儲器相互連接,用于加速密碼學(xué)的運算。其結(jié)構(gòu)特點是,它包括 指令寄存器,存儲當(dāng)前執(zhí)行的程序指令字并將指令發(fā)送給指令譯碼單元;指令譯碼單元,譯碼并執(zhí)行指令寄存器中的程序指令字,生成對 微處理器內(nèi)核中各部分電路的控制信號;寄存器堆,包括程序計數(shù)器、堆棧指針、數(shù)據(jù)指針、加速模塊指 針、數(shù)據(jù)寄存器、索引寄存器、比較寄存器和位寄存器;數(shù)據(jù)運算單元,對寄存器堆中的寄存器進行各種運算操作;程序地址產(chǎn)生單元,產(chǎn)生下一條程序指令在程序存儲器中的存儲 地址;程序存儲器接口,實現(xiàn)指令寄存器或數(shù)據(jù)寄存器從程序存儲器的 數(shù)據(jù)讀??;數(shù)據(jù)存儲器接口 ,實現(xiàn)數(shù)據(jù)寄存器和數(shù)據(jù)存儲器之間的數(shù)據(jù)交換; 密碼學(xué)加速模塊接口 ,實現(xiàn)數(shù)據(jù)寄存器和密碼學(xué)加速模塊之間的 數(shù)據(jù)交換;密碼學(xué)加速模塊,包含一個供DES程序調(diào)用的DES算法加速模塊, 實現(xiàn)DES算法硬件加速功能;還包含一個供AES算法程序調(diào)用的AES 算法加速模塊,實現(xiàn)AES算法硬件加速功能。在上述的微處理器內(nèi)核中,所述指令譯碼單元的子單元包括
程序控制子指令譯碼單元,譯碼并執(zhí)行掛起指令、絕對地址跳轉(zhuǎn) 指令、程序調(diào)用指令和程序返回指令;存儲器訪問子指令譯碼單元,譯碼并執(zhí)行存儲器讀子指令和存儲 器寫子指令;加速模塊訪問子指令譯碼單元,生成目標(biāo)地址,并將數(shù)據(jù)輸入到 相應(yīng)的加速模塊,將運算結(jié)果存儲到數(shù)據(jù)寄存器;寄存器拷貝子指令譯碼單元,執(zhí)行數(shù)據(jù)寄存器拷貝子指令、指針 拷貝子指令和索引拷貝子指令;算術(shù)邏輯子指令譯碼單元,對一個或兩個數(shù)據(jù)寄存器進行數(shù)學(xué)或 邏輯運算;索引更新子指令譯碼單元,對索引寄存器執(zhí)行清零、加一和減一 操作;條件跳轉(zhuǎn)子指令譯碼單元,判斷條件滿足時,跳轉(zhuǎn)到與下一條指 令的相對偏移量為指定值的地址,否則執(zhí)行下一條指令。上述各子指令譯碼單元采用并行工作方式,對一條指令中的各自 對應(yīng)的子指令同時譯碼,各子指令功能在同一個時鐘周期內(nèi)同時完成。本發(fā)明的結(jié)構(gòu)形式是一種硬件實現(xiàn)方案,但采用了軟件實現(xiàn)的思 想。其核心是一個針對密碼學(xué)算法特點特殊設(shè)計的處理器內(nèi)核,它可 以在一條指令中同時執(zhí)行諸如存儲器訪問、寄存器拷貝、算術(shù)邏輯運 算、循環(huán)變量遞增/遞減、條件判斷和跳轉(zhuǎn)等操作。這些密碼學(xué)算法 中最常用到的基本功能能夠以并行的方式執(zhí)行,使得算法可以采用流
水線的方式對數(shù)據(jù)進行處理。同時可以對不易于處理器指令實現(xiàn)的特 殊的運算功能設(shè)計專用的硬件加速模塊,處理器通過加速模塊接口訪 問其運算功能,這樣既擁有軟件實現(xiàn)的靈活性和通用性,又可獲得接 近硬件實現(xiàn)的速度。在具體實現(xiàn)時可以權(quán)衡硬件代價和速度要求,根 據(jù)系統(tǒng)的需求決定軟、硬件之間的功能分配。本發(fā)明由于處理器架構(gòu) 不是針對特定算法設(shè)計的,具有通用性,因此不同的應(yīng)用可以選擇配 置不同的軟件程序,使得系統(tǒng)集成非常方便。由于各個算法程序可以 共享處理器內(nèi)核和存儲器資源,并且擁有與系統(tǒng)其它部分統(tǒng)一的數(shù)據(jù) 交換接口,因此在多算法應(yīng)用中可以降低系統(tǒng)整體成本。同現(xiàn)有技術(shù) 相比,本發(fā)明提供了一種低成本,高性能,功能可配置,靈活通用的 支持多種密碼學(xué)功能的硬件實現(xiàn)方案,尤其適合于需要多種密碼學(xué)算 法的嵌入式應(yīng)用。下面結(jié)合附圖和具體實施方式
對本發(fā)明做進一步說明。 說明書附l是本發(fā)明的結(jié)構(gòu)連接示意圖 圖2是本發(fā)明指令譯碼單元的結(jié)構(gòu)連接示意圖; 圖3是本發(fā)明用于密碼學(xué)運算系統(tǒng)的連接示意圖;; 圖4是本發(fā)明與程序存儲器及數(shù)據(jù)存儲器的信號傳遞關(guān)系圖。
具體實施方式
參看
圖1和圖2,本發(fā)明包括指令寄存器11、指令譯碼單元12、 寄存器堆13、數(shù)據(jù)運算單元14、程序地址產(chǎn)生單元15、程序存儲器 接口 16、數(shù)據(jù)存儲器接口 17、密碼學(xué)加速模塊接口 18、包含DES密
碼學(xué)加速模塊191和AES密碼學(xué)加速模塊192的密碼學(xué)加速模塊19。 其中寄存器堆13中包含有程序計數(shù)器131、堆棧指針132、數(shù)據(jù)指針 133、加速模塊指針134、數(shù)據(jù)寄存器135、索引寄存器136、比較寄 存器137和位寄存器138。指令譯碼單元12中包含有程序控制子指 令譯碼單元121、存儲器訪問子指令譯碼單元122、加速模塊訪問子 指令譯碼單元123、寄存器拷貝子指令譯碼單元124、算術(shù)邏輯子指 令譯碼單元125、索引更新子指令譯碼單元126和條件跳轉(zhuǎn)子指令譯 碼單元127。將本發(fā)明應(yīng)用于密碼學(xué)運算系統(tǒng)中,采用型號為8051的主控制器 20通過共享數(shù)據(jù)存儲器3的方式進行程序調(diào)用和數(shù)據(jù)交互,同時主 控制器20還可以通過本發(fā)明微處理器內(nèi)核1的控制/狀態(tài)信號端口進 行直接控制,如圖3所示。本發(fā)明微處理器內(nèi)核1將地址和控制信號 信息傳輸給程序存儲器2及數(shù)據(jù)存儲器3,微處理器內(nèi)核1根據(jù)程序 存儲器2的內(nèi)容控制微處理器內(nèi)核1與數(shù)據(jù)存儲器3數(shù)據(jù)交互,如圖 4所示。本發(fā)明微處理器內(nèi)核1中各部分的工作原理如下指令寄存器11,通過程序存儲器接口 16實現(xiàn)與程序存儲器2之 間的通訊,輸入程序存儲器2中的程序指令,存儲當(dāng)前執(zhí)行的程序指 令字,并將指令發(fā)送給指令譯碼單元12。指令譯碼單元12,譯碼并執(zhí)行指令寄存器11中的程序指令字, 產(chǎn)生微處理器內(nèi)核1中各部分電路的各種控制信號,并將特定的控制 信號發(fā)送給寄存器堆13、數(shù)據(jù)運算單元14、通過密碼學(xué)加速模塊接
口 18送給密碼學(xué)加速模塊19、程序地址產(chǎn)生單元15、通過程序存儲器接口 16送給程序存儲器2和通過數(shù)據(jù)存儲器接口 17數(shù)據(jù)存儲器3。指令譯碼單元12將程序指令字分解成若千子指令分別由特定的子指 令譯碼單元121—127執(zhí)行。各子指令譯碼單元121—127采用并行工 作方式,對一條指令中各自對應(yīng)的子指令同時譯碼,除4條程序控制 指令外,各子指令功能在同一個時鐘周期內(nèi)同時完成。在一般的微處 理器設(shè)計中, 一條指令只能完成單一的功能,而在本發(fā)明中,每條指 令可被分為若干個功能不同的子指令,各子指令在同一個時鐘周期內(nèi) 同時完成,因此實現(xiàn)了多個功能的并行處理,大大提高了運算速度。并行工作的各子指令譯碼單元121—127的邏輯工作步驟為[1]程序控制子指令譯碼單元121譯碼執(zhí)行4條程序控制子指令,包 括A.掛起指令使得微處理器內(nèi)核l進入掛起狀態(tài),停止執(zhí)行程序, 保持各寄存器的值,當(dāng)啟動信號有效后,從當(dāng)前程序地址繼續(xù)執(zhí)行。 B.絕對地址跳轉(zhuǎn)指令用指令中的16位值更新程序計數(shù)器131,即跳轉(zhuǎn) 到指定的絕對地址。C.程序調(diào)用指令將當(dāng)前的程序計數(shù)器131和堆棧 指針132寫入調(diào)用者的棧底,更新程序計數(shù)器131指向被調(diào)用者的棧 底,并用指令中的16位值更新程序計數(shù)器131,跳轉(zhuǎn)到指定的絕對地 址。D.程序返回指令用當(dāng)前程序棧底數(shù)據(jù)寫入恢復(fù)程序計數(shù)器131和 堆棧指針132,從而返回到調(diào)用者運行程序調(diào)用指令的入口點。[2]存儲器訪問子指令譯碼單元122譯碼執(zhí)行存儲器訪問子指令, 包括A.存儲器讀子指令,以數(shù)據(jù)指針133、堆棧指針132或程序計數(shù) 器131作為基地址,以索引寄存器136或子指令中的4位立即數(shù)作為偏 移量,相加產(chǎn)生目標(biāo)地址,從數(shù)據(jù)存儲器3或程序存儲器2中讀取一個字的數(shù)據(jù)存儲到數(shù)據(jù)寄存器135中。B.存儲器寫子指令,以數(shù)據(jù)指針 133或堆棧指針132作為基地址,以索引寄存器136或子指令中的4位立 即數(shù)作為偏移量,相加產(chǎn)生目標(biāo)地址,將數(shù)據(jù)寄存器135中的數(shù)據(jù)寫 入到數(shù)據(jù)存儲器3中。[3]加速模塊訪問子指令譯碼單元123譯碼執(zhí)行加速模塊訪問子指 令,以加速模塊指針134作為基地址,以索引寄存器136或子指令中的 4位立即數(shù)作為偏移量,相加產(chǎn)生目標(biāo)地址,將數(shù)據(jù)寄存器135中的數(shù) 據(jù)輸入到相應(yīng)的加速模塊,將運算結(jié)果存儲到數(shù)據(jù)寄存器135中。[4]寄存器拷貝子指令譯碼單元124譯碼執(zhí)行寄存器拷貝子指令, 進行同類寄存器之間的拷貝操作,包括數(shù)據(jù)寄存器135拷貝子指令, 進行數(shù)據(jù)寄存器135之間的拷貝操作;指針拷貝子指令,進行數(shù)據(jù)指 針133、堆棧指針132和程序計數(shù)器131之間的拷貝操作;索引拷貝子 指令索引寄存器,進行比較寄存器137之間的拷貝操作。[5]算術(shù)邏輯子指令譯碼單元125譯碼執(zhí)行算術(shù)邏輯子指令,對一 個或兩個數(shù)據(jù)寄存器135進行數(shù)學(xué)或邏輯運算,包括帶位加、減、左移、 右移、與、或、半字交換、乘、位操作等。[6]索引運算子指令譯碼單元126譯碼執(zhí)行索引運算子指令,包括 對索引寄存器136清零、加一和減一操作。 [7]條件跳轉(zhuǎn)子指令譯碼單元127譯碼執(zhí)行條件跳轉(zhuǎn)子指令,當(dāng)判斷條件滿足時,跳轉(zhuǎn)到與下一條指令的相對偏移量為指定值的地址, 否則執(zhí)行下一條指令。參看表l,表1列舉了指令譯碼單元12中各子指令類型及編碼位置, 除程序控制指令占用指令編碼的全部32位外,其余子指令各占用32 指令編碼的特定位置。因此,編碼位置(在縱向上)不重疊的子指令 可以并行處理。181131 2827 2322 19120存儲器訪問索引 運算位運算寄存器拷貝(索引偏移量 尋址)加速模塊訪問條件跳轉(zhuǎn)存儲器訪問 (立即數(shù)偏移量尋址)算術(shù)邏輯運算程序控制表l程序地址產(chǎn)生單元15,根據(jù)程序計數(shù)器131的值,并接收程序控 制子指令譯碼單元121和/或條件跳轉(zhuǎn)子指令譯碼單元127產(chǎn)生的控制 信號,產(chǎn)生下一條程序指令在程序存儲器2中的存儲器地址,通過程 序存儲器接口16將地址輸出到程序存儲器2。在每條指令執(zhí)行完成后
對寄存器堆13中的程序計數(shù)器131加一,或者根據(jù)條件跳轉(zhuǎn)子指令或程序控制子指令將目標(biāo)地址存儲到程序計數(shù)器131。寄存器堆13,處理器指令可訪問到的寄存器集合,接收指令譯碼 單元12發(fā)來的指令,實現(xiàn)和數(shù)據(jù)運算單元14、程序存儲器2、數(shù)據(jù) 存儲器3及密碼學(xué)加速模塊19的雙向通訊,保存各種數(shù)據(jù)、產(chǎn)生各 種目標(biāo)地址。數(shù)據(jù)寄存器135用來保存各種源數(shù)據(jù)、中間數(shù)據(jù)和結(jié)果 數(shù)據(jù),它通過程序存儲器接口 16讀取程序存儲器2的數(shù)據(jù);它通過 微處理器內(nèi)核1中相應(yīng)的接口與數(shù)據(jù)存儲器3、密碼學(xué)加速模塊19 進行雙向通訊,輸入數(shù)據(jù)或把數(shù)據(jù)輸出到數(shù)據(jù)存儲器3和/或密碼學(xué) 加速模塊19;并與微處理器內(nèi)核1中的數(shù)據(jù)運算單元14實現(xiàn)雙向通 訊,進行各種數(shù)據(jù)的輸入與輸出。程序計數(shù)器131用來保存當(dāng)前程序 指令地址。堆棧指針132用來保存當(dāng)前堆棧地址,在執(zhí)行程序調(diào)用或 程序返回指令時自動更新。數(shù)據(jù)指針133用來保存存儲器尋址的基地 址,與索引寄存器136的值相加產(chǎn)生存儲器尋址的目標(biāo)地址。加速模 塊指針134保存加速模塊地址的基地址,與索引寄存器136的值相加 產(chǎn)生加速模塊地址的目標(biāo)地址。索引寄存器136用來保存存儲器尋址 的偏移地址,與數(shù)據(jù)指針133或加速模塊指針134的值相加產(chǎn)生存儲 器尋址或加速模塊訪問的目標(biāo)地址。比較寄存器137保存與索引寄存 器136相比較的參考數(shù)值,用于條件跳轉(zhuǎn)子指令中的條件判斷。位寄 存器138用于保存程序運行時的狀態(tài)位。參看表2,表2中列舉了寄存器堆13中各寄存器的定義,寄存器 堆13中的各個寄存器的名稱(在程序中使用)、編號及其組成。例如 編號為13的字寄存器的名稱為Rab,是由Pa和Pb這2個指針寄存器組合而成的。數(shù)據(jù)寄存器索引寄存器指針寄存器編號助記符編 號助記符(及構(gòu) 成)力—助記 符編號助記 符R0R0R8Rc010iP0PcRlRsR9Rcl11jPIPsR2R10Ril:U,k, j,i }12kP2PaR3RbRllRgh二 {Pe, h, g}131P3PbR4RmR12Rcs={Pc,Ps}14gP4PmR5RnK13Rab二{Pb, Pa}15hP5PnR6RuR14Rmn= {Pn, Pm}16Rs.B 0P6PuR7RvR15Ruv={Pv, Pu}17Rs.B 1P7Pv表l在表2中,寄存器堆l 3中包含16個32位的數(shù)據(jù)寄存器R0 R15,都可以作為算術(shù)邏輯子指令的操 作數(shù)及寄存器拷貝子指令的源或目標(biāo),其它子指令的源和目標(biāo)寄存器 則有限定。R10 R15實際上由若干個索引寄存器136或指針寄存器組合而成。9個16-bit指針寄存器,用作訪問存儲器或加速模塊時目標(biāo)地址 的基址。其中Pc (PO)是程序計數(shù)器131,用于訪問程序;Ps (Pl) 是堆棧指針132,用于訪問棧數(shù)據(jù);Pe是加速模塊指針134;其它是 普通的數(shù)據(jù)指針133。8個8-bit索引寄存器,分成三類偏移量索引寄存器i、 j、 k 和1 (10 13)用作訪問存儲器或加速模塊時目標(biāo)地址的偏移量,索 引寄存器136操作中的對象,條件判斷中的比較對象,以及索引寄存 器136拷貝中的源或目標(biāo)寄存器;參考索引寄存器g和h (14 15) 用作條件判斷中的參考對象,以及索引寄存器拷貝中的源寄存器; Rs.BO和Rs.Bl (16 17)是Rs寄存器的低2個字節(jié),用作索引寄存 器拷貝中的源寄存器。數(shù)據(jù)運算單元14,接收指令譯碼單元12發(fā)出的指令,更確切的說, 是接收算術(shù)邏輯子指令譯碼單元125發(fā)出的指令,執(zhí)行寄存器相關(guān)的 各種運算,如寄存器之間的數(shù)據(jù)拷貝,包括數(shù)據(jù)寄存器135之間的 拷貝,指針寄存器之間的拷貝,索引寄存器136及比較寄存器137之間 的拷貝;算術(shù)邏輯操作,包括加法、減法、左移、右移、與、或、異 或、半字交換操作;索引寄存器的加一、減一及清零操作;位寄存器 138的清零和置位操作。數(shù)據(jù)運算單元14執(zhí)行的各種運算都是最常用 基本運算,而這些運算用處理器指令非常容易實現(xiàn),因此靈活性高、 利用率高。
程序存儲器接口16,實現(xiàn)指令寄存器11或數(shù)據(jù)寄存器135從程序存 儲器2的數(shù)據(jù)讀取。數(shù)據(jù)存儲器接口17,實現(xiàn)數(shù)據(jù)寄存器135和數(shù)據(jù)存儲器3之間的數(shù) 據(jù)交換。密碼學(xué)加速模塊19,滿足密碼學(xué)加速模塊接口 18的數(shù)據(jù)時序要求。各種密碼學(xué)算法都有其各自的特點,但各種算法都會涉及到一些 最常用的基本功能,如存儲器訪問、寄存器拷貝、算術(shù)邏輯運算、 循環(huán)變量遞增/遞減、條件判斷和跳轉(zhuǎn)等操作等,在本發(fā)明中,這些 通用功能通過微處理器內(nèi)核1中的指令譯碼單元12、寄存器堆13和 數(shù)據(jù)運算單元14以并行的方式執(zhí)行,算法可以采用流水線的方式對 數(shù)據(jù)進行處理;而對于那些各密碼學(xué)算法特定的功能,處理器指令難 于處理或處理起來代價較高、速度較慢,則通過特定的密碼學(xué)加速模 塊19來完成。參看表3,表3中以一個多字節(jié)大整數(shù)加法為例,演示微處理器 內(nèi)核1的工作步驟
程序存儲器<formula>formula see original document page 17</formula>表3在數(shù)據(jù)存儲器3存放兩個輸入和一個輸出數(shù)據(jù)加數(shù)A、加數(shù)B 及結(jié)果M二A+B, A、 B、 M分別是占用N字數(shù)據(jù),即它們是長度為32X N位的整數(shù)。數(shù)據(jù)的高有效字存儲在低地址,低有效字存儲在高地址。 程序存儲器2存儲多字加法程序指令,圖5中詳細列出了其中的運算 部分。在未詳細列出的初始化的程序中對用到的各個寄存器賦初值, 其中Pa、 Pb和Pm是三個指針寄存器,分別指向A、 B和M在數(shù)據(jù)存 儲器3中的起始地址(高有效字地址);i和j是兩個初始值均為字 長N的索引寄存器136,在循環(huán)中分別用來訪問輸出和輸入數(shù)據(jù)的某
個字,i同時作為循環(huán)控制變量;Pc是程序計數(shù)器131,指向當(dāng)前運 行的程序指令地址。Ra、 Rb和Rs是三個數(shù)據(jù)寄存器135, Ra和Rb 分別用來讀取A和B, Rs用來進行單字的加法運算,并將結(jié)果寫入到 M中。執(zhí)行運算部分程序時,Pc指向第l行程序,微處理器內(nèi)核l將第 l行程序的指令編碼通過程序存儲器接口 16加載到指令寄存器11中, 指令譯碼單元12對該指令進行譯碼。該指令包含2條子指令存儲 器讀子指令(Ra=Pa[j〕)的功能是從地址為(Pa+j)的數(shù)據(jù)存儲器3 中讀取一個字加載到數(shù)據(jù)寄存器Ra中,該子指令由存儲器訪問子指 令譯碼單元122譯碼,并通過輸出給數(shù)據(jù)存儲器接口 17和寄存器堆 13的控制信號完成其功能;另一條是位操作子指令(C=0),功能是 將數(shù)據(jù)運算單元14中的進位標(biāo)志C清零,該子指令由算術(shù)邏輯子指 令譯碼單元125譯碼,并通過輸出給數(shù)據(jù)運算單元14和寄存器堆13 的控制信號完成其功能。這兩條子指令的譯碼和功能在一個周期內(nèi)一 起完成,同時Pc自動加一,指向第2行程序,微處理器內(nèi)核l繼續(xù) 進行讀取指令和譯碼執(zhí)行。第2行程序包括3條子指令,分別是存儲 器讀子指令(Rb=Pb[j]:讀取B的一個字到Rb)、寄存器拷貝子指令(Rs=Ra:將Ra的值復(fù)制到Rs)和索引運算子指令(j --:將索引 寄存器j減一以指向下一個輸入數(shù)據(jù)字)。第3行程序計算單字的帶 進位加法(a[j]+bU]),結(jié)果保存在Rs中,同時讀取下一輪循環(huán)中 A的數(shù)據(jù)字(Ra二Pa[j])。第4行程序?qū)s中的數(shù)值寫入到地址為(Pm+i)的數(shù)據(jù)存儲器中(Pm[i]=Rs),即M的第i個字,并將索引
寄存器i減一 (i --)以指向下一個輸出數(shù)據(jù)字;同時執(zhí)行條件跳轉(zhuǎn)子指令(jump LOOP unless i==0),判斷i是否等于0,若非0則 將Pc減去2,跳轉(zhuǎn)到標(biāo)號為"LOOP"的第2條程序,開始下一輪循 環(huán),若為0則繼續(xù)執(zhí)行后面的指令。
由上述這段程序可以看出,子指令的并行運行使得存儲器訪問、 算術(shù)運算、寄存器拷貝、數(shù)據(jù)地址更新和條件判斷及跳轉(zhuǎn)這些基本的 程序功能可以用流水線的方式進行。循環(huán)部分只有3條指令,但包含 了 8個數(shù)據(jù)處理功能,使得一個大整數(shù)加法的運算所需時間是3XN (除去常數(shù)項),如果每條指令只能完成一項處理功能,則循環(huán)部分 需要7條指令(i和j可以合并),加法的運算時間是7XN。對于字 長對復(fù)雜度影響更大的算法(如模乘的復(fù)雜度與N的平方成正比), 子指令的并行處理對對算法效率的提高更顯著。上述列舉的本發(fā)明的幾個實現(xiàn)方案中,對一些本領(lǐng)域技術(shù)人員公 知技術(shù)的過程、元件和步驟并沒有詳細說明,因為對本領(lǐng)域的技術(shù)人 員來說,沒有這些具體描述,或使用替代的元件和方法,也能實施本 發(fā)明。
權(quán)利要求
1、一種用于密碼學(xué)運算的微處理器內(nèi)核,它與程序存儲器(2)及數(shù)據(jù)存儲器(3)相互連接,用于加速密碼學(xué)的運算,其特征在于,它包括指令寄存器(11),存儲當(dāng)前執(zhí)行的程序指令字并將指令發(fā)送給指令譯碼單元(12);指令譯碼單元(12),譯碼并執(zhí)行指令寄存器(11)中的程序指令字,產(chǎn)生微處理器內(nèi)核(1)中各部分電路的控制信號;寄存器堆(13),包括程序計數(shù)器(131)、堆棧指針(132)、數(shù)據(jù)指針(133)、加速模塊指針(134)、數(shù)據(jù)寄存器(135)、索引寄存器(136)、比較寄存器(137)和位寄存器(138);數(shù)據(jù)運算單元(14),對寄存器堆(13)中的寄存器進行各種運算操作;程序地址產(chǎn)生單元(15),產(chǎn)生下一條程序指令在程序存儲器(2)中的存儲地址;程序存儲器接口(16),實現(xiàn)指令寄存器(11)或數(shù)據(jù)寄存器(135)從程序存儲器(2)的數(shù)據(jù)讀??;數(shù)據(jù)存儲器接口(17),實現(xiàn)數(shù)據(jù)寄存器(135)和數(shù)據(jù)存儲器(3)之間的數(shù)據(jù)交換;密碼學(xué)加速模塊接口(18),實現(xiàn)數(shù)據(jù)寄存器(135)和密碼學(xué)加速模塊(19)之間的數(shù)據(jù)交換;密碼學(xué)加速模塊(19),包含一個供DES程序調(diào)用的DES算法加速模塊(191),實現(xiàn)DES算法硬件加速功能;還包含一個供AES算法程序調(diào)用的AES算法加速模塊(192),實現(xiàn)AES算法硬件加速功能。
2、如權(quán)利要求1所述的用于密碼學(xué)運算的微處理器內(nèi)核,其特征 在于,所述指令譯碼單元(12)的子單元包括程序控制子指令譯碼單元(121),譯碼并執(zhí)行掛起指令、絕對地 址跳轉(zhuǎn)指令、程序調(diào)用指令和程序返回指令;存儲器訪問子指令譯碼單元(122),譯碼并執(zhí)行存儲器讀子指令 和存儲器寫子指令;加速模塊訪問子指令譯碼單元(123),生成目標(biāo)地址,并將數(shù)據(jù) 輸入到相應(yīng)的加速模塊,將運算結(jié)果存儲到數(shù)據(jù)寄存器(135);寄存器拷貝子指令譯碼單元(124),執(zhí)行數(shù)據(jù)寄存器拷貝子指令、 指針拷貝子指令和索弓1拷貝子指令;算術(shù)邏輯子指令譯碼單元(125),對一個或兩個數(shù)據(jù)寄存器(135) 進行數(shù)學(xué)或邏輯運算;索引更新子指令譯碼單元(126),對索引寄存器(136)執(zhí)行清零、 加一和減一操作;條件跳轉(zhuǎn)子指令譯碼單元(127),判斷條件滿足時,跳轉(zhuǎn)到與下 一條指令的相對偏移量為指定值的地址,否則執(zhí)行下一條指令;上述各子指令譯碼單元(121 127)采用并行工作方式,對一條 指令中的各自對應(yīng)的子指令同時譯碼,各子指令功能在同一個時鐘周 期內(nèi)同時完成。
全文摘要
一種用于密碼學(xué)運算的微處理器內(nèi)核,涉及信息安全領(lǐng)域的密碼學(xué)技術(shù)。本發(fā)明與程序存儲器及數(shù)據(jù)存儲器相互連接,用于加速密碼學(xué)的運算。本發(fā)明包括指令寄存器,指令譯碼單元,包括程序計數(shù)器、堆棧指針、數(shù)據(jù)指針、加速模塊指針、數(shù)據(jù)寄存器、索引寄存器、比較寄存器和位寄存器的寄存器堆,數(shù)據(jù)運算單元,程序地址產(chǎn)生單元,程序存儲器接口,數(shù)據(jù)存儲器接口,密碼學(xué)加速模塊接口和密碼學(xué)加速模塊。同現(xiàn)有技術(shù)相比,本發(fā)明通過軟硬件結(jié)合的方式,既可以獲得較高的運算速度,又能獲得算法功能的靈活性和通用性,具有成本低,性能高,功能可配置,靈活通用的特點。
文檔編號G06F15/76GK101131719SQ20061011254
公開日2008年2月27日 申請日期2006年8月23日 優(yōu)先權(quán)日2006年8月23日
發(fā)明者侯書郡, 磊 徐, 楊湘渝, 王曉丹, 岡 陳, 鈞 黃 申請人:北京同方微電子有限公司