《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > RISC結(jié)構(gòu)微處理器專用存儲單元的研究與實現(xiàn)

RISC結(jié)構(gòu)微處理器專用存儲單元的研究與實現(xiàn)

2009-01-15
作者:張 琰, 戴紫彬

??? 摘? 要: 分析了RISC微處理器結(jié)構(gòu)的特點,針對分組密碼的操作特征在RISC結(jié)構(gòu)密碼專用微處理器中增加專用存儲單元,用來專門存儲密碼運算的相關(guān)數(shù)據(jù),同時擴展了指令集,極大地減少了執(zhí)行密碼算法時的指令條數(shù),提高了密碼運算效率,增強了其處理性能。?

??? 關(guān)鍵詞: RISC; S盒;分組密碼; 密碼處理

?

??? 采用通用微處理器實現(xiàn)密碼算法雖然靈活性好,但性能不佳,實現(xiàn)速度也較慢。而采用專用ASIC針對特定密碼算法進行加速,靈活性不高。RISC結(jié)構(gòu)密碼專用微處理器設(shè)計是面向通用微處理器與高效密碼處理器的結(jié)合,在RISC結(jié)構(gòu)中整合了一個密碼運算單元,并且這些運算單元是基于可重構(gòu)的,對它配置不同的信息可以完成不同的算法,該運算單元與算術(shù)運算單元ALU并行工作,并訪問同一個寄存器文件[1]。RISC體系結(jié)構(gòu)作為計算機設(shè)計策略的一種類型己愈來愈多地應(yīng)用于計算機的體系設(shè)計中。RISC結(jié)構(gòu)的指令系統(tǒng)中,采用大量的寄存器——寄存器操作指令,但只有l(wèi)oad/store指令可以訪問內(nèi)存。從內(nèi)存中取出的數(shù)據(jù)要送到寄存器,在寄存器之間對數(shù)據(jù)進行快速處理,從而避免了由于頻繁訪問內(nèi)存而降低執(zhí)行速度[2]。RISC指令尋址模式和指令操作都相對簡單,這雖然有利于簡化微結(jié)構(gòu)實現(xiàn),但是在進行大量數(shù)據(jù)流處理特別是密碼運算時,由于它需要存儲較多的數(shù)據(jù),所以必須頻繁地利用load/store指令控制數(shù)據(jù)的進出,這需要占用較多的指令和較多的時鐘周期。因此,針對上述問題,本文在32位RISC密碼專用微處理器中設(shè)計了一個專用存儲單元用來存放密碼運算的相關(guān)數(shù)據(jù),在密碼運算時可以對其直接訪問,大大減少了指令條數(shù),提高了密碼運算效率。?

1 應(yīng)用分析?

??? 通過對DES、RIJNDAEL、SERPENT、RC6、IDEA等分組密碼算法的分析,很多不同分組密碼算法具有相同或相似的基本操作運算,或者說,同一基本操作運算在不同的算法中出現(xiàn)的頻率也不相同,如表1所示。

?

?

??? 在表1所示常見操作中:S盒變換需要用到查找表LUT數(shù)據(jù),算法不同,S盒查找表的大小也不相同,例如,DES是8個6~4的查找表,AES是1個8~8的查找表;位置換操作需要用到相關(guān)的控制信息,不同的置換其控制信息也不相同,例如,DES算法就用到了六種置換的控制信息;有限域乘法運算中需要對不可約多項式和乘數(shù)多項式進行配置;密碼運算中還有密鑰及運算生成的子密鑰數(shù)據(jù)。由此可見,密碼運算中需要存儲大量的不同類型的數(shù)據(jù),每種數(shù)據(jù)的存儲量大小也各不相同。這就決定了基于RISC結(jié)構(gòu)的密碼專用微處理器需要具有較靈活的存儲結(jié)構(gòu)。?

??? 因此,為了提高密碼運算的執(zhí)行效率,在密碼微處理器中可以設(shè)計一個內(nèi)部的專用存儲單元,用來存儲密鑰和一些特定的配置數(shù)據(jù)。對專用存儲單元的訪問要結(jié)合密碼運算單元的特點才能具有較好的靈活性。因此在本設(shè)計中,微處理器完成密碼運算時使用專用存儲單元,而完成其他運算時則使用數(shù)據(jù)存儲器。這樣,既具有了其專用性又保留了其通用性,能夠高效地實現(xiàn)密碼算法[3]。?

2 專用存儲單元的設(shè)計?

2.1 整體結(jié)構(gòu)?

