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