徐勁松,王志新,嚴迎建
(解放軍信息工程大學 電子技術學院,河南 鄭州450004)
橢圓曲線密碼體制 (ECC)是一種基于代數(shù)曲線的公開密碼體制,需要進行高強度的密碼學運算,而通用處理器在運算性能上有明顯的局限性,難以滿足實際應用需求。因此,一般使用硬件加速的方法來實現(xiàn)ECC。傳統(tǒng)的硬件加速方法是用專用集成電路實現(xiàn)ECC算法,對特定的ECC算法進行硬件優(yōu)化來獲得高性能,這種方法處理速度快,但只能針對特定ECC算法,可配置性和可擴展性十分欠缺,且成本較高。目前專用指令集處理器 (ASIP)作為一種新的硬件加速方案,得到了廣泛的研究[1-3],出現(xiàn)了多款各具特色的ECC專用指令集處理器[4-6]。本文設計了一款能實現(xiàn)多種ECC算法的ASIP,能夠完成160~576-bit二元域和素數(shù)域上的有限域運算。
ASIP設計通常分為4個關鍵步驟:應用分析、體系結(jié)構(gòu)設計、代碼綜合和硬件綜合[7]。本文對此4個關鍵步驟進行了細化與擴展,采用了軟硬件協(xié)同的方法設計了一款專用指令ECC處理器,具體流程如圖1所示。設計采用自頂向下的設計方法,從系統(tǒng)驗證、RTL硬件仿真和FPGA硬件原型測試3個不同的層次對處理器的設計工作進行了驗證。
設計一款ECC專用指令處理器,要綜合考慮不同ECC算法的對性能、面積、功耗等參數(shù)的需求,對軟硬件進行合理地劃分,硬件方面主要進行處理器指令集體系結(jié)構(gòu)(ISA)模型設計,包含指令設計、寄存器設計等;軟件方面主要進行ECC算法程序設計以及與處理器配套的軟件開發(fā)、調(diào)試工具的設計,包括指令集模擬器 (ISS)、匯編器等。ISS、匯編器不僅可以作為處理器的開發(fā)、調(diào)試工具,而且還可以作為處理器的仿真器來使用。系統(tǒng)設計完成后需要對處理器進行系統(tǒng)驗證,并根據(jù)仿真結(jié)果重新對軟硬件進行劃分,調(diào)整處理器體系結(jié)構(gòu),優(yōu)化指令集,修改寄存器堆大小,使系統(tǒng)滿足設計需求和約束。系統(tǒng)驗證通過后可進行硬件RTL設計,將匯編程序編譯后的機器碼作為激勵,對電路結(jié)構(gòu)進行仿真,并進行優(yōu)化。RTL仿真通過后,建立FPGA硬件模型,對整個系統(tǒng)進行完備性驗證。
圖1 處理器設計流程
橢圓曲線有加密、解密、數(shù)字簽名、簽名認證等多種應用協(xié)議,定義的有限域通常采用素數(shù)域和二元域,且運算長度可變。為了滿足ECC多種運算形式的需要,結(jié)合硬件的約束,對軟硬件進行了劃分,采用了硬件實現(xiàn)ECC底層運算,軟件實現(xiàn)ECC算法流程的形式。
ECC各種應用協(xié)議都以點加、倍點以及點乘運算規(guī)則為基礎,具有層次性[8],如表1所示。上層算法可以通過調(diào)用下層的算法來實現(xiàn),點乘運算可以由多次調(diào)用點加和倍點操作完成,而點加、倍點運算則可以通過調(diào)用有限域上的模運算而實現(xiàn),包括模加/減、模約減、模乘、模平方及模逆等運算。在此基礎上,增加了移位、邏輯運算、比較等指令,從而構(gòu)成了處理器的運算指令。此外還設計了數(shù)據(jù)傳輸指令、控制指令、配置指令等,共4大類指令。其中配置指令為運算單元重構(gòu)而設計。
表1 ECC算法層次結(jié)構(gòu)
ECC算法具有計算密集型的特點,而且在調(diào)用有限域上的模運算來實現(xiàn)點加、倍點運算的過程中,有限域上的模運算操作存在較大數(shù)據(jù)并行性[9]。超長指令字(VLIW)體系結(jié)構(gòu)是目前常用的一種指令級并行處理方案[10],廣泛地應用于DSP等計算密集型的處理器設計。VLIW結(jié)構(gòu)中硬件提供若干個運算單元,各運算單元可并行執(zhí)行處理器指令,通過編譯器靜態(tài)分析程序中指令的依賴關系將可并行的指令一起發(fā)射執(zhí)行,把通常由硬件實現(xiàn)的功能交由軟件實現(xiàn)。VLIW一次發(fā)射的最大指令條數(shù)由處理器內(nèi)部運算單元的數(shù)量決定,運算單元越多,其對應的寄存器結(jié)構(gòu)就越復雜。因此,運算單元的個數(shù)需要根據(jù)處理器應用范圍來合理設置,做到成本與效率的平衡。
由于ECC底層運算指令較少,基于有限域操作的各種ECC算法流程比較固定,其運算流程的數(shù)據(jù)并行性可利用編寫匯編代碼的形式手動挖掘。因此,處理器采用VLIW結(jié)構(gòu)可簡化硬件設計,使處理器能夠達到較高的并行性能。
在各種ECC算法中,點乘是最主要的運算,決定了ECC算法的實現(xiàn)效率。設計對 Double-and-Add、m-ary、Montgomery、窗口NAF、固定基窗口、固定基的Comb等多種點乘調(diào)度算法進行了數(shù)據(jù)相關性分析,研究了運算單元數(shù)量對運算速度、資源消耗的影響,計算出不同并行度下時間開銷與資源開銷,表2列出了不同并行度下Montgomery點乘算法一輪迭代的時間與資源開銷。
表2 不同并行度下Montgomery點乘算法的時間和資源開銷
從表2可以看出,用4個運算單元的時間和資源的開銷分別是用2個運算單元的1/2和2倍。同時由于運算過程中的數(shù)據(jù)相關性約束,當運算單元增加時,并不能減少時間開銷。
在現(xiàn)代高性能的微處理器設計過程中,設置適當?shù)拇鎯臻g為處理器中的多條指令流提供充足和連續(xù)的數(shù)據(jù),成為提高處理器性能的關鍵。存儲容量的大小從根本上影響著各運算處理單元之間的數(shù)據(jù)交互速度,在某種程度上也決定了處理器的靈活性和性能提升空間。這里根據(jù)ECC運算數(shù)據(jù)占用空間的大小,設計了兩類寄存器:
(1)靜態(tài)配置寄存器:主要存儲模數(shù)/不可約多項式、運算長度、有限域類型、模乘運算常數(shù)、功能單元的模式等。這類數(shù)據(jù)所需存儲容量較小,且一旦算法確定,數(shù)據(jù)一般不會發(fā)生變化,因此寄存器端口設置、尋址模式比較簡單。
(2)通用寄存器:主要存儲外部輸入,橢圓曲線相關的常數(shù)值,計算過程中的臨時數(shù)據(jù),輸出的數(shù)據(jù)等。這類數(shù)據(jù)需要較大的存儲容量,主要是運算過程中的臨時數(shù)據(jù),且某些數(shù)據(jù)在運算完畢后,就很少再次使用,可以直接覆蓋,因此寄存器端口設置、尋址模式比較復雜。對應設計中的4個功能單元,將通用數(shù)據(jù)寄存器分成4組,每組設有1個寫端口,2個讀端口;支持直接尋址、增量尋址、寄存器間接尋址等尋址模式。通過對ECC算法進行統(tǒng)計,可以確定通用數(shù)據(jù)寄存器的容量。表3列出了二元域上部分坐標系下點加/倍點運算所需要的最大儲存容量,其中Len表示模運算的數(shù)據(jù)位寬。
表3 不同坐標系下存儲容量需求
依據(jù)上面的設計,處理器的結(jié)構(gòu)圖如圖2所示,主要有控制單元、接口單元及數(shù)據(jù)通路等3部分組成??刂茊卧饕瓿芍噶畲嫒?、指令譯碼、指令存儲器地址生成等過程中的信號生成工作,負責協(xié)調(diào)處理器內(nèi)部指令和外部用戶命令的正確執(zhí)行。接口單元則主要完成外部指令/命令及運算數(shù)據(jù)的輸入以及運算結(jié)果的輸出。數(shù)據(jù)通路是ECC處理器的數(shù)據(jù)執(zhí)行部分,包含F(xiàn)U0~FU3共4個可并行執(zhí)行的功能單元、通用向量寄存器堆、靜態(tài)配置寄存器、回寫單元等4個主要部分。4個功能單元是處理器執(zhí)行指令運算的核心,其功能是可配置的,由靜態(tài)配置寄存器提供必要的配置參數(shù),來完成不同參數(shù)下的運算處理。
圖2 ECC專用指令處理器整體結(jié)構(gòu)
軟硬件協(xié)同驗證[11-12]是一種在硬件設計確認制造之前,驗證軟件能在設計硬件上正確運行的過程,需要軟硬件同時進行設計驗證,及時在硬件和軟件之間交換需要的數(shù)據(jù)。由于ECC專用指令集處理器規(guī)模龐大、結(jié)構(gòu)復雜,為了確保設計的正確性,需要從系統(tǒng)驗證、RTL硬件仿真和FPGA硬件原型測試等不同層次對處理器的設計工作進行驗證。
系統(tǒng)驗證是處理器設計過程中不可或缺的重要環(huán)節(jié),進行系統(tǒng)驗證就是在系統(tǒng)仿真驗證平臺上運行算法程序的過程。系統(tǒng)級驗證一方面用來驗證算法的正確性以及該算法在硬件結(jié)構(gòu)上實現(xiàn)的可行性,另一方面用來對處理器的設計空間進行探索研究[13],例如修改功能單元設置,優(yōu)化指令集,調(diào)整寄存器堆容量等。
算法程序設計根據(jù)處理器的體系結(jié)構(gòu),對ECC算法進行并行調(diào)度算法研究,充分挖掘運算流程的數(shù)據(jù)并行性,用設計的專用指令編寫并行調(diào)度算法作為目標程序代碼。仿真驗證平臺主要是指用C++進行對系統(tǒng)的功能和性能進行描述,建立系統(tǒng)中處理器的虛擬原型;通過匯編器、調(diào)試器和仿真器來模擬處理器體系結(jié)構(gòu),實現(xiàn)算法程序的驗證。在本設計中,仿真器主要通過ISS來實現(xiàn)。ISS建立了處理器的ISA模型,通過模擬每條指令在目標處理器上的執(zhí)行效果來模擬目標機程序[14],能滿足處理器在指令精確級的仿真驗證,同時配合匯編器、調(diào)試器,能夠?qū)崿F(xiàn)處理器配套的軟件開發(fā)工具。
系統(tǒng)驗證的過程如圖3所示。算法程序經(jīng)過匯編器編譯得到二進制指令文件,將該文件輸入到ISS,對系統(tǒng)進行驗證。在驗證過程中,通過ISS可以查看目標處理器的內(nèi)部狀態(tài),例如寄存器、程序計數(shù)器值等。將輸出結(jié)果與Certicom Research提供的 測試向 量文件 Test Vectors for SEC1比對,可以驗證算法是否正確以及硬件設計是否可行,同時可以根據(jù)驗證過程中的一些統(tǒng)計數(shù)據(jù),對系統(tǒng)進行調(diào)整。
圖3 系統(tǒng)驗證過程
在系統(tǒng)驗證過程中,采用了ISS逐條模擬用戶指令的形式,只能夠提供精確到指令邊界的處理器狀態(tài),無法確定處理器在每個時鐘周期的狀態(tài)。因此,在系統(tǒng)級驗證通過之后,有必要進行軟件代碼與硬件RTL代碼的協(xié)同仿真驗證,通過RTL硬件仿真,來觀察電路運行的時序,做到時鐘周期精確級的仿真。
進行RTL硬件仿真,需要將系統(tǒng)級設計的ISA模型以硬件描述語言的形式表示出來,同時編寫RTL仿真驗證的測試文件。測試文件調(diào)用與匯編程序相對應二進制文件,作為RTL仿真中的測試向量,通過ModelSim對系統(tǒng)進行硬件代碼仿真驗證,如圖4所示。同時將ModelSim的輸出結(jié)果與系統(tǒng)驗證得到的結(jié)果進行比對,以確保RTL描述與ISA模型的設計一致。
圖4 RTL仿真過程
在RTL硬件仿真中,只對設計的RTL硬件描述代碼進行仿真,它無法確定設計真實的物理實現(xiàn)與設計描述之間的區(qū)別,和硬件實際工作狀態(tài)還有很大的差別。FPGA硬件原型測試將通過RTL硬件仿真的RTL代碼經(jīng)過綜合,下載到FPGA系統(tǒng)中,利用FPGA系統(tǒng)為處理器提供硬件環(huán)境,使硬件工作狀態(tài)更真實,速度更快[15]。
這里采用基于Altera公司EP3SL340H1152C3N芯片的DE3開發(fā)板,PC機通過USB接口發(fā)送命令,控制器作為開發(fā)板上的控制邏輯,通過USB接口接收命令,并對命令進行解析后傳給ECC處理器,處理器根據(jù)命令對數(shù)據(jù)進行ECC運算處理,并將最終的運算結(jié)果存儲到ECC處理器中或?qū)?shù)據(jù)通過USB接口傳回PC機。如圖5所示。
圖5 FPGA驗證系統(tǒng)組成框架
本文提出了一種軟硬件協(xié)同設計方法,完成了不同設計階段的仿真驗證,并使用該方法設計了一款專用指令ECC處理器。該處理器可配置性強、速度快、靈活性高,能夠完成160~576bit二元域和素數(shù)域上的有限域運算,能實現(xiàn)多種ECC應用協(xié)議,在不同的應用條件下具有良好的適應性。使用DC工具,采用SIMC 0.18μm CMOS工藝標準單元庫,對所設計的ECC處理器進行邏輯綜合,在4ns的約束條件下,處理器規(guī)模達到了225.89萬門,最高時鐘頻率可以達到250MHz。
[1]Kimmo Puusaari.Application specific instruction set processor microarchitecture for UTMS-FDD cell search [C].Tampere:Proceedings International Symposium on System-on-Chip,2005:46-49.
[2]SHEN Bilong,ZHAO Peng,CHEN Xucan,et al.Research and realization on analysis method of application features faced instruction set design of specific processor [J].Computer Engineering & Science,2009,31 (A01):115-119 (in Chinese).[沈弼龍,趙鵬,陳旭燦,等.面向?qū)S锰幚砥髦噶罴O計的應用特征分析方法研究與實現(xiàn) [J].計算機工程與科學,2009,31 (A01):115-119.]
[3]REN Kun,YAN Xiaolang,SUN Lingling.An ASIP compiler design and implementation [J].Journal of Circuits and Systems,2009,14 (6):59-62 (in Chinese). [任坤,嚴曉浪,孫玲玲.ASIP編譯器設計和實現(xiàn) [J].電路與系統(tǒng)學報,2009,14 (6):59-62.]
[4]LAI Jyuyuan,HUANG Chihtsun.Elixir:high-throughput cost-effective dual-field processors and the design framework for elliptic curve cryptography [J].IEEE Transaction on VeryLarge Scale Integration Systems,2008,16 (11):1567-1580.
[5]Tim Guneysu,Christof Paar.Ultra high performance ECC over NIST primes on commercial FPGAs [C].Berlin,Heidelberg:Proceeding Sof the 10th International Workshop on Cryptographic Hardware and Embedded Systems,2008:62-78.
[6]CAI Liang,DAI Zibin,CHEN Lu.Design and implementation of general ECC coprocessor [J].Computer Engineering,2009,34 (4):140-142 (in Chinese). [蔡亮,戴紫彬,陳璐.一種通用ECC協(xié)處理器的設計與實現(xiàn) [J].計算機工程,2009,34 (4):140-142.]
[7]YANG Jun.Research on application specific instruction set processor (ASIP)architecture design [D].Hefei:University of Scinece and Technology of China,2006 (in Chinese). [楊君.專用指令集處理器 (ASIP)體系結(jié)構(gòu)設計研究 [D].合肥:中國科學技術大學,2006.]
[8]ZHANG Jun.Research on technology of application specific instruction and reconfigurable unit of Eliptic curve cryptography processor [D].Zhengzhou:PLA Information Engineering U-niversity,2010 (in Chinese).[張軍.ECC處理器專用指令與可重構(gòu)單元設計技術研究 [D].鄭州:解放軍信息工程大學,2010.]
[9]CAI Liang.Research and design of the dual-field ECC coprocessor architecture [D].Zhengzhou:PLA Information Engineering University,2008 (in Chinese).[蔡亮.雙域ECC協(xié)處理器體系結(jié)構(gòu)研究與設計 [D].鄭州:解放軍信息工程大學,2008.]
[10]SHEN Zheng,SUN Yihe.Architecture design of simultaneous multithreading VLIW DSP [J].Acta Electronica Sinica,2010,38 (2):352-358 (in Chinese). [沈鉦,孫義和.一種支持同時多線程的 VLIW DSP架構(gòu) [J].電子學報,2010,38 (2):352-358.]
[11]ZHAO Gang,HOU Ligang,LIU Yuan.Methodology of SoC design using hardware/software cosimulation [J].Microelectronics & Computer,2006,23 (6):24-26 (in Chinese).[趙剛,侯立剛,劉源.基于SoC設計的軟硬件協(xié)同驗證方法學 [J].微電子學與計算機,2006,23 (6):24-26.]
[12]BAO Hua,HONG Yi,GUO Erhui.Design of HW/SW coverification platform for SoC [J].Computer Engineering,2009,35 (8):271-273 (in Chinese). [鮑華,洪一,郭二輝.面向SoC的軟硬件協(xié)同驗證平臺設計 [J].計算機工程,2009,35 (8):271-273.]
[13]SHAO Yang,LIU Hongjin,HE Xing.A system level methodology for ASIP design [J].Microelectronics & Computer,2007,24 (7):102-104 (in Chinese). [邵洋,劉鴻瑾,何星.專用指令集處理器系統(tǒng)級設計方法 [J].微電子學與計算機,2007,24 (7):102-104.]
[14]YAN Yingjian,YE Jiansen,LIU Junwei.VLIW processor ISA modeling and aided software optimization technology [J].Computer Engineering and Design,2009,30 (11):2727-2729(in Chinese).[嚴迎建,葉建森,劉軍偉.VLIW處理器ISA建模與輔助軟件優(yōu)化技術 [J].計算機工程與設計,2009,30 (11):2727-2729.]
[15]WANG Peidong,LI Fengwei,YANG Juncheng.Hardware/Software coverification solution integrated FPGA and ISS [J].Computer Engineering and Application,2009,45 (30):73-74(in Chinese).[王培東,李鋒偉,楊俊成.一種融合FPGA和ISS技術的軟硬件協(xié)同驗證方法 [J].計算機工程與應用,2009,45 (30):73-74.]