??? 密碼專用微處理器在支持原load指令和store指令訪問數(shù)據(jù)存儲單元的基礎(chǔ)上,硬件上又加入了專用存儲單元的訪問邏輯。專用存儲單元與數(shù)據(jù)存儲單元分離獨立地存儲相應(yīng)的數(shù)據(jù),這樣就減少了大量RISC結(jié)構(gòu)中難以避免的寄存器與存儲單元交換數(shù)據(jù)的指令[4]。密碼專用微處理器的整體結(jié)構(gòu)如圖1所示。

?

?

??? 專用存儲單元放置于IF/ID極間寄存器之后,在進行密碼運算時,操作數(shù)從寄存器堆中取出,對于密碼運算的配置信息,則從專用存儲單元中取出直接進入IU運算單元完成配置。?

??? 專用存儲單元共分為三個模塊:S盒模塊、密鑰模塊、bit置換和有限域模塊,每一個模塊又由一些地址位寬和數(shù)據(jù)位寬各不相同的RAM組成,如圖2所示。?

?

?

??? 圖2中,存放S盒LUT數(shù)據(jù)部分由8個28×8的RAM構(gòu)成,存放密鑰部分由1個27×32的RAM構(gòu)成,存放置換和有限域配置信息部分由6個24×32的RAM構(gòu)成。三個存儲模塊統(tǒng)一編址,對于S盒存儲模塊前2bit進行譯碼,后8bit進行尋址;對于密鑰存儲模塊前3bit進行譯碼,后7bit進行尋址;對于存儲置換和有限域模塊,前6bit進行譯碼,后4bit進行尋址。訪問專用存儲單元時由Opcode及指令字中其他字段參加譯碼來控制對不同數(shù)據(jù)的訪問。?

2.2 S盒存儲模塊?

??? 通過對DES、AES、IDEA等41種分組密碼算法分析可知,有30種算法使用了S盒替代操作,共計十種不同類型的S盒,十種S盒中為二種以上不同算法所使用的僅有4×4、6×4、8×8、8×32 四種S盒,其他六種不同類型的S盒查表操作可以采用以上四種S盒查表操作或邏輯運算實現(xiàn)[5]。本設(shè)計的S盒實現(xiàn)方式是基于查找表LUT(Look Up Table)的實現(xiàn)方式,將S盒查找表存儲在RAM中,操作數(shù)作為讀地址。這種方法占用較多存儲單元,但運算速度快,最主要的是它具有可配置性,能滿足當(dāng)前多種密碼運算的需要,并且不進行配置時它本身不帶有任何算法信息,使得本身更具有安全性。S盒電路結(jié)構(gòu)如圖3所示。?

?

?

??? S盒代替電路在設(shè)計上考慮支持8×8、8×32、4×4、6×4四種查表模式,采用RAM組的設(shè)計方式,為支持32bit的數(shù)據(jù)路徑,采用了4個雙端口28×8的RAM組并聯(lián)電路,即2個28×8的RAM構(gòu)成一個RAM組。?

2.3 密鑰存儲模塊?

??? 密鑰存儲模塊是由一個27×32的RAM組成,通過對如表2所示的多種分組密碼算法密鑰容量的統(tǒng)計和分析可知,深度為128的存儲容量可以滿足密碼運算中密鑰的存儲要求。?

?

?

??? 在AES算法中每輪要進行輪密鑰加,即“異或”運算;在DES算法中,密鑰要進行64位減至56位的置換,然后每一輪都要進行移位和壓縮置換;在IDEA算法中,在每一輪運算中其子密鑰要進行多次的“異或”、模加、模乘??梢娒荑€或子密鑰在密碼運算中參與了多種運算。為了減少硬件設(shè)計的復(fù)雜度,本設(shè)計將取出的密鑰放入寄存器堆中,以便能靈活地和其他數(shù)據(jù)進行各種運算。?

2.4 置換及有限域存儲模塊?

??? 置換作為擴散的首要手段,在密碼算法中得到了廣泛應(yīng)用。例如:在DES中有六種不同種類的置換;Twofish和Serpent中有兩種不同種類的置換。本設(shè)計的bit置換單元是基于64×64的omega-flip網(wǎng)絡(luò),該網(wǎng)絡(luò)共有11級,在進行數(shù)據(jù)置換之前,要先對每一級的開關(guān)邏輯進行配置。一級omega-flip網(wǎng)絡(luò)需要N/2bit(即32bit)控制信息決定該級開關(guān)的狀態(tài)(交叉或直通),所以該置換網(wǎng)絡(luò)進行一次置換需要11個控制信息。如果用通用指令實現(xiàn)這些控制信息,則至少需要6條指令才能完成配置。?

??? 分組密碼應(yīng)用中,有限域乘法運算主要在GF(28)、GF(27)及GF(29)域上。其中,在GF(28)域上的乘法運算最為常見,占到了全部有限域乘法的54.14%。有限域乘法電路運算前需要對乘數(shù)多項式和不可約多項式進行靜態(tài)配置,每組136bit,其中128bit為乘法矩陣配置數(shù)據(jù),8bit作為不可約多項式配置數(shù)據(jù)。?

