文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.200005
中文引用格式: 薛煜騫,戴紫彬. 可重構(gòu)分組密碼多發(fā)射流水處理架構(gòu)研究與設(shè)計[J].電子技術(shù)應(yīng)用,2020,46(4):40-44,48.
英文引用格式: Xue Yuqian,Dai Zibin. Reconfiurable multi-launch pipeline processing architecture for block cipher[J]. Application of Electronic Technique,2020,46(4):40-44,48.
0 引言
隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展,芯片在軍事、經(jīng)濟和社會中發(fā)揮著越來越重要的作用。分組密碼[1]作為重要的加密算法,其高效實現(xiàn)直接影響系統(tǒng)的性能。可重構(gòu)陣列密碼處理器針對不同的加密算法進(jìn)行優(yōu)化,相比ASIC專用處理器,具有很高靈活性。近年來,面向分組密碼可重構(gòu)處理架構(gòu)的研究也越來越多。因此,如何充分開發(fā)分組密碼的并行性[2]和流水特性[3],如何設(shè)計高性能可重構(gòu)分組密碼處理架構(gòu),已經(jīng)成為密碼實現(xiàn)技術(shù)的重要研究問題之一。
國內(nèi)外的研究者們對可重構(gòu)分組密碼的高效實現(xiàn)進(jìn)行了研究。文獻(xiàn)[4]提出了含有多Bank存儲器的新型CGRA架構(gòu),數(shù)據(jù)被存儲在多個Bank內(nèi),雖然提高了并行訪問能力,但由于和本文需要處理的粗粒度位寬不匹配,因此未能充分達(dá)到并行的需求。文獻(xiàn)[5]提出了可重構(gòu)分簇式分組密碼處理架構(gòu)RCBCP,設(shè)計并實現(xiàn)了5級流水線及運算單元內(nèi)流水結(jié)構(gòu),提高了分組算法的加密性能。但復(fù)雜的可重構(gòu)運算單元,使得關(guān)鍵路徑較大,在一定程度上限制了系統(tǒng)的性能。文獻(xiàn)[6]提出的Cryptoraptor陣列結(jié)構(gòu)處理器,集成了80個PE處理單元,使得AES和DES算法在CBC模式下的吞吐率達(dá)到6.4 Gb/s和2.67 Gb/s,資源消耗巨大。
為充分挖掘分組密碼的并行性和流水特性,本文首先提出了一種可重構(gòu)多發(fā)射流水處理架構(gòu)(Reconfigurable Multi-launch Pipeline Processing Architecture,RMPA)。設(shè)計該架構(gòu)的目的在于減少閑置資源,從而提高可重構(gòu)計算處理器的資源利用率和運算效率。此外,為了滿足可重構(gòu)陣列系統(tǒng)的高并行度特點,本文還提出了相應(yīng)的多發(fā)射數(shù)據(jù)管理機制。高效的數(shù)據(jù)管理對于可重構(gòu)陣列的處理性能有顯著的提升。
1 RMPA-可重構(gòu)多發(fā)射流水處理架構(gòu)
可重構(gòu)分組密碼多發(fā)射流水處理架構(gòu)RMPA是以PEs陣列為主要構(gòu)成元素,結(jié)合流水線技術(shù)提出的。流水線結(jié)構(gòu)是高效計算常采用的處理結(jié)構(gòu)。通過分析分組密碼的核心操作,并用流水結(jié)構(gòu)進(jìn)行處理,使得多個數(shù)據(jù)在流水線中并行開始不同的操作。該架構(gòu)的基本思路是:利用具有32 bit粗粒度的n×n-PEs陣列來處理各種粒度的密碼算法,并從中開發(fā)算法的深度流水和適度并行特性。
1.1 RMPA整體架構(gòu)設(shè)計
RMPA整體架構(gòu)如圖1所示,可抽象分成3級:RU(Reconfigurable Unit)功能單元級、RE(Reconfigurable Element)陣列級和RMPA架構(gòu)級。RU功能單元是提供密碼操作功能的關(guān)鍵部件,在詳細(xì)分析了分組密碼算法運算單元的基礎(chǔ)上,RU功能單元主要執(zhí)行以下7種操作:S盒、GF(2n)乘法、移位、模乘、比特置換、邏輯和模加/減。每一個RU可以執(zhí)行一個字級操作,能夠滿足分組密碼的各種位寬,并且每個RE都附加了一個寄存器文件(Register file)和一個配置寄存器(Configuration Reg),寄存器文件用于寄存臨時數(shù)據(jù)和中間結(jié)果。配置寄存器通過配置不同上下文,可以提高系統(tǒng)的處理性能。PE陣列是由n×n個REs通過Crossbar分層互連結(jié)構(gòu)組成的。RMPA架構(gòu)主要由主控制器(Main Controller)、配置上下文控制器(Context Controller)、RE陣列(Array)、主存儲器(Main Memory)、Bank存儲器(Bank Memory)和密鑰存儲器(Key Memory)構(gòu)成。主控制器負(fù)責(zé)對整個系統(tǒng)進(jìn)行控制。主存儲器存儲配置信息和數(shù)據(jù),它會根據(jù)需求將數(shù)據(jù)輸入到配置模塊或Bank存儲器中。Bank存儲器則是存儲待處理的數(shù)據(jù)和處理完的數(shù)據(jù),且Bank存儲器可以被RE陣列和DMA控制器訪問,DMA控制器負(fù)責(zé)主存儲器和Bank存儲器之間進(jìn)行數(shù)據(jù)交換。密鑰存儲器用于存儲算法生成的子密鑰。該結(jié)構(gòu)采用動態(tài)模式配置上下文,每一個RE內(nèi)部都有自己的配置寄存器,而且能夠直接和配置上下文存儲器連接。配置控制器從本地配置存儲器選擇正確的上下文,然后寫進(jìn)每一個REs的配置寄存器。
1.2 多總線互連網(wǎng)絡(luò)結(jié)構(gòu)
陣列中處理單元的行與列之間多采用總線、2D-Mesh和Crossbar互連結(jié)構(gòu)。相比之下,雖然總線和2D-Mesh的代價較低,但在靈活性上與Crossbar相差甚遠(yuǎn)。為使并行處理更加高效地進(jìn)行,同時降低互連網(wǎng)絡(luò)的復(fù)雜度,本文在Crossbar網(wǎng)絡(luò)的基礎(chǔ)上采用多總線互連網(wǎng)絡(luò)結(jié)構(gòu)。
Bank存儲器與陣列之間采用多總線互連網(wǎng)絡(luò)結(jié)構(gòu),如圖2所示。同一列上的RE需連接到一條總線上,任一列的總線可以連接到任何一個Bank上,這種互連網(wǎng)絡(luò)能夠保證每一個PE可以訪問到任何一個Bank,任何一個Bank內(nèi)的數(shù)據(jù)可以輸入到功能單元中;每一層的數(shù)據(jù)可以進(jìn)行隔層傳輸,處理完的數(shù)據(jù)或輸出到Bank存儲器或密鑰存儲器內(nèi)。這種互連網(wǎng)絡(luò)結(jié)構(gòu)使該架構(gòu)能夠靈活支持CBC反饋模式的密碼運算。
2 RMPA架構(gòu)多發(fā)射機制
RMPA架構(gòu)的多發(fā)射機制,原理就是使存儲器往陣列中同時發(fā)射多組數(shù)據(jù),進(jìn)而有效提高系統(tǒng)的處理性能。為滿足這一條件,不僅需要設(shè)計一種數(shù)據(jù)多發(fā)射結(jié)構(gòu),而且對存放數(shù)據(jù)的Bank也有一定的要求。多發(fā)射結(jié)構(gòu)如圖3所示,主要由數(shù)據(jù)分發(fā)模塊和數(shù)據(jù)索引列表組成。數(shù)據(jù)分發(fā)模塊的作用在于確保可重構(gòu)陣列中數(shù)據(jù)的流水實現(xiàn);數(shù)據(jù)索引列表則對數(shù)據(jù)包進(jìn)行區(qū)分,以保障數(shù)據(jù)包的完整性。
2.1 RAM存儲結(jié)構(gòu)
基于多發(fā)射研究,考慮如何實現(xiàn)數(shù)據(jù)包存儲資源的動態(tài)分配[7],從而降低硬件資源的浪費和吞吐率的提升。RAM作為重要的Bank組成結(jié)構(gòu),主要用于實現(xiàn)對數(shù)據(jù)的緩存,不同于FIFO結(jié)構(gòu)的數(shù)據(jù)輸入輸出過程,RAM依靠地址實現(xiàn)對數(shù)據(jù)的寫入與讀出,數(shù)據(jù)讀出順序與其寫入順序無關(guān)。因此,構(gòu)建了圖4所示的多端口RAM結(jié)構(gòu)。
采用多輸出RAM結(jié)構(gòu)構(gòu)建了數(shù)據(jù)存儲的基礎(chǔ),通過地址選擇輸出數(shù)據(jù)的來源。由于RAM地址是連續(xù)的,因此在數(shù)據(jù)存儲時可以確保數(shù)據(jù)的連續(xù)存儲,通過地址來區(qū)分不同的數(shù)據(jù)包,使數(shù)據(jù)包的注入更加靈活。為了滿足對不同長度數(shù)據(jù)包的并行注入及下一數(shù)據(jù)包的動態(tài)加載,下面將針對數(shù)據(jù)發(fā)射模塊的結(jié)構(gòu)展開詳細(xì)研究。
2.2 數(shù)據(jù)發(fā)射模塊結(jié)構(gòu)及索引列表
數(shù)據(jù)發(fā)射模塊是確??芍貥?gòu)陣列流水實現(xiàn)的基礎(chǔ),根據(jù)上一節(jié)對數(shù)據(jù)存儲模塊的研究可知,數(shù)據(jù)存儲模塊采用多輸出RAM結(jié)構(gòu)實現(xiàn)。同時,由于不同數(shù)據(jù)包的長度不同,因此數(shù)據(jù)發(fā)射模塊需要具備獨立并行處理數(shù)據(jù)的特征,從而降低因數(shù)據(jù)包長度的差異導(dǎo)致的流水線中斷的情況發(fā)生。
在數(shù)據(jù)存儲模塊中,不同的數(shù)據(jù)包依靠數(shù)據(jù)包的起始地址及數(shù)據(jù)包長度進(jìn)行區(qū)分。在數(shù)據(jù)發(fā)射模塊中,需要支持?jǐn)?shù)據(jù)讀取的起始地址和長度可以動態(tài)配置。因此,構(gòu)建了圖5所示的數(shù)據(jù)發(fā)射模塊的基本結(jié)構(gòu)。
起始寄存器用于存儲數(shù)據(jù)包的起始地址(基地址),可配置計數(shù)器用于產(chǎn)生當(dāng)前數(shù)據(jù)包中數(shù)據(jù)的偏移地址,通過加法器將基地址與偏移地址相加可以得到當(dāng)前送往可重構(gòu)陣列的數(shù)據(jù)地址。配置控制模塊用于讀取數(shù)據(jù)包包頭并對包頭進(jìn)行解析,得到當(dāng)前數(shù)據(jù)包的起始地址及長度,以實現(xiàn)對起始寄存器及可配置寄存器的配置。同時,配置控制模塊也會產(chǎn)生數(shù)據(jù)存儲模塊的讀使能,與數(shù)據(jù)地址相配合,從數(shù)據(jù)存儲模塊中讀取相應(yīng)的數(shù)據(jù)并送入可重構(gòu)陣列中相應(yīng)的位置。
為了確保數(shù)據(jù)包的完整性以及數(shù)據(jù)包在數(shù)據(jù)存儲模塊中存儲的齊整性,本文構(gòu)建了基于任務(wù)映射的數(shù)據(jù)包索引機制,并在多發(fā)射結(jié)構(gòu)中增加了共享的數(shù)據(jù)包索引列表,用于實現(xiàn)對數(shù)據(jù)包的索引。為了對數(shù)據(jù)包進(jìn)行區(qū)分,本文構(gòu)建了基于任務(wù)號及數(shù)據(jù)包包號的數(shù)據(jù)索引列表,其格式定義如圖6所示。
為便于存儲,本文將數(shù)據(jù)包索引列表定義為32 bit。其中第28到31 bit代表任務(wù)編號,用于對不同的任務(wù)進(jìn)行區(qū)分,共4 bit,能夠支持最大16個任務(wù);第26到27 bit為保留字段;第20到25 bit為數(shù)據(jù)包包號,用于區(qū)分同一任務(wù)中的不同數(shù)據(jù)包,共6 bit,因此單任務(wù)能夠支持最大64個數(shù)據(jù)包;對于網(wǎng)絡(luò)數(shù)據(jù)包而言,其長度在64~1 518 B范圍,因此定義1 518 B為單個數(shù)據(jù)包的最大長度,則可以采用9 bit表示單個數(shù)據(jù)包的長度,最大支持2 048 B的數(shù)據(jù);由于本文采用多路并行結(jié)構(gòu)設(shè)計數(shù)據(jù)發(fā)射模塊,在數(shù)據(jù)存儲模塊中應(yīng)至少能夠容納多組最大長度的數(shù)據(jù)包,因此本文將起始地址長度定義為11 bit,從而滿足應(yīng)用需求。
2.3 數(shù)據(jù)多發(fā)射接口電路設(shè)計
數(shù)據(jù)輸入接口電路結(jié)構(gòu)如圖7所示。上位機將待加解密應(yīng)用分解為不同的任務(wù),并對每個任務(wù)中的數(shù)據(jù)進(jìn)行劃分,劃分為不同長度的數(shù)據(jù)包。根據(jù)數(shù)據(jù)包索引列表格式建立數(shù)據(jù)包索引列表,將數(shù)據(jù)包存入數(shù)據(jù)存儲模塊中的相應(yīng)地址。當(dāng)應(yīng)用被確定后,各數(shù)據(jù)包的起始地址即被確定,為了盡可能減少存儲資源消耗,采用數(shù)據(jù)覆蓋的方式在數(shù)據(jù)存儲模塊中對數(shù)據(jù)包進(jìn)行存儲,當(dāng)某一數(shù)據(jù)包完成運算后,其所占用的存儲資源即被釋放,可以在相應(yīng)存儲資源上進(jìn)行覆蓋存儲。這一過程主要由上位機實現(xiàn),通過對數(shù)據(jù)包運算過程的規(guī)劃,實現(xiàn)數(shù)據(jù)的無沖突讀寫。
輸入數(shù)據(jù)接口的工作流程如下:
(1)數(shù)據(jù)發(fā)射模塊從數(shù)據(jù)包索引列表中分別讀取數(shù)據(jù)包索引,并解析數(shù)據(jù)包索引中的數(shù)據(jù)包起始地址及長度,將數(shù)據(jù)包起始地址寫入起始寄存器,并將可配置計數(shù)器的溢出值設(shè)置為數(shù)據(jù)包長度;
(2)數(shù)據(jù)發(fā)射模塊生成數(shù)據(jù)包的讀地址及讀使能,并將相應(yīng)信號送至數(shù)據(jù)存儲模塊;
(3)數(shù)據(jù)存儲模塊依據(jù)地址及讀使能,將相應(yīng)數(shù)據(jù)取出并輸出至粗粒度可重構(gòu)陣列的對應(yīng)位置,同時,配置控制模塊生成相應(yīng)的寫使能;
(4)當(dāng)數(shù)據(jù)發(fā)射模塊中可配置計數(shù)器產(chǎn)生溢出時,生成溢出信號并傳遞至配置控制模塊,配置控制模塊按順序從數(shù)據(jù)包索引列表中讀取數(shù)據(jù)包索引,繼續(xù)進(jìn)行運算。
輸入數(shù)據(jù)接口的工作流程確保了輸入數(shù)據(jù)接口能正確地實現(xiàn)數(shù)據(jù)包的解析、數(shù)據(jù)的讀取及發(fā)射,確保了粗粒度可重構(gòu)陣列中流水線的連續(xù)正確運轉(zhuǎn)。
3 實現(xiàn)性能比較
本設(shè)計采用Verilog硬件描述語言對分組密碼算法進(jìn)行RTL級描述,利用QuartusⅡ9.0軟件工具對設(shè)計進(jìn)行時序仿真,并選用65 nm CMOS工藝標(biāo)準(zhǔn)單元庫邏輯綜合獲得硬件資源代價。驗證環(huán)境使用Synopsys公司的DC(Design Compiler)邏輯綜合工具,它可以將硬件設(shè)計代碼轉(zhuǎn)換為門級網(wǎng)表,并且能夠映射為特定工藝下的標(biāo)準(zhǔn)單元。為保證工作穩(wěn)定性,將RMPA的工作頻率設(shè)置為350 MHz,根據(jù)仿真綜合結(jié)果,為更加全面地評估RMPA的實現(xiàn)性能,本文選取典型分組密碼算法AES進(jìn)行分析。RMPA與其他可重構(gòu)結(jié)構(gòu)性能對比情況如表1所示。其中RCBCP[5]和Cryptonite[8]為專用指令密碼處理器,Celator[9]、RCPA[10]和S-RCCPA[11]為可重構(gòu)陣列密碼處理結(jié)構(gòu)。由于各處理結(jié)構(gòu)采用的工藝有較大差異,因此將各結(jié)構(gòu)的面積和吞吐率均按照65 nm CMOS工藝換算并進(jìn)行比較。
結(jié)果表明,RMPA多發(fā)射結(jié)構(gòu)可以高效處理AES分組密碼算法,且吞吐率明顯高于其他專用指令處理器。與Celator和BCORE等其他可重構(gòu)陣列結(jié)構(gòu)相比較,本結(jié)構(gòu)對分組密碼算法的吞吐率仍處于優(yōu)勢。
4 結(jié)論
為充分挖掘分組密碼在可重構(gòu)陣列中的流水及并行特性,本論文提出了一種面向分組密碼的可重構(gòu)多發(fā)射流水處理架構(gòu)RMPA。在65 nm CMOS工藝下對RMPA進(jìn)行了邏輯綜合和功能仿真,分析了AES算法在該架構(gòu)下的加密性能,其單發(fā)射/多發(fā)射吞吐率分別達(dá)到了0.9 Gb/s和3.19 Gb/s。相比其他密碼處理器,本架構(gòu)吞吐率高,有一定的性能優(yōu)勢,具有更好的應(yīng)用前景。下一步將根據(jù)需求對數(shù)據(jù)的多收集機制進(jìn)行研究,并采用多種分組密碼算法進(jìn)行分析比較,完善該架構(gòu)體系。
參考文獻(xiàn)
[1] 金晨輝,鄭浩然,張少武,等.密碼學(xué)[M].北京:高等教育出版社,2009.
[2] 戴樂育,李偉,徐金甫,等.面向任務(wù)級的多核密碼處理器數(shù)據(jù)分配機制[J].計算機工程與設(shè)計,2015,36(1):98-102.
[3] CONG J,HUANG H,MA C,et al.A fully pipelined and dynamically composable architecture of CGRA[C].2014 IEEE 22nd Annual International Symposium on Field-Programmable Custom Computing Machines(FCCM),2014.
[4] KIM Y,LEE J,SHRIVASTAVA A,et al.High throughput data mapping for coarse-grained reconfifigurable architec-tures[J].IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,2011,30(11):1599-1609.
[5] 孟濤,戴紫彬.分組密碼處理器的可重構(gòu)分簇式架構(gòu)[J].電子與信息學(xué)報,2009,31(2):453-456.
[6] SAYILAR G,CHIOU D.Cryptoraptor: high-throughput reconfigurable cryptographic processor[C].Proceedings of the 2014 IEEE/ACM International Conference on Computer-Aided Design,2015:155–161.
[7] 李軍偉,戴紫彬,南龍梅,等.多引擎密碼SoC并行處理技術(shù)研究與設(shè)計[J].計算機工程與設(shè)計,2014(7):2312-2316.
[8] BUCHTY R,HEINTZE N,OLIVA D.Cryptonite-a programmable crypto processor architecture for high-bandwidth applications[C].International Conference on Architecture of Computing Systems,2004.
[9] FRONTE D,PEREZ A,PAYRAT E.Celator:a multi-algo-rithm cryptographic co-processor[C].International Conference on Reconfigurable Computing & FPGAs.IEEE,2008.
[10] 楊曉輝,戴紫彬,張永福.可重構(gòu)分組密碼處理結(jié)構(gòu)模型研究與設(shè)計[J].計算機研究與發(fā)展,2009,46(6):962-967.
[11] 陳韜,羅興國,李校南,等.一種基于流處理框架的可重構(gòu)分簇式分組密碼處理結(jié)構(gòu)模型[J].電子與信息學(xué)報,2014(12):237-244.
作者信息:
薛煜騫,戴紫彬
(信息工程大學(xué),河南 鄭州450001)