• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      面向國產(chǎn)CPU的可重構(gòu)計(jì)算系統(tǒng)設(shè)計(jì)及性能探究

      2018-12-04 02:13:36彭福來于治樓陳乃闊耿士華李凱一
      關(guān)鍵詞:明文內(nèi)存密鑰

      彭福來,于治樓,陳乃闊,耿士華,李凱一

      山東超越數(shù)控電子股份有限公司,山東省特種計(jì)算機(jī)重點(diǎn)實(shí)驗(yàn)室,濟(jì)南 250104

      1 引言

      現(xiàn)代社會信息量的暴增對計(jì)算機(jī)的計(jì)算性能提出了更高的要求,通過縱向提高CPU的處理性能已經(jīng)遇到了制作工藝、功耗等技術(shù)瓶頸。大數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、圖像與視頻處理、網(wǎng)絡(luò)安全等計(jì)算密集型領(lǐng)域需要計(jì)算能力強(qiáng)大的服務(wù)器來支撐,單純采用CPU來完成這些任務(wù)已經(jīng)無法滿足性能要求。為了提高服務(wù)器的計(jì)算性能,業(yè)界通常采用GPU或FPGA等并行處理能力較強(qiáng)的器件作為硬件加速器,形成CPU+協(xié)處理器的異構(gòu)計(jì)算系統(tǒng)來對計(jì)算密集型任務(wù)進(jìn)行加速。GPU由于具有強(qiáng)大的并行計(jì)算能力,已被廣泛應(yīng)用于圖像處理[1-2]、人工智能[3-5]、數(shù)據(jù)安全[6-8]等領(lǐng)域。

      雖然使用GPU來加速計(jì)算任務(wù)能夠獲得極佳的加速性能,但是GPU的功耗較高,無法滿足一些空間、散熱條件不足的應(yīng)用場景。而采用FPGA可以獲得較好的性能功耗比[9],因此許多學(xué)者研究利用FPGA來加速計(jì)算任務(wù)[10-12]。同時(shí),由Khronos Group所維護(hù)的異構(gòu)平臺編程框架標(biāo)準(zhǔn)OpenCL為FPGA提供了高效的開發(fā)方式,開發(fā)者可以采用高級語言對FPGA進(jìn)行開發(fā),不僅降低了開發(fā)難度,縮短了開發(fā)周期,還能夠滿足FPGA的在線可重構(gòu)功能。這使得FPGA在異構(gòu)計(jì)算加速領(lǐng)域的應(yīng)用得到了迅速的擴(kuò)張。目前FPGA兩大供應(yīng)商Xilinx和Intel均推出了支持OpenCL開發(fā)的FPGA器件及軟件開發(fā)工具包,且已在很多領(lǐng)域得到了應(yīng)用[13-15]。

      采用FPGA來加速計(jì)算任務(wù)能夠獲得極佳的性能功耗比,但是目前的CPU+FPGA異構(gòu)加速系統(tǒng)絕大部分基于x86架構(gòu)處理器。在國際關(guān)系日益嚴(yán)峻的形勢下,關(guān)鍵核心領(lǐng)域必須能夠自主可控,雖然我國在自主可控計(jì)算機(jī)基礎(chǔ)軟硬件研發(fā)方面已初見成效,但當(dāng)前的自主服務(wù)器性能與x86架構(gòu)服務(wù)器還存在較大差距,難以滿足計(jì)算密集型任務(wù)對計(jì)算資源的需求。為此,本文將采用FPGA對國產(chǎn)CPU的任務(wù)進(jìn)行加速,形成基于國產(chǎn)CPU的可重構(gòu)計(jì)算系統(tǒng),以提升國產(chǎn)平臺的計(jì)算性能。

      首先對基于國產(chǎn)CPU的可重構(gòu)計(jì)算系統(tǒng)進(jìn)行了介紹,然后介紹了本文采用的一個(gè)測試用例——AES加密算法,及其OpenCL的實(shí)現(xiàn),最后采用AES加密算法對該系統(tǒng)的性能進(jìn)行了測試,并與串行CPU的處理性能進(jìn)行了對比分析。

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

      2.1 OpenCL

      Open CL(Open Computing Language)[16-17]是由Khronos Group維護(hù)的一種為異構(gòu)平臺提供編程的框架標(biāo)準(zhǔn)。該異構(gòu)平臺通常由CPU、FPGA、GPU或者其他類型的處理器以及硬件加速器組成。OpenCL包括兩部分:編寫kernel函數(shù)(運(yùn)行于OpenCL設(shè)備上)的語言(基于C99標(biāo)準(zhǔn))和一組用于定義并控制平臺的API。OpenCL將不同類的計(jì)算設(shè)備組成一個(gè)統(tǒng)一的平臺,為軟件開發(fā)者提供一種可移植的、高效的編程方法。

      圖1 CPU+FPGA異構(gòu)計(jì)算系統(tǒng)框圖

      OpenCL的核心思想包括四種方面:平臺模型(Platform model)、內(nèi)存模型(Memory model)、執(zhí)行模型(Execution model)和編程模型(Programming model)。平臺模型包括一個(gè)Host主機(jī)以及與其相連接的一個(gè)或多個(gè)OpenCL設(shè)備(在本文中OpenCL設(shè)備為FPGA),每個(gè)OpenCL設(shè)備可以分割為一個(gè)或多個(gè)計(jì)算單元(CU),每個(gè)CU又可以進(jìn)一步劃分為一個(gè)或多個(gè)處理單元(PE),PE是OpenCL設(shè)備最基本的運(yùn)行單元。OpenCL將kernel函數(shù)運(yùn)行所用的內(nèi)存分為四種類型:全局內(nèi)存、常量內(nèi)存、局部內(nèi)存以及私有內(nèi)存。全局內(nèi)存:所有工作節(jié)點(diǎn)均可以對其進(jìn)行讀寫,容量較大,但訪問延遲較高;常量內(nèi)存:存放所有工作節(jié)點(diǎn)均可以訪問的常量;局部內(nèi)存:工作組內(nèi)部的內(nèi)存,工作組內(nèi)的所有工作項(xiàng)均可以進(jìn)行讀寫操作;私有內(nèi)存:工作項(xiàng)獨(dú)有的內(nèi)存,只對其相應(yīng)的工作項(xiàng)可見。執(zhí)行模型包括兩部分:一部分在Host主機(jī)運(yùn)行的主程序,該程序負(fù)責(zé)創(chuàng)建上下文、緩存、對OpenCL設(shè)備下發(fā)任務(wù)及數(shù)據(jù)等,另一部分為運(yùn)行在OpenCL設(shè)備上的kernel函數(shù),kernel函數(shù)負(fù)責(zé)執(zhí)行相關(guān)的計(jì)算任務(wù)。編程模型支持?jǐn)?shù)據(jù)并行和任務(wù)并行兩種模型,其中數(shù)據(jù)并行模式是OpenCL的首要模型。

      OpenCL設(shè)計(jì)的大致流程為[18]:

      (1)創(chuàng)建并初始化OpenCL設(shè)備和上下文環(huán)境,建立命令隊(duì)列。

      (2)創(chuàng)建并編譯源程序,建立內(nèi)核kernel句柄。

      (3)分配數(shù)據(jù)所需內(nèi)存空間,并將數(shù)據(jù)復(fù)制到OpenCL設(shè)備上。

      (4)設(shè)置內(nèi)核kernel參數(shù)。

      (5)Host下發(fā)并執(zhí)行內(nèi)核kernel程序(通過下發(fā)不同的kernel程序可以實(shí)現(xiàn)不同的功能)。

      (6)將計(jì)算結(jié)果從OpenCL設(shè)備復(fù)制到主機(jī)中。

      (7)釋放系統(tǒng)所占資源。

      2.2 基于國產(chǎn)CPU的可重構(gòu)計(jì)算系統(tǒng)

      圖1為CPU+FPGA架構(gòu)的可重構(gòu)系統(tǒng)框圖,主要包括Host主機(jī)部分與FPGA加速單元。Host主機(jī)與FPGA加速單元通過PCIe總線進(jìn)行通信。Host主機(jī)負(fù)責(zé)管理控制相關(guān)事務(wù)以及調(diào)度FPGA加速單元,并處理一些簡單的串行程序。FPGA由于其具有強(qiáng)大的并行計(jì)算能力,負(fù)責(zé)處理Host下發(fā)的計(jì)算密集型任務(wù)。FPGA具有在線可重構(gòu)功能以實(shí)現(xiàn)對不同應(yīng)用需求的計(jì)算加速。FPGA內(nèi)部分為兩個(gè)區(qū)域:靜態(tài)配置區(qū)和動態(tài)可重構(gòu)區(qū),靜態(tài)配置區(qū)包括PCIe模塊、DMA控制器以及Memory控制器等主要模塊,該區(qū)域一方面向外提供PCIe、DDR等的通信接口,另一方面向動態(tài)可重構(gòu)區(qū)的kernel IP提供接口。靜態(tài)配置區(qū)通過AS(Active Serial)配置模式進(jìn)行配置,系統(tǒng)上電后自動配置,配置完成后FPGA具備了基本的通信功能,能夠接收Host下發(fā)的任務(wù)。動態(tài)可重構(gòu)區(qū)負(fù)責(zé)布署Host下發(fā)的kernel IP并執(zhí)行數(shù)據(jù)處理任務(wù),kernel IP為具體應(yīng)用的算法實(shí)現(xiàn)。當(dāng)應(yīng)用場景改變時(shí),Host可通過PCIe通道下發(fā)新的kernel IP,重新配置動態(tài)可重構(gòu)區(qū),此過程無需FPGA加速單元重啟,整個(gè)重配過程耗時(shí)僅為毫秒級,完全實(shí)現(xiàn)了算法的在線重構(gòu)。

      圖2 基于國產(chǎn)CPU的可重構(gòu)系統(tǒng)實(shí)現(xiàn)框圖

      由于kernel函數(shù)的編譯時(shí)間較長,且kernel函數(shù)的編譯需要用到FPGA綜合工具,而這些工具并不支持國產(chǎn)平臺,因此,本文將采用x86平臺對kernel函數(shù)進(jìn)行離線編譯,事先生成FPGA可執(zhí)行文件?;趪a(chǎn)CPU的可重構(gòu)計(jì)算系統(tǒng)實(shí)現(xiàn)框圖如圖2所示,系統(tǒng)的運(yùn)行環(huán)境包括國產(chǎn)飛騰平臺和FPGA加速單元兩部分,國產(chǎn)飛騰平臺負(fù)責(zé)main函數(shù)的編譯、運(yùn)行以及對FPGA的管理控制、任務(wù)分配等工作。Main函數(shù)的編譯與運(yùn)行需要OpenCL運(yùn)行支持庫支持。當(dāng)需要對FPGA可重構(gòu)區(qū)進(jìn)行配置時(shí),Host會將事先生成的FPGA可執(zhí)行文件通過PCIe總線下發(fā)到FPGA中,以實(shí)現(xiàn)FPGA的在線可重構(gòu)功能。

      3 AES算法性能瓶頸分析及OpenCL實(shí)現(xiàn)

      3.1 AES算法原理

      AES是由美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)提出的用于替代數(shù)據(jù)加密標(biāo)準(zhǔn)(Data Encryption Standard,DES)的新一代密碼標(biāo)準(zhǔn)。它采用一種對稱分組密碼算法,加密與解密過程使用相同的密鑰。AES加密對象的數(shù)據(jù)塊分組長度為128 bit,密鑰長度可以為128 bit、192 bit以及256 bit三種。AES的加密過程是對128 bit的數(shù)據(jù)塊進(jìn)行多輪的迭代運(yùn)算,得出相同長度的密文。不同長度的密鑰所需的輪數(shù)不同:128 bit長度的密鑰需要10輪,192 bit長度的密鑰需要12輪,256 bit長度的密鑰需要14輪。由于每輪的運(yùn)算步驟基本相同,本文以128 bit密鑰長度為例來介紹AES加密過程。每輪加密的對象為16 Byte(128 bit)的數(shù)據(jù),可以表示為一個(gè)4×4的矩陣。

      加密流程如圖3所示,除了第10輪與第1輪前的輪密鑰加,其余各輪的運(yùn)算步驟相同,包括字節(jié)替換(SubBytes)、行移位(ShiftRows)、列混合(MixColumns)以及輪密鑰加(AddRoundKey)四個(gè)步驟。字節(jié)替換是通過非線性的替換函數(shù),利用查表的方式將每個(gè)字節(jié)替換成相應(yīng)的字節(jié);行移位將矩陣的每行進(jìn)行循環(huán)移位;列混合是通過線性變換的方式來混合每列的四個(gè)字節(jié)數(shù)據(jù);輪密鑰是將矩陣中的每個(gè)字節(jié)與該次的輪密鑰進(jìn)行異或運(yùn)算。每個(gè)輪次所用的密鑰由上一輪密鑰按照密鑰擴(kuò)展方法生成,其中第一組密鑰為原始密鑰。

      圖3 AES加密流程圖

      3.2 AES程序性能瓶頸剖析

      程序運(yùn)行過程中,大部分的執(zhí)行時(shí)間往往花費(fèi)在某些關(guān)鍵函數(shù)上,這些函數(shù)經(jīng)常具有大量循環(huán)、數(shù)學(xué)計(jì)算等操作,這些函數(shù)對程序的執(zhí)行效率有著關(guān)鍵性的影響[19]。如果能找到這些性能瓶頸,通過一些加速設(shè)備對其進(jìn)行優(yōu)化、加速,以縮短執(zhí)行時(shí)間,將會大大提升程序的整體性能。

      本文采用Google perftools性能瓶頸剖析軟件對AES加密程序進(jìn)行性能剖析。該分析軟件通過采樣的方式統(tǒng)計(jì)程序中各函數(shù)對CPU的使用情況,函數(shù)的耗時(shí)長短與采樣次數(shù)成正比,即采樣次數(shù)多的函數(shù)耗時(shí)較長。通過該分析軟件,可以對程序中各函數(shù)的耗時(shí)情況一目了然,進(jìn)而得出程序的瓶頸所在。圖4為采用kcachegrind軟件對Google perftools剖析結(jié)果進(jìn)行顯示的結(jié)果圖像,圖中方框內(nèi)為程序中各函數(shù)的名稱以及該函數(shù)的執(zhí)行時(shí)間占總時(shí)間的百分比,箭頭旁的數(shù)字表示箭頭所指向的函數(shù)被采樣的次數(shù),采樣次數(shù)越大,表示執(zhí)行時(shí)間越長。由圖4可見,占據(jù)AES程序執(zhí)行時(shí)間的主要是MixColumns(列混合)、AddRoundKey(輪密鑰加)、SubBytes(字節(jié)替換)以及ShiftRows(行移位)四個(gè)函數(shù),其中MixColumns執(zhí)行時(shí)間最長,而密鑰擴(kuò)展函數(shù)KeyExpansion在圖中并未出現(xiàn),表明該函數(shù)執(zhí)行時(shí)間非常短。

      圖4 AES程序性能瓶頸剖析結(jié)果圖

      鑒于上述分析,本文將對AES的列混合、輪密鑰加、字節(jié)替換和行移位操作函數(shù)進(jìn)行加速,而密鑰擴(kuò)展函數(shù)通過CPU實(shí)現(xiàn)。

      3.3 AES算法的OpenCL實(shí)現(xiàn)

      基于OpenCL的AES程序?qū)崿F(xiàn)包括兩部分:一部分是運(yùn)行于Host主機(jī)的main函數(shù),另一部分為運(yùn)行于FPGA上的kernel函數(shù)。Main函數(shù)主要包括:平臺、設(shè)備信息的獲取,上下文的創(chuàng)建,Buffer的創(chuàng)建,命令隊(duì)列的創(chuàng)建,kernel參數(shù)設(shè)置,kernel文件及數(shù)據(jù)下發(fā)等過程。由于密鑰擴(kuò)展函數(shù)執(zhí)行時(shí)間較短,因此將密鑰擴(kuò)展也放在Host主機(jī)運(yùn)行,并將擴(kuò)展的密鑰存放在全局內(nèi)存,以供kernel函數(shù)使用。相關(guān)程序如圖5所示。

      圖5 密鑰擴(kuò)展及其傳輸代碼示意

      Kernel函數(shù)為AES加密的關(guān)鍵部分,主要包括SubBytes函數(shù)、ShiftRows函數(shù)、MixColumns函數(shù)以及AddRoundKey函數(shù)。為了提高加密吞吐率,對kernel函數(shù)進(jìn)行優(yōu)化設(shè)計(jì),采用多級流水并行的方式,保證kernel的每一個(gè)處理單元都能全速運(yùn)行。相關(guān)程序如圖6所示。

      圖6 Kernel函數(shù)代碼示意

      4 實(shí)驗(yàn)數(shù)據(jù)測試及實(shí)驗(yàn)結(jié)果討論

      4.1 實(shí)驗(yàn)條件

      本文所用測試環(huán)境配置如下:

      Host主機(jī)參數(shù):CPU型號:phytium FT-1500A

      CPU主頻:1 GHz

      內(nèi)存:16 GB DDR3

      PCIe接口:PCIe x8 Gen3

      FPGA加速單元:NSA-121A,配置參數(shù)請見表1。

      軟件環(huán)境:4.4.13-20170210.kylin.5.desktop,Xilinx SDAccel 2016.3,gcc/g++。

      表1 FPGA加速卡NSA-121A配置參數(shù)

      表2 國產(chǎn)平臺測試環(huán)境加密性能對比

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

      實(shí)驗(yàn)對bmp圖片進(jìn)行加密實(shí)驗(yàn),為了提高實(shí)驗(yàn)結(jié)果的可靠性,每種長度的明文均加密三次,然后取中間值作為最終結(jié)果。分別采用本文設(shè)計(jì)的可重構(gòu)系統(tǒng)與CPU串行程序?qū)Σ煌L度的明文進(jìn)行加密,以獲得AES加密性能對比,其中在CPU上運(yùn)行的加密程序?yàn)閱尉€程程序。所得實(shí)驗(yàn)結(jié)果如表2所示。

      表2中CPU加密采用串行單線程,F(xiàn)PGA kernel加密時(shí)間為FPGA執(zhí)行AES加密任務(wù)所占的時(shí)間,Host主程序?yàn)榭芍貥?gòu)系統(tǒng)中在Host上運(yùn)行的程序,包括獲取設(shè)備信息、創(chuàng)建上下文、由二進(jìn)制kernel創(chuàng)建Program、創(chuàng)建Buffer、數(shù)據(jù)傳輸、密鑰擴(kuò)展等函數(shù)。

      由表2可以看出:

      (1)FPGA加密時(shí)間遠(yuǎn)遠(yuǎn)小于CPU加密時(shí)間。

      (2)在明文長度較短的情況下,可重構(gòu)系統(tǒng)加密的總時(shí)間要大于CPU加密時(shí)間,但是隨著明文長度的增大,CPU加密所耗的時(shí)間要遠(yuǎn)遠(yuǎn)超過可重構(gòu)系統(tǒng)。

      (3)CPU加密時(shí)間隨著明文長度的增加成比例線性增大。

      (4)在明文長度較短(小于192 MB)的情況下,Host主程序運(yùn)行時(shí)間沒有顯著增大,但當(dāng)明文長度繼續(xù)增加時(shí),Host主程序運(yùn)行時(shí)間會呈現(xiàn)出增大趨勢。這是由于在明文長度較小時(shí),Host主程序中clCreateProgram-WithBinary和clCreateContext為主要耗時(shí)函數(shù),分別耗時(shí)6 750 ms和4 400 ms左右,而這兩個(gè)函數(shù)所占時(shí)間與明文長度無關(guān)。當(dāng)明文長度增大時(shí),主程序中的數(shù)據(jù)拷貝函數(shù)clEnqueueWriteBuffer和clEnqueueReadBuffer函數(shù)所占時(shí)間將會占主導(dǎo)地位,這些函數(shù)的執(zhí)行所占時(shí)間與明文長度成比例線性關(guān)系。

      圖7為可重構(gòu)系統(tǒng)加密總時(shí)間與CPU串行加密時(shí)間對比圖,由圖可見,在明文長度較大時(shí),可重構(gòu)系統(tǒng)的加密總時(shí)間要遠(yuǎn)遠(yuǎn)小于CPU加密時(shí)間,且CPU加密時(shí)間會隨著明文長度的增加而線性增大,而可重構(gòu)系統(tǒng)的加密時(shí)間增長緩慢。

      圖7 可重構(gòu)系統(tǒng)加密總時(shí)間與CPU串行加密時(shí)間對比

      圖8 為AES串行加密與FPGA并行加密的吞吐率對比圖,由圖可見,明文長度在48 KB~3 MB之間時(shí),F(xiàn)PGA并行加密吞吐率增長較快,明文大于3 MB后,F(xiàn)PGA并行加密吞吐率趨近于穩(wěn)定,而CPU串行加密吞吐率在整個(gè)階段都遠(yuǎn)遠(yuǎn)小于FPGA并行加密。

      圖8 AES串行加密與并行加密吞吐率比較

      圖9 為可重構(gòu)計(jì)算系統(tǒng)并行加密相比于CPU串行加密的加速比,可見,加速比隨著明文長度的增加而增大,在明文長度為49 152 MB時(shí),加速比可以達(dá)到120多倍。

      5 結(jié)束語

      圖9 可重構(gòu)計(jì)算系統(tǒng)相比FT-1500A串行加密的加速比

      為了提升國產(chǎn)計(jì)算平臺的處理性能,本文設(shè)計(jì)了基于國產(chǎn)CPU的可重構(gòu)計(jì)算系統(tǒng)。該系統(tǒng)包括基于國產(chǎn)CPU的主機(jī)單元和FPGA可重構(gòu)加速單元,主機(jī)單元負(fù)責(zé)邏輯判斷與管理調(diào)度等任務(wù),F(xiàn)PGA負(fù)責(zé)對計(jì)算密集型任務(wù)進(jìn)行加速,并支持基于OpenCL框架標(biāo)準(zhǔn)的編程方式。通過采用AES加密算法來測試本系統(tǒng)的計(jì)算性能,并與CPU串行處理結(jié)果進(jìn)行對比,得出:相比于FT-1500A CPU串行加密,采用可重構(gòu)計(jì)算系統(tǒng)并行加密能夠獲得120多倍的加速比,且在明文長度較大的情況下,可重構(gòu)系統(tǒng)總的加密時(shí)間會遠(yuǎn)遠(yuǎn)小于CPU串行加密時(shí)間。實(shí)驗(yàn)結(jié)果表明:本文設(shè)計(jì)的基于國產(chǎn)CPU的可重構(gòu)計(jì)算系統(tǒng)能夠大幅提升國產(chǎn)平臺的計(jì)算性能。

      猜你喜歡
      明文內(nèi)存密鑰
      探索企業(yè)創(chuàng)新密鑰
      密碼系統(tǒng)中密鑰的狀態(tài)與保護(hù)*
      “春夏秋冬”的內(nèi)存
      一種對稱密鑰的密鑰管理方法及系統(tǒng)
      奇怪的處罰
      基于ECC的智能家居密鑰管理機(jī)制的實(shí)現(xiàn)
      奇怪的處罰
      四部委明文反對垃圾焚燒低價(jià)競爭
      基于內(nèi)存的地理信息訪問技術(shù)
      保德县| 呼和浩特市| 赣州市| 根河市| 马尔康县| 城步| 甘谷县| 上杭县| 芷江| 剑河县| 宝应县| 赫章县| 临江市| 五莲县| 奉贤区| 河西区| 新密市| 耿马| 奉化市| 郴州市| 陕西省| 平湖市| 定陶县| 鄂州市| 亚东县| 鄂伦春自治旗| 永泰县| 蒙阴县| 兴业县| 沂水县| 石柱| 峡江县| 浦江县| 三门县| 高雄县| 马关县| 青州市| 富川| 会昌县| 浠水县| 论坛|