??? 由以上分析可知,本設(shè)計的bit置換和有限域模塊由6個24×32的RAM組成,它一次可以存放六種置換所需要的控制信息,四種有限域運算所需的128bit乘法矩陣配置數(shù)據(jù)和8bit不可約多項式配置數(shù)據(jù)。6個RAM都是雙端口(即2個讀端口),所以給出2個相同的讀地址,6個RAM就可以同時讀出12個配置數(shù)據(jù)。64位的bit置換一次需要的11個控制信息只用一條指令就可以完成配置,大大提高了密碼運算速度。?

2.5指令設(shè)計?

??? 密碼專用微處理器擴展了指令集,增加了密碼指令。加入專用存儲單元后,由于專用存儲單元存放的主要是配置數(shù)據(jù),結(jié)合運算單元的特點,在擴展的專用密碼指令中對原指令格式進行了改進,使之更適合于密碼算法。改進后該指令字中的低11位被作為5位的shift域和6位的func域,其指令格式如表3所示。三個模塊的數(shù)據(jù)都由CONFIGURE指令存儲到專用存儲單元中,密鑰和S盒可以直接參與運算,對于置換和有限域乘法,在其密碼運算指令的shift域中添加專用存儲單元的地址,運算時再將配置信息動態(tài)配置到IU運算單元中,這樣配置和運算用一條指令就可以完成。?

?

?

??? 表3中:Op為操作碼,Rd為目的寄存器地址,Rs1和Rs2為源寄存器地址。type(1)作為區(qū)分bit置換和有限域。addr(4)為置換和有限域模塊4bit地址,該4bit地址與該地址加1為bit置換和有限域模塊6個RAM的2個讀地址,讀出的數(shù)據(jù)直接送入運算單元內(nèi)部對相應(yīng)模塊進行配置。sboxtype(2)2bit為S盒類型選擇,用來區(qū)分8×8、8×32、4×4及6×4四種S盒。Sboxa/b(1)這1bit是訪問S盒時用來選擇RAM組a或RAM組b。?

3 性能分析?

??? 指令條數(shù)是影響性能的關(guān)鍵因素,設(shè)計專用密碼處理指令的目的就是減少實現(xiàn)過程中的指令條數(shù)。由于本設(shè)計所基于指令的CPI都為1,故可以通過算法所需的指令數(shù)來反映系統(tǒng)處理明文的效率。表4給出了與其他兩種處理器所需指令條數(shù)的對比情況,表中的I386為32位指令編碼的通用處理器,PVCP[6]為國防科技大學(xué)研制的一款向量結(jié)構(gòu)的密碼處理器。?

?

?

??? 從表4可以看出,本設(shè)計的指令條數(shù)與通用處理器指令條數(shù)相比減少了78%~90%,與功能相似的向量處理器相比,指令條數(shù)也減少了許多。?

??? 通過對RISC結(jié)構(gòu)進行研究可以發(fā)現(xiàn),寄存器—寄存器的指令特性極大地降低了微處理器對大量存儲器中數(shù)據(jù)的處理效率。因此,結(jié)合密碼運算的特點及系統(tǒng)需求,本設(shè)計將重點放在RISC結(jié)構(gòu)密碼專用微處理器在實現(xiàn)密碼算法過程中如何減少指令條數(shù)上。本文在RISC密碼專用微處理器中加入了專用存儲單元,用來存儲和密碼處理相關(guān)的數(shù)據(jù),如密鑰、S盒運算中的LUT數(shù)據(jù)、有限域乘法中的配置數(shù)據(jù)及bit置換所用到的控制信息,并擴展和改進了其相應(yīng)的指令集,減少了指令條數(shù),提高了運算效率。?

參考文獻?

[1] 曲英杰. 可重構(gòu)密碼協(xié)處理器的組成與結(jié)構(gòu).計算機工程與應(yīng)用,2003,39(23).?

[2] 徐東,劉志軍,王立華. 32位RISC結(jié)構(gòu)體系的性能優(yōu)勢.電子工程師,2006,32(8).?

[3] YANGA H Y, MERTOGUNO S J, BOURBAKIS N G.Design of the kydon-RISC processor. Microprocessors and Microsystems, 2001,(25).?

[4] 賈琳,樊曉椏.32位RISC微處理器流水線設(shè)計.計算機工程與應(yīng)用,2005,41(14).?

[5] 李聲濤,分組密碼中S盒的設(shè)計與分析.國防科技大學(xué)碩士畢業(yè)論文,2004.?

[6] 倪曉強.通用并行向量密碼處理器研究.國防科技大學(xué)工學(xué)博士論文,2005.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。