国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SM4國(guó)密算法的異構(gòu)可重構(gòu)計(jì)算系統(tǒng)研究

2023-10-18 23:14:21王騰騰柴志雷
關(guān)鍵詞:現(xiàn)場(chǎng)可編程門陣列

王騰騰 柴志雷

摘 要:隨著互聯(lián)網(wǎng)的數(shù)據(jù)量呈爆炸式增長(zhǎng),以純軟件方式運(yùn)行的SM4算法速度慢、CPU占用率高,而基于Verilog/VHDL實(shí)現(xiàn)的現(xiàn)場(chǎng)可編程門陣列或?qū)S眉呻娐反嬖陟`活性差、升級(jí)維護(hù)困難等問題。為了解決上述問題,提出了一種SM4國(guó)密算法的異構(gòu)可重構(gòu)計(jì)算系統(tǒng)的設(shè)計(jì)方案,采用高層次綜合和異構(gòu)可重構(gòu)技術(shù),通過優(yōu)化數(shù)據(jù)內(nèi)存分配與傳輸、優(yōu)化循環(huán)、矢量化內(nèi)核以及增加計(jì)算單元等方式,設(shè)計(jì)了SM4算法電子密碼本模式和計(jì)數(shù)器模式的定制計(jì)算架構(gòu),并將該系統(tǒng)部署在FPGA異構(gòu)平臺(tái)。實(shí)驗(yàn)結(jié)果表明:SM4-ECB和SM4-CTR兩種主流工作模式的定制計(jì)算架構(gòu)在Intel Stratix 10 GX2800上,吞吐率分別達(dá)到109.48 Gbps和63.73 Gbps,是Intel Xeon E5-2650 V2 CPU上對(duì)應(yīng)模式吞吐率的232.63倍和141.62倍。以此核心模塊(包含數(shù)據(jù)輸入、加解密、輸出)的整體異構(gòu)可重構(gòu)計(jì)算系統(tǒng)的性能也分別達(dá)到了純軟件方式的4.90倍和3.56倍。該方案不僅實(shí)現(xiàn)了針對(duì)特定模式進(jìn)行定制加速,而且可以通過硬件重構(gòu)靈活支持不同的計(jì)算模式,兼顧了系統(tǒng)的靈活性和高效性。

關(guān)鍵詞:SM4;異構(gòu)可重構(gòu);現(xiàn)場(chǎng)可編程門陣列;國(guó)密算法;硬件加速

中圖分類號(hào):TP309?? 文獻(xiàn)標(biāo)志碼:A

文章編號(hào):1001-3695(2023)09-042-2826-06

doi:10.19734/j.issn.1001-3695.2022.12.0832

Research on heterogeneous reconfigurable computing system of SM4 national security algorithm

Wang Tengteng1,Chai Zhilei1,2

(1.School of Artificial Intelligence & Computer Science,Jiangnan University,Wuxi Jiangsu 214122,China;2.Jiangsu Provincial Enginee-ring Laboratory of Pattern Recognition & Computational Intelligence,Wuxi Jiangsu 214122,China)

Abstract:With the explosive growth of the data volume of the Internet,there are problems such as the slow speed and high CPU utilization of the SM4 algorithm running in pure software mode.While the field programmable gate array or dedicated integrated circuit based on Verilog/VHDL has problems such as poor flexibility and difficulty in upgrading and maintenance.In order to solve the above problems,this paper proposed a design scheme of heterogeneous reconfigurable computing system based on SM4 algorithm.Using high-level synthesis and heterogeneous reconfigurable technology,

it designed the customized computing architecture of SM4 algorithms electronic cipher book mode and counter mode by optimizing the allocation and transmission of data memory,optimizing the loop,vectorizing the kernel and adding computing units.And the system was deployed on the FPGA heterogeneous platform.The experimental results show that the customized computing architecture of SM4-ECB and SM4-CTR,two mainstream operating modes,on the Intel Stratix 10 GX2800,has a throughput of 109.48 Gbps and 63.73 Gbps respectively,which is 232.63 times and 141.62 times throughput of the corresponding mode on the Intel Xeon E5-2650 V2 CPU.The performance of the whole heterogeneous reconfigurable computing system composed of this core module,including data input,encryption and decryption,and output,has also reached 4.90 times and 3.56 times of that of pure software mode.This paper not only realizes customized acceleration for specific modes,but also flexibly supports different computing modes through hardware reconfiguration,taking into account the flexibility and efficiency of the system.

Key words:SM4;heterogeneous reconfigurable;FPGA;secret algorithm;hardware speedup

0 引言

SM4算法是我國(guó)國(guó)家密碼管理局發(fā)布的無線局域網(wǎng)標(biāo)準(zhǔn)的分組對(duì)稱密碼算法,是我國(guó)密碼行業(yè)標(biāo)準(zhǔn)算法之一[1,2]。SM4算法主要承擔(dān)安全通信過程中的加密和解密任務(wù),隨著大數(shù)據(jù)時(shí)代的來臨以及無線局域網(wǎng)的廣泛普及,其傳輸信息的安全性面臨著巨大挑戰(zhàn)[3],同時(shí)對(duì)數(shù)據(jù)傳輸速度提出了更高的要求。單一的加密模式以及使用純軟件運(yùn)行SM4算法的方式已無法滿足現(xiàn)今海量敏感數(shù)據(jù)傳輸過程中安全性和高效性的需求[4]。

目前,為了滿足數(shù)據(jù)高效傳輸?shù)膽?yīng)用場(chǎng)景,許多國(guó)內(nèi)外學(xué)者已經(jīng)在各種平臺(tái)上實(shí)現(xiàn)該算法并取得了很多優(yōu)秀成果。2017年,Cheng等人[5]設(shè)計(jì)的CPU-GPU模式的硬件加速架構(gòu),其中針對(duì)SM4算法并行優(yōu)化,使其ECB(electronic code book)模式吞吐率提高到76.89 Gbps,其CTR(counter)模式吞吐率達(dá)到32.23 Gbps。

雖然此硬件架構(gòu)使其吞吐率得到了極大提升,但是該工作存在耗能高、靈活性差的問題。因此,Guan等人[6]在2018年提出了多種基于FPGA的硬件設(shè)計(jì),探索面積和速度之間的權(quán)衡,速度第一的設(shè)計(jì)通過結(jié)合狀態(tài)機(jī)和32級(jí)流水線設(shè)計(jì),其吞吐率達(dá)到了27.15 Gbps。2019年,劉金峒等人[7]設(shè)計(jì)了循環(huán)迭代結(jié)構(gòu)和全并行流水結(jié)構(gòu),并提出了一種部分并行可裁剪式結(jié)構(gòu),在FPGA實(shí)現(xiàn)后,全并行流水結(jié)構(gòu)吞吐率為12.89 Gbps,部分可裁剪式結(jié)構(gòu)吞吐率則為3.2 Gbps。2022年,李建立等人[8]對(duì)SM4算法提出了一種基于復(fù)合域S盒的二次流水全展開硬件架構(gòu),SM4吞吐率最高達(dá)53.76 Gbps。上述基于FPGA的工作均采用傳統(tǒng)的硬件描述語言Verilog/VHDL實(shí)現(xiàn),雖然提供了更精確的時(shí)序設(shè)計(jì)并且降低了功耗,但是開發(fā)周期長(zhǎng)且維護(hù)困難。其中多數(shù)工作僅實(shí)現(xiàn)了一種模式,缺乏靈活性,無法滿足不同應(yīng)用場(chǎng)景的安全需求。

綜上所述,針對(duì)SM4算法兼具高效性和靈活性的計(jì)算方法和系統(tǒng)的研究,具有重要意義,并且隨著大數(shù)據(jù)時(shí)代各種應(yīng)用場(chǎng)景的增多,這一需求變得更加迫切。SM4算法的ECB和CTR模式具有簡(jiǎn)單、快速、并行性高的特點(diǎn),可以滿足目前人們對(duì)高吞吐率和不同應(yīng)用場(chǎng)景的需求。本文針對(duì)SM4算法提出的異構(gòu)可重構(gòu)方法可以將SM4算法的ECB和CTR模式融合在一起,利用FPGA的可重構(gòu)特性配置控制模塊,按需加載不同的模式,以滿足不同的安全需求。同時(shí)利用高層次描述語言O(shè)penCL設(shè)計(jì)了兩種模式的定制計(jì)算架構(gòu),通過流水線架構(gòu)結(jié)合OpenCL中Kernel執(zhí)行特點(diǎn),提出了新的SM4算法兩種模式的硬件加速優(yōu)化思路,相較于傳統(tǒng)Verilog/VHDL開發(fā)方式,縮短了開發(fā)周期、有利于更新和維護(hù),且性能表現(xiàn)更佳。因此,本文設(shè)計(jì)的SM4算法的異構(gòu)可重構(gòu)計(jì)算系統(tǒng),不僅利用FPGA提高了計(jì)算的高效性,還實(shí)現(xiàn)了主機(jī)端對(duì)兩種加密模式的在線動(dòng)態(tài)重構(gòu),使得該系統(tǒng)兼顧靈活性和高效性。

本文通過OpenCL設(shè)計(jì)的SM4算法的異構(gòu)可重構(gòu)計(jì)算系統(tǒng),包含SM4算法的ECB和CTR兩種加密模式的定制硬件加速框架,通過在Intel Stratix 10 GX 2800上硬件重構(gòu)實(shí)現(xiàn)了SM4算法兩種加密模式的切換。最終系統(tǒng)中ECB和CTR模式的整體加速效果與純軟件方式相比,分別獲得了4.897和3.561的加速比,核心模塊在FPGA片上的吞吐率分別達(dá)到了108.43 Gbps、63.73 Gbps。

1 SM4算法

SM4是我國(guó)自主設(shè)計(jì)的分組對(duì)稱密碼算法,其分組長(zhǎng)度為128 bit,密鑰長(zhǎng)度也為128 bit。加密算法與密鑰擴(kuò)展算法均采用32輪非線性迭代結(jié)構(gòu),以字(32 bit)為單位進(jìn)行加密運(yùn)算,每一次迭代運(yùn)算均為一輪變換函數(shù)F。SM4算法加/解密算法的結(jié)構(gòu)相同,不同的是使用輪密鑰相反,其中解密輪密鑰是加密輪密鑰的逆序。

1.1 SM4密鑰擴(kuò)展算法

將128 bit的初始密鑰MK=(MK0,MK1,MK2,MK3)的每個(gè)字分別與128 bit的系統(tǒng)參數(shù)FK=(FK0,F(xiàn)K1,F(xiàn)K2,F(xiàn)K3)的每個(gè)字進(jìn)行異或運(yùn)算得到四個(gè)字(K0,K1,K2,K3),如式(1)所示。再把后三個(gè)字與固定參數(shù)CK0做異或運(yùn)算后進(jìn)行函數(shù)T′運(yùn)算獲得的結(jié)果C與K0做異或運(yùn)算,就得到了第一輪的子密鑰rk0,也是下一個(gè)密鑰運(yùn)算的K4,如式(2)所示。

1.3 SM4算法性能瓶頸分析

由于輪函數(shù)F需要做32輪迭代,其迭代部分包括異或操作、S盒變換、比特位左移、反序變換等操作,其執(zhí)行效率是影響SM4算法性能的關(guān)鍵因素。所以,將SM4算法的輪函數(shù)F進(jìn)行優(yōu)化設(shè)計(jì)并運(yùn)行在適合做大量數(shù)據(jù)并行運(yùn)算的FPGA端,能夠有效提高其運(yùn)行速率、降低運(yùn)行時(shí)間,從而大幅度提升SM4算法整體運(yùn)行效率。將CTR模式中的算子自增計(jì)算利用FPGA提前計(jì)算,能夠解決因?yàn)槊恳惠嗊M(jìn)行一次算子自增計(jì)算的數(shù)據(jù)依賴和計(jì)算延遲問題,進(jìn)而提高算法整體運(yùn)行效率。

在本文實(shí)驗(yàn)中,因?yàn)槊總€(gè)明文塊使用的密鑰相同,所以只需要將密鑰擴(kuò)展算法計(jì)算一次且計(jì)算量不大。將所有傳入的明文塊補(bǔ)充到16 Byte整數(shù)倍,其計(jì)算量也很小。因此,將密鑰擴(kuò)展算法和補(bǔ)充明文塊的運(yùn)算利用CPU運(yùn)行,能夠節(jié)省FPGA資源,最大程度利用FPGA加速性能。

2 基于OpenCL的異構(gòu)可重構(gòu)系統(tǒng)

2.1 異構(gòu)平臺(tái)編程框架OpenCL

開放設(shè)計(jì)語言(open computing language,OpenCL)[9,10]是一個(gè)靈活的異構(gòu)平臺(tái)的編程框架,具有強(qiáng)大的兼容性,可以將不同類型的硬件結(jié)合在同種執(zhí)行環(huán)境中,支持各種異構(gòu)平臺(tái)(CPU、DPU、GPU、FPGA等)。同時(shí),開發(fā)者可以使用高級(jí)語言對(duì)FPGA進(jìn)行編程,不僅能夠?qū)崿F(xiàn)硬件可重構(gòu)系統(tǒng),同時(shí)可以降低開發(fā)門檻,縮短開發(fā)周期。

近年來,異構(gòu)計(jì)算已經(jīng)成為高性能計(jì)算的主流解決方案,CPU+GPU異構(gòu)計(jì)算模式已經(jīng)得到廣泛的應(yīng)用。自從2011年Altera公司發(fā)布支持OpenCL來開發(fā)FPGA的SDK以后,CPU+FPGA的異構(gòu)架構(gòu)也成為一種具有競(jìng)爭(zhēng)力的高性能計(jì)算方案。OpenCL是第一個(gè)面向異構(gòu)系統(tǒng)的并行編程的開放式標(biāo)準(zhǔn)語言,CPU端采用標(biāo)準(zhǔn)C/C++編寫,設(shè)備端采用標(biāo)準(zhǔn)C編寫Kernels,CPU可以通過OpenCL API來調(diào)用設(shè)備運(yùn)行。利用OpenCL在更高層的設(shè)計(jì)抽象環(huán)境中迅速進(jìn)行設(shè)計(jì)開發(fā),跳過耗時(shí)的手動(dòng)時(shí)序收斂及FPGA、CPU和外部存儲(chǔ)之間的通信接口設(shè)計(jì)工作。在基于OpenCL的CPU+FPGA的異構(gòu)設(shè)計(jì)中,將CPU不擅長(zhǎng)的計(jì)算密集型任務(wù)使用FPGA處理,利用FPGA大量的計(jì)算資源和并行性提高計(jì)算速度,不僅解放了CPU,還充分利用了FPGA的計(jì)算能力,最大程度提高設(shè)備端的吞吐率。

本文所使用的是Intel Stratix 10 FPGA和面向 OpenCL 的英特爾 FPGA SDK。Intel FPGA SDK通過離線編譯器編譯Kernel創(chuàng)建優(yōu)化硬件鏡像,編譯器將Kernel轉(zhuǎn)換為Verilog形式后,通過Quartus Ⅱ軟件編譯為二進(jìn)制鏡像,運(yùn)行程序時(shí),將該鏡像加載到FPGA,構(gòu)建硬件加速系統(tǒng)。Intel FPGA SDK還支持在CPU端仿真FPGA特性,在FPGA構(gòu)建前可驗(yàn)證設(shè)計(jì)性能,能夠縮短檢驗(yàn)設(shè)計(jì)正確性的時(shí)間。

2.2 異構(gòu)可重構(gòu)計(jì)算系統(tǒng)

2.2.1 異構(gòu)計(jì)算系統(tǒng)總體架構(gòu)

本文異構(gòu)系統(tǒng)的總體架構(gòu)是CPU+FPGA。其中主機(jī)端CPU是用于對(duì)主機(jī)端與外部環(huán)境和設(shè)備端數(shù)據(jù)交互的控制以及對(duì)Kernel的調(diào)度和管理,具有強(qiáng)大并行計(jì)算能力的設(shè)備端FPGA用于完成SM4算法的主要計(jì)算任務(wù)。如圖3所示,CPU和FPGA通過PCIe連接。在FPGA中,處理元素是一個(gè)工作項(xiàng)的處理單元,一個(gè)處理單元完成一個(gè)SM4明文塊的加密計(jì)算,其私有存儲(chǔ)器用來儲(chǔ)存運(yùn)算中間產(chǎn)生的數(shù)據(jù)。由于全局存儲(chǔ)器的最大帶寬遠(yuǎn)小于局部存儲(chǔ)器的最大帶寬,F(xiàn)PGA的計(jì)算帶寬遠(yuǎn)大于全局存儲(chǔ)器的最大帶寬。因此,通過調(diào)整數(shù)據(jù)的存儲(chǔ)位置、優(yōu)化數(shù)據(jù)傳輸,減少對(duì)全局存儲(chǔ)器的訪問次數(shù),并且使用局部存儲(chǔ)器和私有存儲(chǔ)器等片上存儲(chǔ)器執(zhí)行內(nèi)核計(jì)算,增加內(nèi)核的內(nèi)存帶寬,極大提高內(nèi)核的性能。對(duì)SM4算法加密模塊,通過循環(huán)展開、循環(huán)流水的方式,充分利用FPGA的計(jì)算特點(diǎn),形成流水線并行架構(gòu)。將內(nèi)核矢量化和增加計(jì)算單元結(jié)合使用,工作項(xiàng)可以同時(shí)訪問和存取更多的數(shù)據(jù),增加的計(jì)算單元可以計(jì)算更多的數(shù)據(jù),使得FPGA的吞吐率得到了極大提高。

2.2.2 可重構(gòu)設(shè)計(jì)

圖4是基于Intel FPGA的可重構(gòu)框架,其中兩個(gè)主要部分為CPU和Intel FPGA,并通過PCIe總線通信。CPU管理相關(guān)事務(wù)、控制FPGA加速單元并處理簡(jiǎn)單的串行任務(wù),F(xiàn)PGA具有硬件可重構(gòu)能力和強(qiáng)大的并行計(jì)算能力,因此使用FPGA實(shí)現(xiàn)不同應(yīng)用需求在線動(dòng)態(tài)重構(gòu)硬件模塊或靜態(tài)重構(gòu)硬件模塊并完成計(jì)算密集型任務(wù)。FPGA分為靜態(tài)配置區(qū)與動(dòng)態(tài)可重構(gòu)區(qū)。靜態(tài)配置區(qū)中有PCIe、DMA控制器等主要模塊,靜態(tài)配置區(qū)的主要作用是向FPGA外部的PCIe、DDR等提供通信接口,同時(shí)也向動(dòng)態(tài)可重構(gòu)區(qū)域的Kernel IP提供接口。靜態(tài)配置區(qū)通過主動(dòng)配置方式AS配置模式進(jìn)行配置,F(xiàn)PGA上電后自動(dòng)配置,配置完成后FPGA可以接收CPU發(fā)送來的指令,動(dòng)態(tài)可重構(gòu)區(qū)通過指令部署指定的模式SM4的Kernel IP并執(zhí)行計(jì)算任務(wù),Kernel IP是SM4算法的具體實(shí)現(xiàn)。當(dāng)改變SM4算法的模式時(shí),CPU通過PCIe下發(fā)新的Kernel IP,重新配置動(dòng)態(tài)可重構(gòu)區(qū),這個(gè)過程不需要重啟FPGA,整個(gè)重新配置過程耗時(shí)僅為毫秒級(jí),完全實(shí)現(xiàn)了SM4算法多種模式的在線重構(gòu)。

由于Kernel函數(shù)的編譯時(shí)間過長(zhǎng),所以將Kernel函數(shù)進(jìn)行離線編譯,事先生成可執(zhí)行文件。main函數(shù)的編譯、運(yùn)行以及對(duì)FPGA進(jìn)行管理控制等由CPU完成,main函數(shù)的編譯和運(yùn)行需要OpenCL運(yùn)行支持庫支持。當(dāng)應(yīng)用場(chǎng)景改變,需要對(duì)FPGA進(jìn)行動(dòng)態(tài)可重構(gòu)配置,CPU會(huì)將事先準(zhǔn)備好的FPGA可執(zhí)行文件通過PCIe總線傳輸給FPGA,以實(shí)現(xiàn)在線可重構(gòu)功能[11]。

在實(shí)際的應(yīng)用場(chǎng)景中,對(duì)于不同的應(yīng)用場(chǎng)景有著不同的安全要求和加/解密速度要求,同一個(gè)應(yīng)用場(chǎng)景下一般對(duì)應(yīng)一種安全需求和吞吐率要求,因此一般應(yīng)用場(chǎng)景不需要運(yùn)行時(shí)動(dòng)態(tài)重構(gòu)。靜態(tài)可重構(gòu)和動(dòng)態(tài)可重構(gòu)結(jié)合使用可以使整個(gè)系統(tǒng)更具靈活性。

3 SM4異構(gòu)可重構(gòu)計(jì)算系統(tǒng)實(shí)現(xiàn)

3.1 主機(jī)端的程序與設(shè)計(jì)

對(duì)于OpenCL的主機(jī)端程序設(shè)計(jì)有一個(gè)相對(duì)固定的流程,主要步驟是利用Intel FPGA SDK提供的API來獲取平臺(tái)和設(shè)備、創(chuàng)建上下文以及命令隊(duì)列,最后等到內(nèi)核程序運(yùn)行結(jié)束讀取到內(nèi)核運(yùn)行結(jié)果后釋放內(nèi)存資源。圖5便是主機(jī)端程序執(zhí)行流程。除此之外,根據(jù)SM4算法原理,將計(jì)算量小和不利于并行計(jì)算的部分放在主機(jī)端運(yùn)行,主要包括優(yōu)化內(nèi)存分配與創(chuàng)建、密鑰和自增算子等數(shù)據(jù)的創(chuàng)建和初始化以及內(nèi)核參數(shù)設(shè)定等。同時(shí),CPU負(fù)責(zé)整個(gè)系統(tǒng)的調(diào)度和管理。

3.2 FPGA端硬件設(shè)計(jì)

3.2.1 優(yōu)化數(shù)據(jù)內(nèi)存分配與傳輸

OpenCL將內(nèi)存抽象為五種類型的存儲(chǔ)器[12],分別為主機(jī)存儲(chǔ)器、全局存儲(chǔ)器、常量存儲(chǔ)器、局部?jī)?nèi)存以及私有存儲(chǔ)器。如表1所示,各個(gè)存儲(chǔ)器所在的位置不同,其吞吐率、容量和延遲都存在一定的差異,將數(shù)據(jù)存儲(chǔ)在合適的位置能有效提高硬件架構(gòu)的吞吐率。將存儲(chǔ)器帶寬的利用率提高,可以優(yōu)化整體架構(gòu)性能。全局存儲(chǔ)器是容量最大以及傳輸數(shù)據(jù)時(shí)吞吐率最大的存儲(chǔ)器。將主機(jī)端傳輸?shù)紽PGA端的明文、密鑰等大量數(shù)據(jù)存儲(chǔ)在全局存儲(chǔ)器中,提高存儲(chǔ)器帶寬的利用率,從而提升整體性能。將加/解密模塊運(yùn)行時(shí)不變的系統(tǒng)參數(shù)FK、固定參數(shù)CK以及加/解密過程中訪問頻繁的S盒存放于常量存儲(chǔ)器,能提升訪問速度,避免訪存沖突。與私有存儲(chǔ)器相比,局部存儲(chǔ)器為了保證數(shù)據(jù)一致性在同組工作項(xiàng)執(zhí)行之后,會(huì)使用保護(hù)屏障導(dǎo)致延遲時(shí)間增加。因此,雖然在延時(shí)相當(dāng)時(shí),局部存儲(chǔ)器的吞吐率更大且具有更大容量,但是仍然選擇將SM4算法加/解密過程中參與運(yùn)算的變量存儲(chǔ)在私有內(nèi)存中,此時(shí)延時(shí)更短、吞吐率也相對(duì)更高。

在本文設(shè)計(jì)中,CPU控制明文從全局存儲(chǔ)器傳輸?shù)狡暇彺?,加密后得到密文,最后將密文從片上緩存?zhèn)鬏敾厝执鎯?chǔ)器,需要兩次數(shù)據(jù)傳輸。將一個(gè)工作項(xiàng)處理的數(shù)據(jù)位寬固定為和SM4明文長(zhǎng)度相同的128 bit,也就是16 Byte,可以避免編譯器為了調(diào)整數(shù)據(jù)長(zhǎng)度而消耗資源,也可以減少優(yōu)化程序的限制。

3.2.2 優(yōu)化循環(huán)結(jié)構(gòu)

Intel FPGA SDK通過循環(huán)展開形成并行計(jì)算和流水線架構(gòu)。對(duì)于不存在數(shù)據(jù)依賴的循環(huán)可以將其完全展開形成并行計(jì)算。如SM4算法中ECB和CTR模式都存在的3次循環(huán),輪密鑰由CPU傳輸?shù)紽PGA的32次循環(huán)、初始化數(shù)組的36次循環(huán)、密文由FPGA傳輸給CPU的16次循環(huán),以及只存在CTR模式中的2次循環(huán),自增算子和明文由CPU傳輸?shù)紽PGA的16次循環(huán)和自增算子加密結(jié)果和明文異或的16次循環(huán),上述循環(huán)均不存在數(shù)據(jù)依賴,可以將循環(huán)完全展開,形成并行計(jì)算,其架構(gòu)如圖6(b)所示。假設(shè)數(shù)據(jù)讀取、數(shù)據(jù)處理和數(shù)據(jù)存儲(chǔ)中的每一步操作都只需要1個(gè)cycle,在沒有展開循環(huán)前內(nèi)核在下次計(jì)算前延遲了3個(gè)cycle,而將循環(huán)展開后,則實(shí)現(xiàn)了并行計(jì)算。針對(duì)32輪非線性迭代,通過循環(huán)展開在加載內(nèi)存數(shù)據(jù)模塊和存儲(chǔ)內(nèi)存數(shù)據(jù)模塊形成內(nèi)存合并,將32輪加載內(nèi)存數(shù)據(jù)和存儲(chǔ)內(nèi)存數(shù)據(jù)的操作降低為位寬更寬的數(shù)據(jù)加載操作和存儲(chǔ)操作;在迭代計(jì)算模塊,針對(duì)32輪迭代的S盒置換和左移等操作進(jìn)行循環(huán)展開,通過指導(dǎo)編譯器生成單次迭代所需的硬件架構(gòu)形成有效流水,減少了迭代計(jì)算所需要的時(shí)間。其架構(gòu)如圖6(c)所示,假設(shè)數(shù)據(jù)讀取、數(shù)據(jù)處理和數(shù)據(jù)存儲(chǔ)中的每一步操作都只需要一個(gè)cycle,在沒有形成流水線時(shí),兩次load操作間的延遲為3個(gè)cycle,而使用了流水線設(shè)計(jì)后,只有一個(gè)cycle的延遲。

表2是加密256 MB數(shù)據(jù)時(shí)SM4加密算法的ECB和CTR模式下32輪非線性迭代形成流水線架構(gòu)時(shí)不同程度展開其他循環(huán)形成并行計(jì)算的優(yōu)化效果對(duì)比。根據(jù)實(shí)驗(yàn)結(jié)果可知,循環(huán)展開越多,優(yōu)化獲得的效果越好。優(yōu)化循環(huán)結(jié)構(gòu)可以在很大程度上縮短SM4算法兩種加密模式的加密時(shí)間。

3.2.3 矢量化內(nèi)核和增加計(jì)算單元

單個(gè)指令處理多個(gè)數(shù)據(jù)稱為SIMD(single-instruction multiple-data),利用該技術(shù)可以大大提高計(jì)算密集型算法的吞吐量。矢量化內(nèi)核就是讓多個(gè)工作項(xiàng)以單指令多數(shù)據(jù)的方式來進(jìn)行SM4算法的運(yùn)行。在SIMD方式下工作的工作項(xiàng)可以同時(shí)訪存并處理多個(gè)數(shù)據(jù)。如圖7所示,矢量化內(nèi)核之后,編譯器會(huì)合并內(nèi)存訪問,訪問和存儲(chǔ)的數(shù)據(jù)會(huì)是之前的數(shù)倍。矢量化內(nèi)核時(shí)需要將工作組的大小固定為矢量化內(nèi)核參數(shù)的整數(shù)倍。

選取本文對(duì)256 MB數(shù)據(jù)加密時(shí)設(shè)置不同矢量化內(nèi)核和計(jì)算單元得到的吞吐率進(jìn)行比較。由表3可知,在ECB模式下,計(jì)算單元相同,矢量化內(nèi)核參數(shù)設(shè)置為4時(shí)與設(shè)置為1時(shí)相比,加密時(shí)間顯著減少,繼續(xù)將參數(shù)增大至8,仍舊有明顯加速效果。CTR模式實(shí)驗(yàn)數(shù)據(jù)也有同樣規(guī)律。實(shí)驗(yàn)結(jié)果表明,矢量化內(nèi)核對(duì)于提高吞吐率可行且效果顯著。

Intel FPGA SDK通過設(shè)置參數(shù)可以為內(nèi)核增加多個(gè)計(jì)算單元,一個(gè)計(jì)算單元可以運(yùn)行多個(gè)工作組,Intel FPGA可以將工作組分配到已經(jīng)設(shè)置的且未使用的計(jì)算單元。計(jì)算單元的增加增強(qiáng)了片上計(jì)算能力,進(jìn)而提高片上吞吐率。表4為系統(tǒng)對(duì)128 MB數(shù)據(jù)加密的實(shí)驗(yàn)數(shù)據(jù),在兩種加密模式下,矢量化內(nèi)核參數(shù)都設(shè)為8時(shí),計(jì)算單元由1個(gè)增加到2個(gè),計(jì)算時(shí)間明顯縮短,吞吐率顯著提高。實(shí)驗(yàn)表明,增加計(jì)算單元對(duì)于提高吞吐率有顯著效果。

4 實(shí)驗(yàn)結(jié)果與分析

4.1 實(shí)驗(yàn)環(huán)境

本實(shí)驗(yàn)所采用的實(shí)驗(yàn)環(huán)境為搭載Intel Xeon E5-2650 V2版本CPU的服務(wù)器,其操作系統(tǒng)為CentOS Linux Release 7.7.1908,其中使用的GCC版本為V4.8.5,支持OpenCL的SDK版本為Intel FPGA SDK for OpenCL 19.3,F(xiàn)PGA則是Intel Stratix 10 GX2800[13],該卡包含1 866 240個(gè)ALUT、3 732 480個(gè)FF、11 721個(gè)RAM以及5 760個(gè)DSP。

4.2 實(shí)驗(yàn)結(jié)果

本文對(duì)不同的優(yōu)化方法進(jìn)行了設(shè)計(jì)并通過模擬和上板測(cè)試,對(duì)不同設(shè)計(jì)的性能進(jìn)行了測(cè)試。

4.2.1 內(nèi)核定制計(jì)算性能

對(duì)兩種模式的SM4算法,合理分配內(nèi)存、展開循環(huán)后,再通過設(shè)置不同的矢量化通道數(shù)量使單個(gè)工作組獲得多個(gè)矢量化通道,并且增加計(jì)算單元執(zhí)行多個(gè)工作組。

表5為兩種SM4加密模式分別對(duì)256 MB數(shù)據(jù)加密的時(shí)間和資源的對(duì)比。在兩種模式中,同樣使用兩個(gè)計(jì)算單元,將矢量化內(nèi)核參數(shù)設(shè)置為8時(shí)和設(shè)置為4時(shí)相比,雖然使用了更多的資源,但是節(jié)省了程序運(yùn)行時(shí)間并且取得了更好的優(yōu)化效果。表中其他數(shù)據(jù)也同樣表明,在一定范圍內(nèi)使用更多的資源,可以縮短程序運(yùn)行時(shí)間、提高吞吐率。

如表6所示,在使用CTR模式加密512 MB數(shù)據(jù)時(shí),在同一工作頻率下突發(fā)傳輸讀寫寬度相同且使用1個(gè)計(jì)算單元時(shí),內(nèi)存帶寬更高的矢量化4個(gè)通道設(shè)計(jì)卻比矢量化8個(gè)通道設(shè)計(jì)耗時(shí)更短、吞吐率更高。雖然增加了資源的使用,但是其帶寬的利用率下降,此時(shí)對(duì)全局內(nèi)存帶寬的爭(zhēng)用變得更加激烈,使得吞吐率下降。矢量化16通道并使用2個(gè)計(jì)算單元的設(shè)計(jì),在內(nèi)存帶寬低于其他設(shè)計(jì)方案時(shí),由于其突發(fā)傳輸讀寫寬度遠(yuǎn)大于其他設(shè)計(jì)方案,其吞吐率也是所有設(shè)計(jì)中最高的。由此可知,突發(fā)傳輸讀寫寬度也是影響吞吐率的重要因素。由表中可知,矢量化16個(gè)通道同時(shí)使用2個(gè)計(jì)算單元時(shí),其全局內(nèi)存帶寬最大,其吞吐率也是所有設(shè)計(jì)方案中最大的。與ECB模式中矢量化16個(gè)通道和使用2個(gè)計(jì)算單元的設(shè)計(jì)相比,ECB中內(nèi)存帶寬利用率比CTR模式的設(shè)計(jì)高了將近一倍,而ECB中的突發(fā)傳輸讀寫寬度也只是稍微低于CTR模式,因此,ECB模式的最高吞吐率是CTR模式的1.72倍左右。實(shí)驗(yàn)表明,內(nèi)存寬帶利用率以及突發(fā)傳輸讀寫寬度都是影響吞吐率的關(guān)鍵因素。

本文為了測(cè)試不同方案下的最大吞吐率,對(duì)兩種模式的不同方案進(jìn)行了不同數(shù)據(jù)量的加密實(shí)驗(yàn)。圖8是ECB模式中矢量化16通道使用1個(gè)計(jì)算單元以及CTR模式中矢量化16通道使用2個(gè)計(jì)算單元時(shí)的不同數(shù)據(jù)量加密的吞吐率走勢(shì)圖。如圖中所示,在數(shù)據(jù)量為16 KB時(shí),沒有達(dá)到設(shè)備端的最佳性能,隨著數(shù)據(jù)量的增大,設(shè)備端的吞吐率也隨之快速增加,然后吞吐率趨于穩(wěn)定;數(shù)據(jù)量超過64 MB以后,ECB模式在設(shè)備端的最大吞吐率穩(wěn)定在109.49 Gbps上下,CTR模式在設(shè)備端的最大吞吐率穩(wěn)定在63.73 Gbps上下。

本文使用OpenCL在更高層的設(shè)計(jì)抽象環(huán)境中進(jìn)行設(shè)計(jì)開發(fā),與表7中文獻(xiàn)[7,8,14]等使用Verilog HDL或VHDL語言進(jìn)行設(shè)計(jì)相比,在開發(fā)速度上有一定的優(yōu)勢(shì),并且加速性能也存在很大的優(yōu)越性。文獻(xiàn)[15]采用ASIC方案實(shí)現(xiàn)CTR模式的SM4算法,但是僅在Altera Cyclone V FPGA驗(yàn)證其設(shè)計(jì),實(shí)現(xiàn)了114.43 MHz下14.647 Gbps的吞吐率,以此預(yù)估其流片后CTR模式的吞吐率能輕松實(shí)現(xiàn)40 Gbps,甚至可能達(dá)到100 Gbps左右。與之相比在本文設(shè)計(jì)的系統(tǒng)中,CTR和ECB模式的吞吐率已經(jīng)達(dá)到63.73 Gbps和109.49 Gbps,不僅系統(tǒng)的靈活性更高、適應(yīng)場(chǎng)景更多,還能夠大大縮短開發(fā)時(shí)間以及開發(fā)成本,同時(shí)又保證了系統(tǒng)的高吞吐率??偟膩碚f,本文系統(tǒng)兼具高效率和靈活性,兩種可以切換的模式也能夠適應(yīng)更多的場(chǎng)景。

與基于Intel Xeon E5-2650 V2 CPU平臺(tái)上OpenSSL庫中SM4國(guó)密算法的ECB和CTR模式在數(shù)據(jù)量為256 MB時(shí)其吞吐率分別為0.47 Gbps和0.45 Gbps相比,本文加速效果分別是其232.63倍和141.62倍。

4.2.2 系統(tǒng)整體性能

分別對(duì)SM4-ECB和SM4-CTR兩種加密模式的系統(tǒng)整體性能進(jìn)行測(cè)試,并將測(cè)試結(jié)果和OpenSSL標(biāo)準(zhǔn)加密庫源碼對(duì)相同數(shù)據(jù)加密進(jìn)行純軟件對(duì)比。表8是本文中SM4-ECB和SM4-CTR兩種模式對(duì)不同數(shù)據(jù)量加密系統(tǒng)整體耗時(shí),包含OpenCL初始化時(shí)間、CPU和FPGA間的數(shù)據(jù)傳輸時(shí)間以及Kernel運(yùn)行時(shí)間。根據(jù)實(shí)驗(yàn)數(shù)據(jù)分析,數(shù)據(jù)量小于8 MB時(shí),OpenCL的初始化和創(chuàng)建Kernel等啟動(dòng)流程所用時(shí)間在系統(tǒng)運(yùn)行的時(shí)間中占比較大,而隨著數(shù)據(jù)量增大,數(shù)據(jù)傳輸和Kernel計(jì)算所用的時(shí)間占比也逐漸增大。當(dāng)加密數(shù)據(jù)量增大到128 MB以及比其大時(shí),系統(tǒng)運(yùn)算效率也逐步增大。

圖9是異構(gòu)系統(tǒng)和OpenSSL標(biāo)準(zhǔn)庫的純軟件系統(tǒng)的加密時(shí)間對(duì)比。圖9表明,在明文數(shù)據(jù)量較大時(shí),本文的異構(gòu)可重構(gòu)系統(tǒng)加密效率遠(yuǎn)大于純軟件加密,ECB和CTR模式的加速比最高分別為4.897和3.561。

5 結(jié)束語

本文針對(duì)國(guó)產(chǎn)加密算法SM4面向海量敏感數(shù)據(jù)交互時(shí)存在計(jì)算速度慢、CPU占用率和功耗過高以及使用傳統(tǒng)Verilog/VHDL語言進(jìn)行設(shè)計(jì)存在開發(fā)周期長(zhǎng)、成本高、靈活性差等問題,設(shè)計(jì)并實(shí)現(xiàn)了一種SM4國(guó)密算法的異構(gòu)可重構(gòu)計(jì)算系統(tǒng)?;贠penCL對(duì)SM4國(guó)密算法ECB和CTR兩種模式分別進(jìn)行硬件加速設(shè)計(jì),同時(shí)基于可重構(gòu)實(shí)現(xiàn)了兩種模式加密模式的動(dòng)態(tài)和靜態(tài)切換。本文設(shè)計(jì)針對(duì)SM4算法的特點(diǎn),合理利用OpenCL的內(nèi)存模型優(yōu)化數(shù)據(jù)內(nèi)存分配與傳輸,通過循環(huán)展開的方式形成流水線架構(gòu),并將內(nèi)核矢量化同時(shí)增加計(jì)算單元來提高設(shè)備端的吞吐率。因此,本系統(tǒng)兼具高效率和靈活性,兩種模式的靈活切換也能夠適應(yīng)更多的場(chǎng)景。

雖然本文達(dá)到了較好的效果,但是仍然存在優(yōu)化提升空間。增加計(jì)算單元時(shí)帶寬的爭(zhēng)奪變得更加激烈,同時(shí)伴隨工作組大小的變化,會(huì)影響到吞吐率的變化,對(duì)此本文設(shè)計(jì)中沒有過多深究。因此,將來可以將此作為一個(gè)優(yōu)化方向,達(dá)到更高的吞吐率,以適應(yīng)更多的應(yīng)用場(chǎng)景。

參考文獻(xiàn):

[1]國(guó)家密碼管理局.GM/T0002—2012,SM4 分組密碼算法[S].北京:中國(guó)標(biāo)準(zhǔn)出版社,2012.(State Cryptography Administration.GM/T0002—2012,SM4 block cipher algorithm[S].Beijing:Stan-dards Press of China,2012.)

[2]呂述望,蘇波展,王鵬,等.SM4分組密碼算法綜述[J].信息安全研究,2016,2(11):995-1007.(Lyu Shuwang,Su Bozhan,Wang Peng,et al.Overview on SM4 algorithm[J].Journal of Information Security Research,2016,2(11):995-1007.)

[3]楊伊,何德彪,文義紅,等.密鑰管理服務(wù)系統(tǒng)下的多方協(xié)同SM4加/解密方案[J].信息網(wǎng)絡(luò)安全,2021,21(8):17-25.(Yang Yi,He Debiao,Wen Yihong,et al.Multi-party collaborative SM4 encryption/decryption scheme in key management service[J].Netinfo Security,2021,21(8):17-25.)

[4]郎歡,張蕾,吳文玲.SM4 的快速軟件實(shí)現(xiàn)技術(shù)[J].中國(guó)科學(xué)院大學(xué)學(xué)報(bào),2018,35(2):180-187.(Lang Huan,Zhang Lei,Wu Wenling.Fast software implementation of SM4[J].Journal of University of Chinese Academy of Sciences,2018,35(2):180-187.)

[5]Cheng Wangzhao,Zheng Fangyu,Pan Wuqiong,et al.High-perfor-mance symmetric cryptography server with GPU acceleration[M]//Qing Sihan,Mitchell C,Chen Liqun,et al.Information and Communications Security.Cham:Springer International Publishing,2017:529-540.

[6]Guan Zhenyu,Li Yunhao,Shang Tao,et al.Implementation of SM4 on FPGA:trade-off analysis between area and speed[C]//Proc of IEEE International Conference on Intelligence and Safety for Robotics.Piscataway,NJ:IEEE Press,2018:192-197.

[7]劉金峒,梁科,王錦,等.SM4加密算法可裁剪式結(jié)構(gòu)設(shè)計(jì)與硬件實(shí)現(xiàn)[J].南開大學(xué)學(xué)報(bào):自然科學(xué)版,2019,52(4):41-45.(Liu Jintong,Liang Ke,Wang Jin,et al.Cuttable structure design and hardware implementation of SM4 encryption algorithm[J].Acta Scientiarum Naturalium Universitatis:NanKaiensis,2019,52(4):41-45.)

[8]李建立,莫燕南,粟濤,等.基于國(guó)密算法SM2、SM3、SM4的高速混合加密系統(tǒng)硬件設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用研究,2022,39(9):2818-2825,2831.(Li Jianli,Mo Yannan,Su Tao,et al.Hardware design of high-speed hybrid encryption system based on SM2,SM3 and SM4 algorithm[J].Application Research of Computers,2022,39(9):2818-2825,2831.)

[9]Jin Zheming,F(xiàn)inkel H.OpenCL kernel vectorization on the CPU,GPU,and FPGA:a case study with frequent pattern compression[C]//Proc of the 27th Annual International Symposium on Field-Programmable Custom Computing Machines.Piscataway,NJ:IEEE Press,2019:330.

[10]Mahony A O,Zeidan G,Hanzon B,et al.A parallel and pipelined implementation of a pascal-simplex based two asset option pricer on FPGA using OpenCL[C]//Proc of IEEE Nordic Circuits and Systems Conference.Piscataway,NJ:IEEE Press,2020:1-6.

[11]彭福來,于治樓,陳乃闊,等.面向國(guó)產(chǎn)CPU的可重構(gòu)計(jì)算系統(tǒng)設(shè)計(jì)及性能探究[J].計(jì)算機(jī)工程與應(yīng)用,2018,54(23):36-41.(Peng Fulai,Yu Zhilou,Chen Naikuo,et al.Reconfigurable computing system design and performance exploration towards to domestic CPU[J].Computer Engineering and Applications,2018,54(23):36-41.)

[12]Intel Corpration.Intel FPGA SDK for OpenCLTM Pro edition:programming guide 19.3[EB/OL].(2019-10-30).https://www.intel.com/content/www/us/en/docs/programmable/683846/19-3/introduction.html.

[13]Intel Corporation.IntelFPGA SDK for OpenCLTM:IntelStratix 10 GX FPGA development kit reference platform porting guide[EB/OL].(2022-03-28).https://www.intel.com/content/www/us/en/docs/programmable/683809/19-1/gx-fpga-development-kit-reference-platform-21662.html.

[14]Martínez-Herrera A F,Mancillas-López C,Mex-Perera C,et al.GCM implementations of Camellia-128 and SMS4 by optimizing the polynomial multiplier[J].Microprocessors and Microsystems,2016,45:129-140.

[15]王澤芳,唐中劍.SM4算法CTR模式的高吞吐率ASIC實(shí)現(xiàn)[J].電子器件,2019,42(1):173-177.(Wang Zefang,Tang Zhongjian.A high-throughput ASIC implementation of SM4 algorithm in CTR mode[J].Chinese Journal of Electron Devices,2019,42(1):173-177.)

[16]何詩洋,李暉,李鳳華.SM4算法的FPGA優(yōu)化實(shí)現(xiàn)方法[J].西安電子科技大學(xué)學(xué)報(bào),2021,48(3):155-162.(He Shiyang,Li Hui,Li Fenghua.The FPGA optimization implementation method of SM4 algorithm[J].Journal of Xidian University,2021,48(3):155-162.)

[17]李曉東,胡一鳴,池亞平,等.基于通用計(jì)算平臺(tái)SM4-CTR算法并行實(shí)現(xiàn)與優(yōu)化[J].密碼學(xué)報(bào),2022,9(4):663-676.(Li Xiao-dong,Hu Yiming,Chi Yaping,et al.Parallel implementation and optimization of SM4-CTR algorithm based on general computing platform[J].Journal of Cryptologic Research,2022,9(4):663-676.)

[18]楊國(guó)強(qiáng),丁杭超,鄒靜,等.基于高性能密碼實(shí)現(xiàn)的大數(shù)據(jù)安全方案[J].計(jì)算機(jī)研究與發(fā)展,2019,56(10):2207-2215.(Yang Guoqiang,Ding Hangchao,Zou Jing,et al.A big data security scheme based on high performance cryptography[J].Computer Research and Development,2019,56(10):2207-2215.)

收稿日期:2022-12-23;修回日期:2023-02-20? 基金項(xiàng)目:國(guó)家自然科學(xué)基金資助項(xiàng)目(61972180)

作者簡(jiǎn)介:王騰騰(1993-),男,江蘇徐州人,碩士研究生,主要研究方向?yàn)橛?jì)算機(jī)體系結(jié)構(gòu);柴志雷(1975-),男(通信作者),山西人,教授,博士,主要研究方向?yàn)橛?jì)算機(jī)體系結(jié)構(gòu)(zlchai@jiangnan.edu.cn).

猜你喜歡
現(xiàn)場(chǎng)可編程門陣列
基于機(jī)器人的溫室大棚環(huán)境智能監(jiān)控系統(tǒng)
一種PCI接口AFDX端系統(tǒng)模塊的設(shè)計(jì)與實(shí)現(xiàn)
D—BLAST基帶系統(tǒng)的FPGA實(shí)現(xiàn)研究
雙目立體匹配算法的FPGA實(shí)現(xiàn)
任務(wù)間通訊郵箱的硬件實(shí)現(xiàn)
一種千兆以太網(wǎng)SerDes 接口與電接口的轉(zhuǎn)換方法
卷積神經(jīng)網(wǎng)絡(luò)的FPGA并行結(jié)構(gòu)研究
基于FPGA的遺傳算法在交通控制中的應(yīng)用
基于FPGA的顏色識(shí)別觸摸屏系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于FPGA的9/7小波變換算法實(shí)現(xiàn)
普兰店市| 惠来县| 道孚县| 加查县| 永春县| 新竹市| 登封市| 边坝县| 乌鲁木齐县| 剑川县| 承德市| 穆棱市| 双峰县| 长宁县| 揭东县| 营山县| 遵义市| 从化市| 连平县| 德昌县| 宜城市| 肇州县| 彰化县| 昭通市| 新干县| 霸州市| 洛浦县| 应城市| 哈巴河县| 白银市| 丰顺县| 青河县| 荔浦县| 泾源县| 天镇县| 确山县| 大足县| 连平县| 泰兴市| 吉安市| 慈溪市|