趙雷 楊懷朋
目的:解決云計算時代,海量數(shù)據(jù)傳輸占用超大的帶寬,嚴(yán)重影響了云計算數(shù)據(jù)中心中網(wǎng)絡(luò)傳輸性能的相關(guān)問題。
方法:采用一種面向CPU+FPGA異構(gòu)加速平臺的解壓縮方法,通過采用OpenCL高級語言完成解壓縮算法的描述,然后通過Altera SDK for OpenCL高層次綜合工具實現(xiàn)解壓縮算法到FPGA硬件執(zhí)行比特流的自動化映射。
結(jié)果:本發(fā)明采用FPGA硬件平臺執(zhí)行解壓縮算法核心模塊,能夠通過并行流水的優(yōu)化方式提高算法的并行度,從而改善算法執(zhí)行時的吞吐率性能。與通用的RTL硬件描述語言實現(xiàn)方式相比,本發(fā)明采用OpenCL語言進行FPGA硬件比特流的生成,能夠有效改善算法實現(xiàn)效率,減少算法實現(xiàn)的開發(fā)周期。
結(jié)論:設(shè)計合理的OpenCL描述的gzip解壓縮算法描述,使得可以映射生成更高效的FPGA硬件電路結(jié)構(gòu),進而提升FPGA對解壓縮算法的硬件加速效果。
云計算是計算機時代又一次新的變革,誕生出很多前沿的技術(shù)和嶄新的模式,逐漸應(yīng)用到社會的各個行業(yè),如政府、教育、醫(yī)療、金融、企業(yè)等領(lǐng)域都在從傳統(tǒng)的部署模式向云計算模式轉(zhuǎn)型,云計算模式在帶來便利的同時也使得用戶對云計算體驗有了更高的要求,如云計算時代文件的信息量與日俱增,文件的傳輸過程對性能的要求越來越高,就需要有新的技術(shù)來實現(xiàn)解壓縮的整個過程。本文主要介紹云計算數(shù)據(jù)中心技術(shù)領(lǐng)域中一種面向CPU+FPGA異構(gòu)加速平臺的解壓縮方法。
在云計算時代,海量數(shù)據(jù)傳輸需要占用超大的帶寬,嚴(yán)重影響了云計算數(shù)據(jù)中心中網(wǎng)絡(luò)傳輸?shù)男阅堋?/p>
基于上述問題,本發(fā)明提出了一種面向CPU+FPGA異構(gòu)加速平臺的解壓縮方法,通過采用OpenCL高級語言完成解壓縮算法的描述,然后通過Altera SDK for OpenCL高層次綜合工具實現(xiàn)解壓縮算法到FPGA硬件執(zhí)行比特流的自動化映射。在縮短產(chǎn)品研發(fā)周期的同時,提高FPGA對解壓縮算法的硬件加速效果。
(一)技術(shù)詳解
本文章提出了一種面向CPU+FPGA異構(gòu)加速平臺的解壓縮方法。該方法采用OpenCL高級語言進行g(shù)zip解壓縮算法的描述,使用通用處理器CPU作為主機端運行主程序,F(xiàn)PGA作為協(xié)處理器進行解壓縮算法的硬件加速單元,通過Altera SDK for OpenCL高層次綜合工具完成高級語言描述的解壓縮算法到FPGA硬件執(zhí)行比特流的自動化映射,完成對gzip解壓縮算法的異構(gòu)加速系統(tǒng)的自動部署過程。
本方法用FPGA作為協(xié)處理器,可以有效的提升解壓縮核心算法的執(zhí)行性能,同時該實現(xiàn)方式可以有效縮短將解壓縮算法部署到基于FPGA的異構(gòu)加速平臺時的時間,從而提高產(chǎn)品研發(fā)周期。
(二)技術(shù)實現(xiàn)的具體操作方式
面向CPU+FPGA異構(gòu)加速平臺的解壓縮方法實現(xiàn)具體操作過程如下:
首先,采用OpenCL高級語言完成gzip解壓縮算法的描述,分別生成在通用處理器CPU上運行的主機端程序,以及面向FPGA平臺的Kernel程序。然后,采用GCC編譯器對主機端程序進行編譯,生成可在通用處理器CPU上執(zhí)行的可執(zhí)行程序文件;采用Altera SDK for OpenCL(AOC)高層次綜合工具對Kernel程序文件進行編譯綜合,生成可在FPGA上運行的AOCX文件。最后,在通用處理器CPU上運行主機端程序,調(diào)用FPGA上的解壓縮核心算法硬件電路進行硬件加速,CPU與FPGA之間采用PCI-E接口連接,進行數(shù)據(jù)通信,采用FPGA開發(fā)板上的DDR3內(nèi)存作為數(shù)據(jù)緩存Buffer。
主機端程序?qū)崿F(xiàn)時主要包括以下幾個步驟:
首先是創(chuàng)建主機端與FPGA端進行數(shù)據(jù)通信的緩存,將該緩存存放在FPGA開發(fā)板的DDR內(nèi)存上;
把需要解壓縮的數(shù)據(jù)傳輸?shù)讲襟E101創(chuàng)建的緩存中;
設(shè)置FPGA端運行時所需要的參數(shù)信息;
控制啟動FPGA端的gzip解壓縮算法;
最后等待FPGA端的解壓縮算法運行結(jié)束后,從FPGA端DDR內(nèi)存上的緩存中,將解壓縮后的數(shù)據(jù)讀取到主機端,從而完成解壓縮過程。
運用OpenCL語言描述的gzip解壓縮算法Kernel程序主要包括以下步驟:
(1)接收到主機端的啟動信號后,逐個字節(jié)讀取緩存中的待解壓縮數(shù)據(jù);
(2)對于每個字節(jié),根據(jù)緩存中的huffman碼表進行huffman解壓縮;
(3)將完成huffman解壓縮的數(shù)據(jù)再次存放到緩存中;
(4)逐個字節(jié)讀取huffman解壓縮后的數(shù)據(jù)緩存,其中,第一個字節(jié)是標(biāo)記位,在后續(xù)字節(jié)讀取中,如果遇到標(biāo)記位,則進入步驟(5),否則進入步驟(6);
(5)遇到標(biāo)記位后,讀取后續(xù)字節(jié),得到重復(fù)字節(jié)長度和偏移量,根據(jù)重復(fù)字節(jié)長度和偏移量進行解壓縮,將解壓縮后的數(shù)據(jù)寫入DDR上的緩存中;
(6)不是標(biāo)記位時,直接將讀取的數(shù)據(jù)作為解壓縮后的數(shù)據(jù)寫入DDR緩存中;
(7)重復(fù)上述步驟,直至緩存中待解壓縮數(shù)據(jù)處理結(jié)束,向主機端返回完成信號。
(三)技術(shù)方案帶來的有益效果
采用FPGA硬件平臺執(zhí)行解壓縮算法核心模塊,能夠通過并行流水的優(yōu)化方式提高算法的并行度,從而改善算法執(zhí)行時的吞吐率性能。與通用的RTL硬件描述語言實現(xiàn)方式相比,本發(fā)明采用OpenCL語言進行FPGA硬件比特流的生成,能夠有效改善算法實現(xiàn)效率,減少算法實現(xiàn)的開發(fā)周期。
(四)技術(shù)關(guān)鍵點
1.本發(fā)明的主要創(chuàng)新點/發(fā)明點
我們這個方法的關(guān)鍵點是:設(shè)計合理的OpenCL描述的gzip解壓縮算法描述,使得可以映射生成更高效的FPGA硬件電路結(jié)構(gòu),進而提升FPGA對解壓縮算法的硬件加速效果。
2.創(chuàng)新點如下:
(1)一種面向CPU+FPGA異構(gòu)加速平臺的解壓縮方法。其特征在于:通過OpenCL高級描述語言進行g(shù)zip解壓縮算法的描述,采用Altera SDK for OpenCL高層次綜合工具進行面向FPGA的硬件比特流生成,實現(xiàn)FPGA對gzip解壓縮算法的硬件加速。這樣不僅可以有效的提高產(chǎn)品的研發(fā)周期,同時可以提高gzip解壓縮算法的執(zhí)行性能。
(2)根據(jù)(1)所描述的面向CPU+FPGA異構(gòu)加速平臺的解壓縮方法,其另一特征在于:采用CPU作為主機端進行硬件加速過程的控制,主要包括如下幾個步驟:
要建立主機端與FPGA端進行數(shù)據(jù)通信的緩存,該緩存要在FPGA開發(fā)板的DDR內(nèi)存上進行存放;
將需要解壓縮的數(shù)據(jù)傳輸?shù)讲襟E101創(chuàng)建的緩存中;
設(shè)置FPGA端運行時所需要的參數(shù)信息;
控制啟動FPGA端的gzip解壓縮算法;
最后需要等到FPGA端的解壓縮算法運行結(jié)束后,將FPGA端DDR內(nèi)存上的緩存中解壓縮后的數(shù)據(jù)讀取到主機端,從而完成解壓縮過程。
作者單位:山東道普測評技術(shù)有限公司