基于EPIC技術(shù)的密碼處理器體系結(jié)構(gòu)研究與設(shè)計(jì)
2 可編程密碼處理器體系結(jié)構(gòu)設(shè)計(jì)
在典型的可編程密碼處理器結(jié)構(gòu)(AFPC)中,EPIC結(jié)構(gòu)開發(fā)的是標(biāo)量操作之間的隨機(jī)并發(fā)性,并且增加了功能部件的個(gè)數(shù)。不相關(guān)的指令由編譯顯式地編入到一個(gè)超長(zhǎng)的機(jī)器指令字中,并發(fā)射到流水線,在各個(gè)功能部件中并發(fā)執(zhí)行,指令級(jí)并行度為4~8。這種結(jié)構(gòu)的硬件控制相對(duì)簡(jiǎn)單,在計(jì)算密集型應(yīng)用時(shí)內(nèi)在并行性很明顯。且不需要很多轉(zhuǎn)移預(yù)測(cè)。在這種結(jié)構(gòu)上運(yùn)行指令能夠達(dá)到較高的實(shí)際指令級(jí)并行度。正是由于以上特點(diǎn),EPIC結(jié)構(gòu)在很大程度上符合了密碼算法的需求,即計(jì)算密集且順序執(zhí)行。
可編程密碼處理器體系結(jié)構(gòu)的硬什結(jié)構(gòu)如圖1所示,整個(gè)處理器包括三部分:數(shù)據(jù)通路、控制單元和輸入/輸出接口電路。
數(shù)據(jù)通路是處理器的關(guān)鍵部件之一,包含F(xiàn)UO~FU5共6個(gè)可并行執(zhí)行的功能單元、32個(gè)32bit通用寄存器、4×32個(gè)32bit密鑰寄存器和回寫單元。
功能單元是處理器執(zhí)行指令運(yùn)算的核心,由若干個(gè)密碼運(yùn)算模塊組成。其中,F(xiàn)UO~FU3內(nèi)部運(yùn)算模塊的組成與結(jié)構(gòu)完全相同,輸入為3個(gè)32bit運(yùn)算數(shù)據(jù),其中2個(gè)來(lái)自通用寄存器堆、1個(gè)來(lái)自密鑰寄存器堆,輸出的運(yùn)算結(jié)果亦為32bit。FUO~FU3內(nèi)部分別設(shè)置了7個(gè)運(yùn)算模塊,分別為S盒運(yùn)算模塊、模加,減運(yùn)算模塊、模乘運(yùn)算模塊、32bit移位運(yùn)算模塊、有限域乘法運(yùn)算模塊、二輸入邏輯運(yùn)算模塊、三輸入邏輯運(yùn)算模塊。FU4內(nèi)部設(shè)置了1個(gè)128bit,置換運(yùn)算模塊,輸入為12個(gè)32bit運(yùn)算數(shù)據(jù),其中8個(gè)來(lái)自通用寄存器堆,4個(gè)來(lái)自密鑰寄存器堆。FU5內(nèi)部設(shè)置了1個(gè)128bit移位運(yùn)算模塊,輸入也為12個(gè)32bit運(yùn)算數(shù)據(jù),其中8個(gè)來(lái)自通用寄存器堆,4個(gè)來(lái)自密鑰寄存器堆。
上述這些運(yùn)算模塊功能不是單一的,而是可重構(gòu)的。表2中給出了4個(gè)可重構(gòu)運(yùn)算模塊所支持的模式。
除了上述運(yùn)算模式可重構(gòu)外,各運(yùn)算模塊根據(jù)具體情況還支持運(yùn)算前增加‘異或 i操作、運(yùn)算后增加‘異或 i操作或者運(yùn)算前后都增加‘異或 i操作。由于‘異或 i操作延時(shí)很小,它的加入并不影響運(yùn)算的關(guān)鍵路徑,這就使得密碼運(yùn)算時(shí)減少了單一‘異或 i操作的時(shí)鐘,從而減少了整個(gè)運(yùn)算的時(shí)鐘數(shù),并且不影響整體性能。表3中給出了Rijndael算法輪運(yùn)算流程,采用有限域乘法運(yùn)算后加入‘異或 i操作,時(shí)鐘周期數(shù)由4減為3,10輪運(yùn)算將減少10個(gè)時(shí)鐘周期。
控制單元完成指令存取、指令譯碼、指令存儲(chǔ)器地址生成等工作,協(xié)調(diào)處理器內(nèi)部指令與外部用戶命令正確執(zhí)行。
輸入/輸出接口電路包括16個(gè)32bit輸入寄存器、16個(gè)32bit輸出寄存器、4個(gè)數(shù)據(jù) 長(zhǎng)度計(jì)數(shù)器、1個(gè)32bit命令寄存器等,完成指令、運(yùn)算數(shù)據(jù)從32bit數(shù)據(jù)總線裝載到指令存 儲(chǔ)器和輸人寄存器以及運(yùn)算結(jié)果從內(nèi)部通用寄存器寫入輸出寄存器等操作。
3 指令系統(tǒng)設(shè)計(jì)
指令系統(tǒng)是算法要素和密碼處理器體系結(jié)構(gòu)特性的集中體現(xiàn),指令系統(tǒng)的設(shè)計(jì)必須支 持硬件的并行執(zhí)行,即開發(fā)指令級(jí)并行性(ILP),指令級(jí)并行性的開發(fā)程度對(duì)發(fā)揮密碼微處理器的硬件特性,提高程序運(yùn)行性能至為關(guān)鍵。ILP技術(shù)實(shí)際上是指一套完整的處理器設(shè)計(jì)和編譯技術(shù),這些技術(shù)通過并行地執(zhí)行獨(dú)立的機(jī)器操作(如存儲(chǔ)器讀寫、邏輯運(yùn)算、算術(shù)運(yùn)算等)來(lái)加速程序的執(zhí)行。ILP的大小可以采用每周期平均執(zhí)行的指令數(shù)(IPC)朱衡量,或者采用整個(gè)程序的每條指令平均執(zhí)行的周期數(shù)CPI(CPT=l/IPC)來(lái)衡量。在可編程密碼處理器體系結(jié)構(gòu)中采用了顯式并行指令計(jì)算結(jié)構(gòu),指令級(jí)并行數(shù)達(dá)到5。
3.1 指令分類
可編程密碼處理器體系結(jié)構(gòu)中的指令分為以下幾類:
(1)靜態(tài)配置指令。它是在密鑰生成及加/解密過程中保持不變或者改變次數(shù)很少的控制信息配置指令,算法確定后,其S盒查找表信息、有限域乘數(shù)矩陣和不可約多項(xiàng)式、若干個(gè)置換的控制信息等就確定了,它們不會(huì)因?yàn)椴僮髂J讲煌淖?。在加/解密過程中采用將配置指令分離出來(lái)的方法,可以大大減少執(zhí)行密碼運(yùn)算時(shí)指令的冗余編碼,從而縮短了指令字的長(zhǎng)度,增加了運(yùn)算指令字中包含有效操作的個(gè)數(shù),有效地提高了加/解密速度并減少了密碼程序的代碼量。
評(píng)論