



















摘 要:隨著大數據的發展及加密場景的增多,僅以軟件運行的加密方式難以滿足加密性能的需求;而使用Verilog/VHDL方式實現的FPGA/ASIC加密系統又存在靈活性較差、維護升級困難等問題。針對上述問題,設計并實現了一種基于異構可重構計算的AES算法加密系統,包含了AES算法ECB、CBC、CTR三種主流模式,每種模式實現了128 bit、192 bit、256 bit三種密鑰大小的加密。基于FPGA對模塊分別進行了硬件加速,同時基于硬件可重構機制實現了不同模式及不同位寬加密模塊的動態切換。通過在Intel Stratix 10上實現并驗證該系統,實驗結果表明:系統中AES-ECB、AES-CTR、AES-CBC吞吐率分別達到116.43 Gbps、60.34 Gbps、4.32 Gbps,ECB模式相比于Intel Xeon E5-2650 V2 CPU和NVIDIA GeForce GTX 1080 GPU分別獲得了23.18倍與1.43倍的加速比,整體系統相比純軟件方式的計算加速比達到4.72。
關鍵詞:現場可編程門陣列;異構可重構;加密算法;高級加密標準;并行
中圖分類號:TP338.6 文獻標志碼:A
文章編號:1001-3695(2022)07-036-2143-06
doi:10.19734/j.issn.1001-3695.2021.12.0651
基金項目:國家自然科學基金資助項目(61972180)
作者簡介:聶一(1997-),女(滿族),河北承德人,碩士研究生,主要研究方向為計算機體系結構;鄭博文(1996-),男,甘肅蘭州人,碩士研究生,主要研究方向為計算機體系結構;柴志雷(1975-),男(通信作者),山西人,教授,博士,主要研究方向為計算機體系結構(zlchai@jiangnan.edu.cn).
AES encryption system based on heterogeneous reconfigurable computing
Nie Yi1a,Zheng Bowen1a,Chai Zhilei1b,2?
(1.a.School of Internet of Things Engineering,b.School of Artificial Intelligence amp; Computer Science,Jiangnan University,Wuxi Jiangsu 214122,China;2.Jiangsu Provincial Engineering Laboratory of Pattern Recognition amp; Computational Intelligence,Wuxi Jiangsu 214122,China)
Abstract:With the development of big data and the increase of encryption scenarios,it’s difficult to meet the requirements of encryption performance with only software-run encryption methods,and FPGA/ASIC encryption systems implemented using Verilog/VHDL methods have poor flexibility and difficult maintenance and upgrades problem.In response to the above problems,this paper designed and implemented an AES algorithm encryption system based on heterogeneous reconfigurable computing,including three mainstream modes of AES algorithm ECB,CBC,CTR,each mode realized 128 bit,192 bit,256 bit encryption of three key sizes.This paper realized the hardware acceleration of the module based on FPGA,and realized the dynamic switching of different modes and different bit width encryption modules based on the hardware reconfigurable mechanism.By implementing and verifying the system on Intel Stratix 10,the experimental results show that the throughput rates of AES-ECB,AES-CTR and AES-CBC in the system are 116.43 Gbps,60.34 Gbps,and 4.32 Gbps,respectively.The ECB mode compared with Intel Xeon E5-2650 V2 CPU and NVIDIA GeForce GTX 1080 GPU achieves 23.18 times and 1.43 times acceleration ratios respectively.Compared with the method just calling the CPU,the overall system has a computational acceleration ratio of 4.72.
Key words:FPGA;heterogeneous reconfigurable;encryption algorithm;AES;parallel
0 引言
AES(advanced encryption standard)是美國國家標準與技術研究所(NIST)于1997年選定的標準對稱加密算法[1],目前廣泛應用于信息傳輸與信息存儲領域。由于信息傳輸與存儲對于即時性的要求,運算速度成為了一個重要的指標。對于數據量較大的加密任務來說,僅以軟件方式計算的吞吐率無法滿足速度需求。
為實現高效AES計算,國內外的研究多引入FPGA進行硬件實現。Shahbazi等人[2]提出了AES-128的并行處理和流水線的硬件架構,在字節代換中應用了逆同構仿射變換并將列混合分為兩個不同階段,實現了小面積、高吞吐率的算法結構;Abdul-Karim等人[3]提出了一種AES-192的FPGA實現,針對其中列混合、S盒變換過程采用循環展開、全流水和子流水線等技術,實現了54.52 Gbps的高吞吐量和425.996 MHz的最大工作頻率。然而,基于FPGA的AES算法加速工作大多僅實現了一種特定模式,無法滿足不同級別安全性的需求。因此,Anirudh等人[4]通過創建動態可重構系統,實現了三種密鑰大小的AES,利用FPGA的可重構特性配置控制模塊,按需加載不同的AES版本,從而提高硬件利用率,但其僅利用動態可重構系統實現了128、192、256 三種不同的密鑰大小,未涉及多模式的實現。Silitonga等人[5]利用AP-SoC芯片使用高層次綜合工具HLS建立可重構系統,將部分加密模塊打包為IP核,通過PS端控制FPGA部分重構,實現了AES-CBC、AES-XTS、AES-OFB、AES-CTR、AES-CFB五種模式,但其為兼容五種模式的架構僅進行部分重構,加密吞吐率較低,僅能達到Mbps級別。
綜上所述,針對AES,既高效又靈活的計算方法和系統依然是一個值得深入研究的問題。隨著大數據的發展及加密場景的增多,這一需求更加凸顯。因此,本文基于異構可重構計算設計并實現了一種AES高效計算系統,既充分利用FPGA對特定模塊進行硬件加速,又可以在軟件控制下對不同的硬件模塊進行在線動態重構,使系統兼具靈活性與高性能。
本文實現了AES-ECB、AES-CTR、AES-CBC三種模式,以及每種模式的128 bit、192 bit、256 bit三種密鑰大小的加密計算。對FPGA中算法部分邏輯采用查找表優化,并使用流水線、循環展開、調整內存結構、內核矢量化與多計算單元結合等加速方式。系統使用多內核隊列的方式調度FPGA動態重構實現模式在線切換。最終系統在Intel Stratix 10 GX 2800上實現了AES-ECB、AES-CTR、AES-CBC,達到116.43 Gbps、65.67 Gbps、4.32 Gbps的吞吐率,同時,通過可重構技術使得系統整體相比軟件方式獲得了4.72的加速比。
1 AES算法
AES為分組加密算法,其標準包括ECB、CTR、CBC、CFB、OFB五種模式。其中ECB與CTR模式中加密組之間無數據依賴,可以較方便地在FPGA中實現并行計算,提高處理性能[6,7]。CBC、CFB與OFB模式中加密組之間存在數據依賴問題,難以用全并行架構對其加速[5]。雖然可以借助流水方式進行加速,但CFB與OFB模式計算流程的控制復雜,不利于流水線效率的發揮,更適合在異構系統中的處理器部分實現[2],因此這里不再贅述。本文重點討論ECB、CTR、CBC模式的實現。
作為分組加密算法,AES將待加密的數據分為16 Byte一組進行分組處理,每組明文寫為一個4×4的狀態矩陣,根據密鑰的大小不同進行10~14輪迭代。每一輪迭代包括字節代換、行移位、列混合、輪密鑰加四個步驟,最后一輪不進行列混合操作。輸入的初始密鑰則經過字循環、字節代換、輪常量異或步驟進行擴展后參與輪密鑰加運算。計算流程如圖1所示。
輪密鑰加過程為數據的狀態矩陣同128 bit輪密鑰進行逐位異或運算。字節代換過程依據結合了有限域乘法逆元及可逆的仿射變換矩陣構造的S盒序列,對數據的狀態矩陣進行字節置換[8]。置換過程為先對該字節求取有限域內的乘法逆g(b),之后對乘法逆進行可逆的仿射變換f[g[b]],如A=b7b6b5b4b3b2b1,置換后變為
行移位過程對數據狀態矩陣的每一行進行循環移位,第0~3行分別左移0~3 Byte。列混合過程將數據的每一列視為有限域GF(28)上的一個多項式,基于有限域GF(28)中的乘法、加法以及矩陣相乘實現[9]。第i列狀態矩陣(0≤i≤3)的列混合操作可以用式(3)~(6)表示。
三種模式的主體運算過程相同,只有數據塊與數據塊之間的數據處理不同,其加密流程分別如圖2(a)~(c)所示。
ECB模式數據塊與數據塊之間的加密沒有數據依賴,每一個數據塊分別進行10~14輪的迭代后生成密文塊,并拼接組成密文。
CBC模式引入初始化向量,每個明文塊的輸入與上一個明文塊迭代后的輸出密文塊進行異或運算后進行10~14輪的迭代加密流程,導致了數據依賴問題,不利于并行流水。
CTR模式引入了一個隨機的自增算子,每個自增算子分別進行10~14輪的加密迭代流程后與明文塊異或得到密文塊。自增算子是隨機選擇引入的,即使重復的明文塊用相同密鑰加密結果也不相同,保證了加密的安全性。
因三種模式明文塊間的數據處理方式不同,一套固定架構無法很好地兼容三種模式。本文對AES算法三種模式分別進行軟硬件架構設計,并設置其中相同的計算部分為可復用資源,利用動態可重構系統進行實現。
2 基于Intel FPGA的異構可重構系統
Intel FPGA 可重構異構架構如圖3所示。Intel FPGA 異構可重構系統中,CPU與FPGA通過PCIe總線連接,實現數據與命令交互。CPU對FPGA加速單元進行調度,FPGA應對不同應用需求在線動態重構硬件模塊,實現計算加速。該架構支持單CPU控制多個FPGA加速設備,可以構建更大的異構計算平臺。
FPGA內部包括靜態配置區與動態可重構區。靜態配置區中PCIe模塊、DMA控制器等模塊提供PCIe通信接口作為CPU與FPGA之間的通信管道;存取控制結構模塊提供CPU與FPGA的全局內存訪問,為動態可重構區內算法實現的kernel IP提供接口。
動態可重構區中將具體算法模塊寫為多個kernel IP,根據 CPU的控制指令調用kernel。當應用場景改變,需要切換計算模式時,CPU可通過PCIe通道下發新的kernel IP與FPGA可執行文件,實時重新配置動態可重構區。此過程無須FPGA加速單元重啟,整個重配過程耗時為毫秒級[10]。
3 異構可重構AES計算系統設計
3.1 整體系統架構設計
3.1.1 異構設計
AES算法密鑰大小與加密模式由CPU端定義,明文填充及密鑰擴展由CPU執行,通過PCIe總線將數據、規定密鑰大小與加密模式參數傳輸到FPGA,CPU調度FPGA重構進行計算。異構計算設計如圖4所示。
由于在加密過程中每一組明文塊的密鑰都相同,只進行一次密鑰擴展的計算量較小,為節省FPGA硬件資源,由CPU完成密鑰擴展模塊。
明文填充模塊則需要根據不同的選擇改變填充方式,所以在CPU端填充至16 Byte整數倍后再傳輸至FPGA分組計算。
FPGA執行計算算法主要迭代部分,將待處理數據分為16 Byte的明文塊分段計算。每個明文塊根據密鑰大小進行10~14輪循環迭代計算,每一輪迭代包括輪密鑰加、字節代換、行位移、列混合四個過程。FPGA中設計CTR模式的算子自增預計算模塊,將加密每個明文塊的自增算子預先計算,解決每一輪計算前進行一次自增的計算延遲與數據依賴問題。
3.1.2 可重構設計
三種模式都存在不同的數據塊處理模塊,且每一種模式根據128 bit、192 bit、256 bit三種不同的密鑰大小迭代輪數也不同。但每一輪迭代的輪密鑰加、字節代換、行位移、列混合四個過程都是相同的,所以將迭代過程設計為可復用的結構,數據塊間不同的處理以及算子自增模塊設計為重構模塊。可重構設計如圖5所示。
AES算法的三種模式調用相同的迭代模塊,CTR和ECB模式明文塊間的計算相互獨立,采用并行計算;CBC模式由于下一個明文塊的計算需要先與上一個明文塊的結果異或,存在數據依賴問題,所以數據塊間串行計算。
3.2 核心計算邏輯設計
針對每一輪迭代中的字節代換、列混合操作添加適合FPGA操作的查找表進行簡化,可以減少硬件復雜度,有效提升電路實現效率。
字節代換需要計算有限域GF(28)上的乘法逆與仿射變換[11],但因數據量較小,目前多使用查找表將128 bit數據分為16組進行16次查表計算。每一組數據中的高4 bit和低4 bit數據分別作為行數和列數查表,雖然每一組都要進行16次查表,但本文中將16次查表并行計算,簡化電路結構的同時提升計算效率。列混合操作將數據的每一列視為有限域GF(28)上的一個多項式,基于有限域GF(28)中的乘法、加法以及矩陣相乘實現[8]。列混合是AES計算步驟中計算復雜度最高的模塊,也是主要的擴散操作,按照傳統邏輯實現的電路復雜度較高。計算中首先將4×4數據的每一列4×1列向量在有限域GF(28)左乘由01、02、03組成的4×4固定矩陣,然后將結果拼接得到所求結果為
同樣將列混合操作轉換為部分使用查找表的計算形式。建立包括有限域GF(28)內數據與固定矩陣乘法運算的256×6 Byte查找表;并將列混合運算轉換為對狀態矩陣中的數據進行適合FPGA計算的并行查表、異或、循環移位運算,提高硬件執行效率。
4 基于OpenCL的AES系統實現
4.1 異構并行計算框架OpenCL
AES可重構系統的實現基于異構并行計算框架OpenCL,實現包括主程序以及kernel兩部分,主程序是host端程序,以標準C/C++編寫,運行于CPU處理器。OpenCL kernel采用標準C編寫,host端程序使用OpenCL API,支持將數據傳送至FPGA調用kernel并行運算,傳回得到的數據。
Intel FPGA SDK通過離線編譯器編譯OpenCL kernel以創建優化硬件鏡像,編譯器將kernel轉換為Verilog形式后通過Quartus Ⅱ軟件編譯為二進制鏡像,程序運行時加載至FPGA硬件[12]。
FPGA kernel啟動后會調用大量工作項并行執行內核,系統中的每個AES kernel可以同時應用于多個執行通路,形成流水線架構,在本質上就是多線程的。算法的每個實例稱為一個工作項,多個執行同一任務的工作項組成一個工作組,每個工作組中的工作項在一個計算單元中并行執行。
OpenCL將內存抽象定義為主機內存(host memory)、全局內存(global memory)、常量內存(constant memory)、本地內存(local memory)和私有內存(private memory)[13]。根據五種內存所映射的內存區域不同,內存大小、吞吐率和共享范圍有所不同。OpenCL內存模型如表1所示。
4.2 基于FPGA的架構實現
將FPGA中AES算法一種模式的計算設計為一個OpenCL kernel,將kernel中的一個工作項的行為設計為對一組16 Byte明文的加密,多個工作項執行通路形成流水線并行計算架構,并行處理多組明文。針對一個工作項中的FPGA實現包括數據輸入緩存、算法加密模塊以及密文數據輸出緩存三個模塊。其中數據輸入緩存從DDR讀取數據;AES加密模塊完成AES算法的加密計算;密文數據輸出緩存模塊從FPGA將數據傳輸回DDR中。
4.2.1 加密模塊實現
算法加密模塊如圖6所示。通過多工作項采用流水線并行架構,將一個工作項的計算設計為對一組明文進行10~14輪輪密鑰加、字節代換、行位移、列混合四個過程的迭代,CTR與CBC模式還包括算子自增或異或模塊。迭代輪數因密鑰大小不同而有所不同,將全部輪密鑰預先計算生成,存儲于本地內存的FPGA片上存儲器中由所有工作項共享,輪密鑰加的計算過程中使用輪密鑰時訪問對應存儲器。
其中每一輪迭代都需進行的字節代換操作包括基于S盒查找表進行16次查表計算,列混合操作包括基于T盒進行24次查找表運算。為防止訪存沖突,將生成的查找表作為常量存儲于常量內存片上ROM,由AES狀態矩陣中的每一位并行查表計算。對行移位模塊中的循環左移與輪密鑰加中的按位異或操作通過指令流進行循環展開,令編譯器生成多組單次迭代所需的硬件結構以并行計算,大大縮減了迭代運算的時間。
4.2.2 輸入輸出模塊
輸入/輸出數據流向如圖7所示。密鑰、自增算子與隨機IV值為所有工作項共用的數據,僅進行一次由全局內存緩沖區到本地內存片上存儲器的傳輸。結合AES算法輸入輸出明文密文長度為128 bit,將一個工作項處理的數據位寬設置為16 Byte。針對明文數據讀取與密文數據存儲使用循環展開,將對內存數據的16次store與load合并為一次更寬的store與load操作。
4.2.3 多模式AES算法的OpenCL實現
多模式的實現如圖8所示。為完成三種模式計算,三種模式分別寫為三個kernel,每個kernel調用相同的迭代模塊。設置三個工作組,每個工作組分別實現一種AES模式,一個工作組中的工作項通過本地內存進行數據共享。三個工作組不存在數據交互,可分別獨立計算。其中CBC模式因存在明文塊計算間的數據依賴所以采用單工作項,僅實現單次迭代中字節代換、行移位、列混合、輪密鑰加中的部分并行結構。
4.2.4 內核矢量化與多計算單元
上文已經提到,本文將ECB與CTR模式的一個明文塊的加密計算映射到一個工作項,并在運行時將這些工作項映射到低層硬件,多個工作項并行計算組成一個工作組。在此基礎上可以通過單指令多數據(SIMD)的方式執行每個工作組中的工作項,改變單個工作組中并行執行的工作量以提高系統的計算效率[12]。每個SIMD矢量通道共享控制邏輯,復制計算單元的數據路徑。設置寬SIMD單元的目標是高效地合并動態內存訪問,且增大每個工作項的工作量。
與此同時為了實現更高的吞吐率,建立多個計算單元(CU),實現多個工作組并行計算,并且每個計算單元中可以同時存在多個矢量化通道[14]。但引入多個計算單元會導致內存競爭問題,且多計算單元和內核矢量化都是以增加硬件資源為代價的。所以更適合的方案是將內核矢量化與計算單元復制兩種方式結合,通過實驗確定最佳的矢量化通道數和計算單元數組合。
為兩種模式合理分配資源,ECB與CTR模式都使用寬度為8的矢量化通道與2個計算單元,能夠在計算效率和使用資源上取得較好的平衡。內核矢量化與多計算單元設計如圖9所示。
4.3 系統調度
AES可重構系統中,CPU不僅完成模式密鑰選擇與部分串行計算,還要進行系統的調控,本文將系統調控分為三部分進行說明:第一部分是初始化步驟,包括獲取平臺、獲取設備、創建上下文、創建kernel程序等過程[15],這部分是OpenCL執行的固定流程,無須其他設計;第二部分包括創建命令隊列,讀取、編譯、生成kernel,創建kernel對象、設置kernel參數,執行kernel四個步驟;第三部分則是讀取結果以及釋放內存資源。
主機端調度流程如圖10所示。設計主要針對第二部分,創建三個命令隊列,將執行三種不同模式kernel的命令放到不同命令隊列中,分別用來調用AES算法不同模式的三個kernel,命令隊列與命令隊列之間是可并發的進程關系。當確定AES的模式與密鑰大小之后,調用相應模式的命令隊列選擇相應kernel并設置kernel參數,之后將數據復制到kernel中并通過PCIe下發數據,最后配置可重構資源執行kernel完成加密。
5 實驗結果及分析
5.1 實驗環境
本文使用軟件Intel FPGA SDK for OpenCL 19.3版本OpenCL,軟件環境為CentOS Linux release7.7.1908與GCC V4.8.5。硬件平臺為Intel Xeon E5-2650 V2 CPU和Intel Stratix 10 G2800 FPGA。
5.2 實驗結果
本文進行了一系列實驗測試FPGA Kernel與系統整體性能,AES算法密鑰大小選擇256 bit進行實驗。對KB級的小數據量明文以及MB級大數據量的明文進行加密測試。
5.2.1 FPGA測試結果
實現單工作組架構調整后,通過設置SIMD為單工作組建立多矢量化通道,并建立多個計算單元執行多工作組,通過實驗確定最佳的矢量化通道數與計算單元數。
表2的實驗結果表明,矢量化通道數為8,計算單元數為2時可以在性能與資源方面取得較好的平衡,且內核矢量化相對能取得更好的加速效果。
以16 KB~512 MB的數據為例,描述了本文中FPGA并行kernel的吞吐率變化。從圖11可以看出,數據量由KB級到8 MB時FPGA吞吐率逐漸增加,大于8 MB后FPGA吞吐率趨于穩定。
如表3所示,文獻[6,16]為使用OpenCL在CPU-GPU平臺實現的兩種并行kernel吞吐率,文獻[3,17,18]為采用Verilog/VHDL的FPGA設計。
本文基于OpenCL在FPGA實現了AES并行kernel的設計,相比于文獻[6,16],基于GPU的OpenCL kernel性能有較明顯的提升。FPGA部分設計為多工作項并行計算模式,針對字節代換與列混合模塊使用查找表計算,調整數據存儲結構并采用循環展開、內核矢量化與計算單元結合的方式,相比文獻[3,17,18]采用Verilog/VHDL的FPGA設計有更高的吞吐率。
圖12結合Intel Xeon E5-2650 V2 CPU和NVIDIA GeForce GTX 1080 GPU平臺展示了本文AES算法的FPGA加速效果。
由圖12可知,本文基于OpenCL的AES算法實現方案相比于CPU性能提升了23.18倍,相比于GPU性能提升了1.43倍。
5.2.2 系統整體性能
對于系統整體來說,幾種模式加速效果基本一致,故采用加密算法標準庫中最經典的AES-ECB為例對異構可重構系統整體性能進行測試,并調用OpenSSL標準加密庫源碼對相同數據加密進行純軟件對比。表4描述了本文的系統整體耗時,包含了OpenCL程序運行的所有時間,包括OpenCL初始化啟動時間、CPU和FPGA間的數據傳輸以及kernel運行時間[19]。
當加密數據小于8 MB時,系統運行時間主要用于OpenCL的初始化及創建kernel等啟動流程;當數據量較大時,時間主要用于數據傳輸和kernel計算,當明文數量級在百MB級別時,系統整體運算效率隨數據量增大而逐漸增大。測試明文為128 MB時重構系統所用時間占比,結果如表5所示。可以看出,相比于系統中CPU與FPGA的數據傳輸時間以及kernel運算時間,系統重構時間占比較小。
圖13為調用OpenSSL標準庫源碼的純軟件系統與可重構異構系統的加密時間對比。由圖13可見,在明文長度較大時,本文的可重構系統加密效率遠大于純軟件加密,加速比為4.72;明文長度較小時,因可重構系統需要初始化以及創建命令隊列、傳輸buffer等調度準備時間,性能提升不明顯。
6 結束語
本文基于異構可重構計算設計了一種多模式AES加密系統,為一些對大量隱私敏感數據加密的場景提供了解決方案。證明異構可重構平臺可以實現一類多模式的加密算法,并在性能與靈活性方面達到較好的平衡。為進一步提高系統的通用性,后續將進一步應用異構可重構平臺針對非對稱加密算法進行設計,并實現對稱加密算法與非對稱加密算法混合的混合加密系統,提供更強的安全性與更多的適用場景。
參考文獻:
[1]Dobbertin H,Knudsen L,Robshaw M,et al.Advanced encryption standard—AES[J].Lecture Notes in Computer Science,2005,3373(8):2200-2203.
[2]Shahbazi K,Ko S B.High throughput and area-efficient FPGA implementation of AES for high-traffic applications[J].IET Computers amp; Digital Techniques,2020,14(6):344-352.
[3]Abdul-Karim M S,Rahouma K H,Nasr K.High throughput and fully pipelined FPGA implementation of AES-192 algorithm[C]//Proc of International Conference on Innovative Trends in Communication and Computer Engineering.Piscataway,NJ:IEEE Press,2020:137-142.
[4]Anirudh P S,Lalu V.Implementation of reconfigurable data encryption technique using different AES versions[C]//Proc of International Conference on Power,Instrumentation,Control and Computing.Pisca-taway,NJ:IEEE Press,2020:1-6.
[5]Silitonga A,Jiang Zhou,Khan N,et al.Reconfigurable module of multi-mode AES cryptographic algorithms for AP SoCs[C]//Proc of IEEE Nordic Circuits and Systems Conference:NORCHIP and International Symposium of System-on-Chip (SoC).Piscataway,NJ:IEEE Press,2019:1-7.
[6]Sanida T,Sideris A,Dasygenis M.Accelerating the AES algorithm using OpenCL[C]//Proc of the 9th International Conference on Modern Circuits and Systems Technologies.Piscataway,NJ:IEEE Press,2020:1-4.
[7]Rao M,Kaknjo A,Omerdic E,et al.An efficient high speed AES implementation using traditional FPGA and LabVIEW FPGA platforms[C]//Proc of International Conference on Cyber-Enabled Distributed Computing and Knowledge Discovery.Piscataway,NJ:IEEE Press,2018:93-937.
[8]夏春林,周德云,張堃.AES算法的CUDA高效實現方法[J].計算機應用研究,2013,30(6):1907-1909.(Xia Chunlin,Zhou Deyun,Zhang Kun.CUDA based high-efficiency implementation of AES algorithm[J].Computer Engineering and Application,2013,30(6):1907-1909.)
[9]Yadav D,Rajawat A.Area and throughput analysis of different AES architectures for FPGA implementations[C]//Proc of IEEE International Symposium on Nanoelectronic and Information Systems.Pisca-taway,NJ:IEEE Press,2016:67-71.
[10]彭福來,于治樓,陳乃闊,等.面向國產CPU的可重構計算系統設計及性能探究[J].計算機工程與應用,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.)
[11]Kumar K,Ramkumar K R,Kaur A.A design implementation and comparative analysis of advanced encryption standard algorithm on FPGA[C]//Proc of the 8th International Conference on Reliability,Infocom Technologies and Optimization.Piscataway,NJ:IEEE Press,2020:182-185.
[12]Intel Corporation.Intel FPGA SDK for OpenCL pro edition programming guide 19.3[EB/OL].(2019-11-20).https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/openclsdk/archives/aocl_programming_ guide-19-3.pdf.
[13]Intel Corporation.Intel FPGA SDK for OpenCL pro edition:best practices guide[EB/OL].(2019-11-20).https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/opencl-sdk/archives/aocl-best-practices-guide-19-3.pdf.
[14]Jin Zheming,Finkel H.OpenCL kernel vectorization on the CPU,GPU,and FPGA:a case study with frequent pattern compression[C]//Proc of the 27th IEEE Annual International Symposium on Field-Programmable Custom Computing Machines.Washington DC:IEEE Computer Society,2019:330.
[15]李茂文,曲國遠,魏大洲,等.面向GPU計算平臺的神經網絡卷積性能優化[J/OL].計算機研究與發展.(2021-12-05).http://kns.cnki.net/kcms/detail/11.1777.tp.20210630.1326.002.html.(Li Maowen,Qu Guoyuan,Wei Dazhou,et al.Performance optimization of neural network convolution based on GPU platform[J/OL].Journal of Computer Research and Development.(2021-12-05).http://kns.cnki.net/kcms/detail/11.1777.tp.20210630.1326.002.html.)
[16]Yuan Yuheng,He Zhenzhong,Gong Zheng,et al.Acceleration of AES encryption with OpenCL[C]//Proc of the 9th Asia Joint Conference on Information Security.Piscataway,NJ:IEEE Press,2014:64-70.
[17]李熾陽,雷倩倩,楊延飛.全通用AES加密算法的FPGA實現[J].計算機工程與應用,2020,56(10):83-87.(Li Chiyang,Lei Qianqian,Yang Yanfei.FPGA implementation of full-universal AES encryption algorithm[J].Computer Engineering and Applications,2020,56(10):83-87.)
[18]Shashidhar R,Mahalingaswamy A M,Kumar P,et al.Design of high speed AES system for efficient data encryption and decryption system using FPGA[C]//Proc of International Conference on Electrical,Electronics,Communication,Computer,and Optimization Techniques.Piscataway,NJ:IEEE Press,2018:1279-1282.
[19]賈海鵬,張云泉,袁良,等.基于OpenCL的Viola-Jones人臉檢測算法性能優化研究[J].計算機學報,2016,39(9):1775-1789.(Jia Haipeng,Zhang Yunquan,Yuan Liang,et al.Research of Viola-Jones face detection algorithm performance optimization based on OpenCL[J].Chinese Journal of Computers,2016,39(9):1775-1789.)