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