伍衛(wèi)國 王超輝 王今雨 聶世強 胡 壯
1(西安交通大學電子與信息工程學院 西安 710049) 2 (國家數(shù)據(jù)廣播工程技術研究中心(西安交通大學) 西安 710049) (wgwu@mail.xjtu.edu.cn)
近10年來,普適計算和物聯(lián)網(wǎng)的興起促進了嵌入式系統(tǒng)的發(fā)展,基于嵌入式系統(tǒng)的應用正在迅速占據(jù)著傳統(tǒng)IT行業(yè)的市場份額.可重構計算(reconfigurable computing, RC)是繼通用計算和專用集成電路(application specific integrated circuit, ASIC)之后的第3種計算模式,其綜合了通用計算與ASIC的優(yōu)點,一定程度上實現(xiàn)了計算速度與靈活性的并存.使用可重構計算技術的系統(tǒng)被稱為可重構系統(tǒng),主流的可重構系統(tǒng)依托于現(xiàn)場可編程門陣列(field programmable gate array, FPGA),實現(xiàn)了硬件資源的重復使用.在嵌入式應用中,可重構系統(tǒng)已經(jīng)應用到汽車、醫(yī)療、廣播、航空航天、高性能計算、數(shù)據(jù)存儲、無線通信以及家庭網(wǎng)絡等領域中,其應用價值的重要性不言而喻.
經(jīng)典動態(tài)可重構系統(tǒng)模型如圖1所示,其中包括應用任務的軟硬件劃分、調(diào)度與布局、布線、加載以及運行五大部分(如圖1中虛線框1~5).應用程序中的任務按照自身屬性,由任務劃分器劃分為軟件任務或者硬件任務,軟件任務添加到軟件任務隊列中,然后在軟件運行環(huán)境中(一般為CPU)運行;硬件任務的執(zhí)行需要經(jīng)過5個階段:1)硬件任務的調(diào)度.虛線框1為任務的調(diào)度過程.2)調(diào)度后的任務根據(jù)硬件資源需求,由布局器布局在FPGA的某塊空閑資源區(qū)中,虛線框2中即為任務的調(diào)度與布局部分.3)布局后的任務需要與I/O資源或者內(nèi)部其他硬件資源通信,這就涉及到重新布線的問題,虛線框3中為任務的布線部分.4)當布線完成后,需要將新生成的二進制配置文件配置到FPGA可重構資源的存儲區(qū)中,確定各個可重構資源的邏輯功能,虛線框4為二進制配置文件的加載過程.5)當任務被配置到FPGA上,按照預先定義的邏輯功能運行,直到任務計算完成,虛線框5為任務在FPGA上運行過程.
Fig. 1 Flow chart of classical dynamic reconfigurable system圖1 經(jīng)典動態(tài)可重構系統(tǒng)流程圖
Fig. 2 Reconfigurable file configuration process (no compression)圖2 可重構文件配置過程(不含壓縮)
隨著大規(guī)模集成電路技術的迅猛發(fā)展,F(xiàn)PGA工藝也在不斷提高.Xilinx公司于2003年推出的Spartan3系列處理器采用90 nm工藝,到最新的VIRTEX系列可編程FPGA系列采用16~28 nm工藝.工藝上的提升不僅降低了能耗,最主要是增加了集成度,Spartan3系列處理器中的邏輯單元(logic cells, LC)個數(shù)最多為53 712個,而Virtex UltraScale處理器中LC數(shù)量為4 432 680個,與之對應的配置文件大小相當Spartan3系列處理器配置文件大小的82倍.考慮到其他硬件資源(I/O資源、布線資源、DSP資源、存儲器資源和硬核微處理器資源等)的增加,近10年配置文件大小已經(jīng)增加了百倍以上[1].圖2為不含壓縮過程的配置文件配置過程,在該過程中,主要有2個階段耗時:1)配置文件從片外存儲器或PC機傳送到片內(nèi)配置控制器(配置存儲器);2)配置過程,即在配置控制器作用下將配置信息寫入可編程邏輯塊中并進行初始化操作(可編程邏輯塊、寄存器、I/O緩存).JTAG(joint test action group)為FPGA常見配置文件下載方式之一.JTAG下載方式為串行傳輸模式,在測試時鐘一定的情況下,配置文件傳輸時間完全由配置文件大小決定.這樣,為了減少第1階段耗費的時間,目前的解決方案為壓縮配置文件.各大可編程邏輯設備(programmable logic device, PLD)制造商(Xilinx,Intel等)也意識到了壓縮配置文件的重要性,在配置文件生成階段都可以設置配置文件壓縮方案.圖3為含壓縮過程的配置文件配置過程:
現(xiàn)在主流的FPGA處理器考慮到設計的安全性,對配置文件也進行了加密處理,這樣可以防止設計拷貝以及逆向工程等非法操作.Xilinx公司和Intel公司FPGA處理器均采用了256b AES對稱加密算法[2-3].加密解密消耗的時間不僅與算法本身相關,而且與加密文件大小相關.在加密前對配置文件進行壓縮處理,可以大幅度減少加密和解密過程的時間代價.Xilinx公司和Intel公司最新FPGA處理器同時支持配置文件壓縮與加密.由此可見,采用壓縮方法對于解決第1階段的耗時性還是很有幫助的.
可重構系統(tǒng)配置文件壓縮技術的使用不僅在一定程度上減少系統(tǒng)配置時間,提高系統(tǒng)運行速率,滿足實時性應用需求,而且降低了配置控制器內(nèi)部存儲代價,節(jié)約存儲資源.對于配置文件壓縮必須滿足2個條件:1)無損壓縮;2)解壓算法實現(xiàn)代價低.在FPGA二進制配置文件配置過程中,最小的配置單位為幀.配置幀中的每1b二進制數(shù)據(jù)都代表著芯片中某個可配置資源中寄存器的高低位,即配置幀信息的改變就有可能改變可配置資源的功能.為了保證可重構系統(tǒng)正常運行和可重構模塊功能不受改變,壓縮算法必須采用無損壓縮方式.配置文件經(jīng)過壓縮后可以在一定程度上減少系統(tǒng)配置時間,但并不是配置文件經(jīng)過壓縮處理過后就能夠提高配置速率,解壓縮過程也是很重要的一個環(huán)節(jié).若解壓縮過程所消耗的時間代價過大或者消耗硬件資源過多,那么該壓縮算法就不適合對配置文件壓縮.近幾年,國內(nèi)外學術界對壓縮配置文件提高可重構系統(tǒng)配置速率展開了廣泛的研究,現(xiàn)有的壓縮技術分別側重4個方面:壓縮算法、降低解壓縮代價、動態(tài)可重構和修改硬件結構.
1) 提升壓縮率
研究主要集中在通過改進經(jīng)典的壓縮算法降低配置文件壓縮率,從而達到提高配置速率、減少存儲代價為目標.Vliegen等人[4]提出一種基于單片機遠程配置FPGA的解決方案,其壓縮算法采用了行程編碼壓縮算法,該算法易于實現(xiàn)并且可以達到較為理想的壓縮效果;Tefan[5]針對Xilinx公司Virtex 4系列FPGA器件提出了2種專用壓縮算法,基于LZW的壓縮算法和基于二進制算術編碼器壓的縮算法,該作者使用了較少的硬件資源分別實現(xiàn)了這2種壓縮算法;有些學者通過提出新的配置環(huán)境或者劃分配置文件等預處理操作,然后結合基于字典的壓縮算法實現(xiàn)高壓縮比[6-7];Jia等人[8]通過在JTAG配置模式中分別增加基于定長行程編碼與解碼方案實現(xiàn)配置文件的壓縮與解壓縮;采用該種思路的還有文獻[9-11].從壓縮算法出發(fā)來解決配置文件壓縮的優(yōu)勢在于可以充分利用壓縮文件自身的特征,結合現(xiàn)有的優(yōu)秀壓縮算法進行壓縮處理,獲得較為理想的壓縮率.但是,這往往會導致在提高壓縮率的同時忽略了解壓縮過程在配置過程中的重要地位,造成解壓縮電路復雜,時間開銷大.
2) 降低解壓縮代價
FPGA中的配置控制器需要對可配置資源中所有可編程資源進行重新配置,需要輸出完整的配置信息,因此解壓縮過程是必要的環(huán)節(jié).解壓縮算法是通過FPGA內(nèi)部硬件邏輯資源實現(xiàn)的,解壓縮算法的性能與復雜程度也是嚴重影響配置性能的關鍵因素之一.國內(nèi)外許多學者以解壓縮效率為重點研究目標,對壓縮算法進行了大量研究.Jafri[12]采用LZSS壓縮算法對配置文件進行壓縮,其優(yōu)勢在于可以針對LZSS算法實現(xiàn)高效的并行解壓縮算法;Qin等人[13]提出了一種具有解壓感知的壓縮算法,目的是為了更高效的完成解壓縮算法;Nabina等人[14]在傳統(tǒng)的配置控制器里結合了基于ICAP (internal configuration access port)優(yōu)化的解壓縮算法,實現(xiàn)了高速率的配置文件解壓縮過程;Jordan等人[15]從硬件實現(xiàn)角度進行改進,通過將固定硬件實現(xiàn)解壓算法與基于LUT實現(xiàn)解壓算法相結合的思想達到了靈活性與資源代價平衡的目的.
3) 動態(tài)可重構配置
動態(tài)可重構系統(tǒng)配置文件由2部分構成:靜態(tài)可重構區(qū)域配置信息和動態(tài)可重構配置信息.靜態(tài)可重構區(qū)域配置信息完全相同,對多個配置文件而言這部分內(nèi)容為冗余數(shù)據(jù).許多研究者就從這個角度出發(fā)進行關于動態(tài)可重構系統(tǒng)配置文件壓縮研究.Liu等人[16]實現(xiàn)了基于FPGA重構技術的雷達信號處理系統(tǒng),通過分析雷達信號處理的核心算法,找出不同算法對應配置文件的重復部分并刪除,達到壓縮配置文件的目的;Sellers等人[17]對靜態(tài)可重構部分的配置信息進行了分析,通過刪除初始化配置信息中所有“0”幀信息和相關的寫入命令達到了壓縮初始化配置信息的目的;Gu等人[18]從3個層次進行配置文件壓縮:配置幀內(nèi)、配置幀間和配置文件級壓縮;Beckhoff等人[19]通過分析靜態(tài)可重構區(qū)域配置信息和動態(tài)可重構配置區(qū)域各自的特征,對這2部分采用不同的壓縮算法以提高整體壓縮率.
4) 修改硬件結構
還有一些壓縮方案是通過修改配置系統(tǒng)結構或者考慮其他配置因素從而進一步提高壓縮率.Xie等人[20]用可尋址配置文件寄存器替代傳統(tǒng)移位寄存器,并且在FPGA內(nèi)部實現(xiàn)了以幀為單位的解壓電路,從而提高了配置速率.
本文依據(jù)各種壓縮思路的優(yōu)缺點,選用行程編碼壓縮思想(run length encoding, RLE)為核心對配置文件進行壓縮.首先通過統(tǒng)計配置文件信息,確定定長RLE壓縮算法相關參數(shù).然后對定長RLE壓縮算法進行優(yōu)化,結合Huffman編碼方式實現(xiàn)變長RLE壓縮算法.最后,采用掩碼思想對變長RLE壓縮結果進行2次壓縮,進一步降低壓縮率.
FPGA配置文件是在用戶前期開發(fā)結束后,通過集成開發(fā)工具生成的用于配置FPGA芯片中可重構資源的二進制文件[21].FPGA配置時需要將配置文件從本地開發(fā)環(huán)境(運行在PC或工作站上的EDA軟件),或外部存儲系統(tǒng)傳輸?shù)紽PGA內(nèi)部存儲空間,然后再由內(nèi)部控制器進行配置控制.對配置文件壓縮處理可以減少外部傳輸時間,提高配置速率.本節(jié)首先對可重構系統(tǒng)配置過程進行詳細介紹;然后針對動態(tài)可重構系統(tǒng)特征與要求,結合行程編碼壓縮算法探索多位壓縮元配置文件最優(yōu)壓縮參數(shù);然后對壓縮文件進行深入分析,對行程編碼壓縮算法進行改善,最終實現(xiàn)二進制配置文件高效壓縮.
本節(jié)首先從整體上介紹FPGA動態(tài)可重構系統(tǒng)的通用配置模型,然后通過Xilinx Virtex -Ⅱ系列FPGA的配置模型詳細介紹配置過程[10],Virtex -Ⅱ系列FPGA為Xilinx 高端FPGA的入門級產(chǎn)品,其硬件結構最具有代表性,最后以該模型為基礎,對動態(tài)可重構系統(tǒng)的配置時間代價進行分析,提出優(yōu)化配置時間方案.
圖4為動態(tài)可重構系統(tǒng)的通用配置模型圖,主要由內(nèi)外2部分組成.外部主要由非易失性存儲器與存儲控制器組成,非易失性存儲器存儲配置文件,存儲控制器控制片外存儲器的工作.內(nèi)部FPGA部分主要由配置控制器、片內(nèi)高速緩存、配置端口以及配置單元存儲區(qū)組成.傳統(tǒng)的配置控制器和配置端口協(xié)議均由軟核IP實現(xiàn),目前FPGA為了減少系統(tǒng)配置時間,這2部分采用硬件實現(xiàn)并集成在FPGA芯片中[22].片內(nèi)高速緩存的核心作用是存儲從片外高速存儲器傳輸?shù)呐渲脭?shù)據(jù),配置控制器與片內(nèi)高速緩存通信,將配置數(shù)據(jù)發(fā)送給配置端口.配置控制器也與配置端口通信,當配置端口內(nèi)部緩沖區(qū)飽和時,配置控制器控制片內(nèi)高速緩存停止向配置端口發(fā)送數(shù)據(jù).配置端口將配置信息傳送至相應的可重構單元配置存儲區(qū),實現(xiàn)可重構單元邏輯功能.
Fig. 5 Virtex -Ⅱ series PPGA dynamic reconfigurable system圖5 Virtex -Ⅱ系列PPGA動態(tài)可重構系統(tǒng)配置
動態(tài)可重構系統(tǒng)配置過程可以被劃分為2個階段:1)通過片外存控制器進行配置數(shù)據(jù)下載,他控制片外高速存儲器將配置數(shù)據(jù)傳輸給片內(nèi)高速緩存;2)為配置控制器將高速緩存區(qū)配置數(shù)據(jù)通過配置端口加載至可重構單元配置存儲區(qū).2部分以流水線方式同時運行,直至配置文件被全部傳輸至配置單元存儲區(qū)或者第1階段全部配置數(shù)據(jù)被傳輸至片內(nèi)高速緩存.配置過程中2個階段是分離的,第1階段可以在第2階段開始前將全部配置數(shù)據(jù)下載至片內(nèi)高速緩存(在片內(nèi)緩存容量充足前提下),提高系統(tǒng)配置速率.
Fig. 4 General configuration model of dynamic reconfigurable system圖4 動態(tài)可重構系統(tǒng)通用配置模型
圖5為Xilinx Virtex -Ⅱ系列FPGA動態(tài)可重構系統(tǒng)配置圖[23].灰色部分為FPGA外圍設備,白色部分為FPGA內(nèi)部結構. PPC(PowerPC)為嵌入式處理器,控制整個配置流程,其功能也可使用軟核嵌入式處理器Microblaze實現(xiàn).PLB_BRAM controller分別與PLB總線與PPC Memory相連,控制雙方數(shù)據(jù)傳輸.OPBHWICAP是一種配置協(xié)議控制器[24],他采用有限狀態(tài)機控制ICAP對動態(tài)可重構區(qū)域(partially reconfigurable regions, PRR)與靜態(tài)區(qū)域(static part)進行配置.OPBHWICAP中的BRAM為配置緩沖區(qū),一般由FPGA內(nèi)部BRAM組成,大小為2KB. SysACEcntlr( system advanced configuration environment controller)是Xilinx提供的高級配置環(huán)境,實現(xiàn)外部微型存儲器(compact flash,CF)與內(nèi)部總線之間的高速通信[25].FPGA重構配置過程可劃分為3個階段(如圖5所示):
1) PPC向System ACE cntlr發(fā)出指令,將外部存儲器中配置數(shù)據(jù)以塊(block)為單位傳輸至FPGA內(nèi)部存儲器PPC Memory.
2) PPC控制PLB_BRAM controller將配置數(shù)據(jù)以字(word)為單位傳輸至ICAP配置緩存器BRAM.
3) 當ICAP配置緩存器飽和時,PPC控制OPBHWICAP將配置數(shù)據(jù)通過ICAP加載至可重構單元配置存儲區(qū).
3個階段以流水線方式執(zhí)行,直到配置文件全部加載到配置存儲區(qū),配置過程結束[26].
根據(jù)上述配置過程描述,F(xiàn)PGA配置過程3個階段可被簡化為EM-PPC,PPC-ICAP,ICAP-CM,其中EM(external memory)為外部存儲器,RT(reconfigure time)表示可重構系統(tǒng)配置時間:
RT=RTEM-PPC+RTPPC-ICAP+RTICAP-CM,
(1)
其中,RTEM-PPC,RTPPC-ICAP,RTICAP-CM分別表示配置階段EM-PPC,PPC-ICAP,ICAP-CM所需時間.文獻[24]對3個階段占據(jù)整個配置時間的比例進行統(tǒng)計,結果如表1所示:
Table 1 Statistics of Configuration Time Ratio, Port Throughput and Theoretical Throughput
表1中的外部存儲器為CF卡.從表1可知:1)EM-PPC階段時間代價最高,約占可重構配置時間的77.28%;2)EM-PPC階段吞吐量利用率最低,僅占理論吞吐量的0.52%.由表1可得,對EM-PPC配置階段進行優(yōu)化,可大幅度提高配置速率,依據(jù)Amdahl定律:
(2)
其中,P為EM-PPC所占時間百分比,S為該階段優(yōu)化時間加速比,滿足S≥1.
可以采用2種思路對該階段傳輸速率進行優(yōu)化:1)提高吞吐量;2)壓縮配置文件.表1中采用CF卡的最大傳輸速率為64 MBps,若將配置文件提前傳輸?shù)紻DR2@ 800 MBps高速存儲器中,則EM-PPC加速比S=12.5,對應的Speedup=3.46,即配置時間減少到原始配置時間的28.9%.如將配置文件壓縮為原始配置文件大小的50%,則配置時間減少到原始配置時間的72.72%.本文旨在不修改硬件結構的前提下,對通用動態(tài)可重構系統(tǒng)配置時間進行優(yōu)化,本文選用配置文件壓縮思想進行配置時間優(yōu)化.
通過對動態(tài)可重構系統(tǒng)配置過程分析,本文選用壓縮配置文件思路減少系統(tǒng)配置時間.通過對國內(nèi)外研究現(xiàn)狀分析,本文根據(jù)2級制配置文件的特征,采用行程編碼無損壓縮算法RLE進行配置文件壓縮.本節(jié)首先對RLE壓縮算法進行介紹.其次依據(jù)benchmark中二進制配置文件特征選擇RLE壓縮算法參數(shù).然后對定長RLE壓縮算法結果進行分析,結合Huffman編碼思想實現(xiàn)變長RLE壓縮算法.最后,根據(jù)變長RLE壓縮結果中“0”“1”分布規(guī)律,采用掩碼壓縮思想實行2次壓縮,實現(xiàn)掩碼變長RLE壓縮算法.
RLE壓縮算法是一種簡單高效的無損壓縮算法,該算法將壓縮信息視為字符串序列,核心思想是將字符串序列中連續(xù)相同字符統(tǒng)計表示,實現(xiàn)文本壓縮目標.對于連續(xù)相同字符采用字符加計數(shù)方式進行表示,對于不重復字符,計數(shù)為1.RLE壓縮結果可采用元組(C,L)表示,C為被壓縮字符,L為計數(shù).例如字符串“AAAAABBCCCCD”經(jīng)過壓縮后,結果為“A5B2C4D1”.本文將RLE壓縮算法移植到對二進制配置文件的壓縮,字符串序列轉換為位序列,壓縮單位由字節(jié)轉換為位.不同于字符串壓縮,二進制文件壓縮結果中C與L使用二進制表示.如位序列“11111100011111000000”經(jīng)過壓縮后的中間結果為“16031506”,然后將計數(shù)L采用二進制表示,結果為“111001111010110.序列壓縮前長度為20 b,壓縮后位長度為15 b,實現(xiàn)壓縮的目的.在解壓過程中,由于C與L均為二進制表示,無明確分界點,解壓失敗.解決思路有2種:1)采用壓縮標記位的定長壓縮表示格式,如圖6(a)所示;2)采用無壓縮標記位的定長壓縮表示格式,如圖6(b)所示.
Fig. 6 RLE binary compressed format圖6 RLE二進制壓縮表示格式
本文采用帶標記位的定長壓縮表示方法,減少未重復數(shù)據(jù)帶來的計數(shù)位長度代價,本文后續(xù)所指定長壓縮均為帶標記位的定長壓縮.采用定長壓縮方法得到的壓縮率的取值范圍:
(3)
其中,m∈+,n∈+.此時,壓縮率RRLE的取值范圍:
(4)
同樣,在最糟糕的情況下仍然會出現(xiàn)壓縮膨脹.
定長RLE壓縮算法中的壓縮元C長度m與計數(shù)L長度n可根據(jù)配置文件特征進行選擇,追求最小壓縮率.本節(jié)以Xilinx 系列FPGA配置文件為代表,對配置文件的分類和組成進行相關介紹,對benchmark中重復數(shù)據(jù)進行分析,采用理論結合實驗的方式來確定最優(yōu)m,n組合.
Xilinx FPGA應用程序開發(fā)工具(ISE和Vivado)可以按照需求不同生成5種格式配置文件,對應后綴名分別為:bit,rbt,bin,mcs,hex,不同配置文件對應不同配置環(huán)境.bit文件包含配置文件組成中的所有部分:冗余頭部信息、配置信息、CRC校驗信息和冗余尾部信息.冗余頭部信息主要包括當前工程名稱、芯片型號和編譯時間等信息,由于工程名長度不定,一般頭部信息長度約為72 B.配置信息為配置文件的主體部分,進行可重構計算單元、路由單元以及存儲單元的信息配置.校驗信息對配置信息進行校驗.冗余尾部信息由12個32 b的空操作組成,這部分不會被加載到FPGA中,目的是給予配置器充足的時間完成配置過程.本文以.bit格式配置文件為原始數(shù)據(jù)進行二進制配置文件壓縮研究.
圖8為Xilinx Kintex-7 XC7K325T 芯片部分二進制配置文件片段[2](16進制表示、Xilinx官網(wǎng)提供).FPGA配置以幀為最小配置單位,每幀大小為32 b.從圖8中可以得出2個結論:1)配置幀幀內(nèi)存在大量的重復數(shù)據(jù);2)配置幀幀間也存在大量重復數(shù)據(jù).根據(jù)配置幀長度和幀內(nèi)重復的特征,本文擬給壓縮元長度m分別賦值為1,2,4,8,16,32.依據(jù)壓縮元連續(xù)出現(xiàn)的頻數(shù)計算獲取相應的計數(shù)L長度n值,從中選出1組理論壓縮率最低的(m,n)元組作為定長壓縮參數(shù).本文采用理論結合實驗的方法選取最優(yōu)參數(shù)組合,實驗數(shù)據(jù)為V5_DES56.bit.壓縮率RREL計算為
(5)
其中,Luncompress為未壓縮表示格式長度,Lcompress為壓縮表示格式長度.
Fig. 8 Kintex-7 XC7K325T binary configuration file圖8 Kintex-7 XC7K325T 二進制配置文件片段
當m=1時,不需要對配置文件做任何處理,直接統(tǒng)計壓縮元(0或1)在不同計數(shù)L下的重復頻數(shù),并計算對應配置數(shù)據(jù)占配置文件大小百分比.當壓縮元重復頻數(shù)大于計數(shù)L可表示范圍時,采用截斷方法處理.如當n=8時,可表示的最大數(shù)值為256,當統(tǒng)計頻數(shù)大于256時,采取截斷處理,重新壓縮.因為不會出現(xiàn)計數(shù)L=0的情況,所以本文采用(L-1)對應的二進制數(shù)表示計數(shù)L.如連續(xù)260個“1”被壓縮為(1,1,11111111)(1,1,00101011).當m=1,n=8時,統(tǒng)計結果如表2所示.
當m=1,n=8,壓縮標記為“0”時,壓縮格式長度為2;壓縮標記為“1”時,壓縮格式長度為10.此時理論壓縮率:
(6)
其中,Pi為L=i對應配置數(shù)據(jù)大小占據(jù)配置文件百分比.將表中相關數(shù)據(jù)帶入式(6),計算可得RRLE值為109.42%,即采m=1,n=8元組時,理論壓縮率為109.42%,出現(xiàn)壓縮膨脹現(xiàn)象.究其原因,主要是因為當n=8時,壓縮格式長度為10,若原始數(shù)據(jù)連續(xù)長度小于10的重復數(shù)據(jù)均會產(chǎn)生壓縮膨脹現(xiàn)象,而此部分所占比例為38.41%,膨脹部分占據(jù)比例過高.后續(xù)需要將n值減小,降低膨脹部分所占比例.當n值分別取3,4,5,6,7時對應的壓縮率如表3所示.
Table 2 Statistics of Corresponding Data (m=1,n=8)表2 m=1,n=8對應數(shù)據(jù)統(tǒng)計表
Table 3 Different n Value Compression Rate (m=1)表3 m=1對應不同n值壓縮率表
從上述計算結果可知,當壓縮元C長度m=1時,計數(shù)L長度n=5時壓縮率最低,壓縮效果最好.當n=1或者n=2時,附加壓縮標記位,在任何情況下都是壓縮膨脹.同樣,隨著n值越來越大,壓縮格式長度n+2值也會增大,計數(shù)L 同理,計算當m分別為2,4,8,16,32,n分別為1~10時的壓縮率并進行匯總,當m分別為2,4,8,16,32時的最佳壓縮率如表4所示: Table 4 The Optimal (m,n) Compression Ratio Statistics表4 最優(yōu)(m,n)元組壓縮率統(tǒng)計表 由上述理論計算結果可知,當m=4,n=4時定長RLE壓縮算法取得最優(yōu)壓縮效果.本文后續(xù)將m=4作為通用二進制配置文件的最佳壓縮元長度向變長RLE壓縮算法進行改善,進一步降低壓縮率. 定長RLE壓縮格式后n位為計數(shù)長度,可以表示計數(shù)范圍為[1,2n].當采用定長壓縮方案m=4,n=4時,計數(shù)L=2的二進制表示為“0001”,其中前3個“0”起到占位作用.當計數(shù)L=3或4時,前2個“0”起到占位作用,他們的存在與否并不會對計數(shù)值產(chǎn)生影響,只是起到輔助解壓的作用.根據(jù)統(tǒng)計結果可以預測,當計數(shù)長度為n,計數(shù)L∈[2,2n-1]占據(jù)配置文件比例遠高于L∈[2n-1+1,2n],并且對于同一個m值,隨著n值增大,前半部分占據(jù)的比例會越來越高.L∈[2,2n-1]時,計數(shù)格式都會存在占位“0”,若可以將占位“0”刪除掉,會對壓縮效果產(chǎn)生明顯改善,降低壓縮率. 定長RLE壓縮格式的優(yōu)勢在于解壓縮簡單,只需按照相應標記位長度、壓縮元長度m和計數(shù)長度n進行解釋實現(xiàn)解壓過程.例如,當m=4,n=4時的壓縮數(shù)據(jù)如圖9(a)所示,按照定長RLE壓縮算法,對應的解壓數(shù)據(jù)如圖9(b)所示.如果將壓縮數(shù)據(jù)中的占位“0”刪除,則壓縮數(shù)據(jù)如圖9(c)所示.解壓時,前1個壓縮格式中的計數(shù)長度不能確定,前1個壓縮格式中的計數(shù)部分與后1個壓縮格式中的壓縮標記位甚至壓縮元重合(圖9(c)陰影部分),無法正確解壓.如果可以動態(tài)識別計數(shù)部分長度,如圖9(d)所示,就可在不增加附加信息的前提下正確解壓.本文采用Huffmam編碼方式對計數(shù)部分進行編碼,解決動態(tài)識別計數(shù)部分長度問題. Fig. 9 Compression and decompression圖9 RLE壓縮與解壓縮示意圖 Huffman編碼是David Huffman于1952年提出的一種變長信息編碼方式.Huffman編碼首先統(tǒng)計編碼字符在文件中出現(xiàn)的頻率.依據(jù)統(tǒng)計信息構建一棵二叉樹,該二叉樹又被稱為Huffman樹.通過Huffman樹為每個字符提供唯一的二進制編碼.將編碼文件中的每個字符用對應的二進制編碼替換,得到編碼文件.Huffman編碼核心思想是將出現(xiàn)頻率高的字符用較短的二進制表示,出現(xiàn)頻率低的字符用較長的二進制表示,保證編碼文件最小.Huffman編碼又被稱為最優(yōu)前綴編碼,因為Huffman樹確保每個字符對應的二進制編碼都不會是其他二進制編碼的前綴.本文利用Huffman編碼的帶權路徑最短與前綴性解決RLE壓縮格式中計數(shù)部分長度動態(tài)識別問題,提出變長Huffman Run Length Encoding (H-RLE)壓縮算法.通過m=4,n=4的統(tǒng)計結果介紹H-RLE壓縮思想.當m=4,n=4時,計數(shù)L不同長度出現(xiàn)次數(shù)的概率Q如表5所示: Table 5 Frequency of Different L表5 不同L對應頻率統(tǒng)計表 然后依據(jù)Huffman編碼算法對2~16分別編碼,結果如表6所示: Table 6 Huffman of Different L表6 不同L對應Huffman編碼 然后根據(jù)式(7)計算理論壓縮率: (7) 其中,|C(i)|表示計數(shù)重復次數(shù)i對應的編碼位數(shù).將相關數(shù)據(jù)帶入計算式得出RRLE為58.76%,計算結果表明,采用Huffman編碼表示計數(shù)部分可以降低壓縮率. H-RLE跳出了定長RLE壓縮算法計數(shù)部分n位限制,消除了占位“0”,降低了壓縮率.上述示例中重復數(shù)據(jù)出現(xiàn)頻數(shù)被限制在了L∈[1,16](n=4).依據(jù)m=4,n=8的統(tǒng)計結果可知,L=256出現(xiàn)的頻數(shù)為1586,占據(jù)整個配置文件的19.4%.按照上述壓縮表示方式,連續(xù)256個壓縮元被劃分為16(256/16)個L=16的8 b長度壓縮格式,壓縮后的長度為128 b,該部分壓縮率為12.5%.如果可以將L=256進行Huffman編碼(假設256對應的Huffman編碼長度為20 b),那么該部分的壓縮率就可達到2.44%.本文綜合考慮Huffman編碼長度與配置文件統(tǒng)計結果選擇最大L值.當L=512時出現(xiàn)的頻率為973,占據(jù)整個配置文件的23.8%;當L=1024時出現(xiàn)的頻率為458,占據(jù)整個配置文件的22.4%;當L=2048時出現(xiàn)的頻率為212,占據(jù)整個配置文件的20.74%;當L=4096時出現(xiàn)的頻率為78,占據(jù)整個配置文件的15.26%.假設當L=2048時對應的Huffman編碼長度為25 b,該部分的壓縮率可達到0.37%;當L=4096時對應的編碼長度為26 b,該部分對應的壓縮率為0.19%,相對于L=2048,文件整體壓縮率降約低了0.18%,改善不大.本文選擇最大L=2048,并根據(jù)此數(shù)據(jù)對測試文件進行重新統(tǒng)計,獲取較優(yōu)Huffman編碼.表7給出L為部分數(shù)值時對應頻率: Table 7 Frequency of Extended L表7 擴展的L值對應頻率統(tǒng)計表 對應的Huffman編碼如表8所示: Table 8 Huffman Coding of Extended L表8 擴展的L值對應Huffman編碼 當計數(shù)L>2 048時,按照截斷方法處理.從表8可知,當L>16時并沒有采用等差增長的方式進行統(tǒng)計,而是采用了公比為2的等比增長方式統(tǒng)計.假如按照等差增長方式,編碼位數(shù)增長較快,當L=2 048時,需要上千位編碼表示.采用公比為2的等比增長方式有2個優(yōu)勢:1)隨著L值的等比增長,編碼位數(shù)增加緩慢,減少編碼長度,降低壓縮率;2)當統(tǒng)計數(shù)據(jù)不屬于編碼數(shù)據(jù)中的某一數(shù)值時,可采用較少次數(shù)的截斷方法表示該數(shù)據(jù)(類似于二分查找思想).例如當統(tǒng)計次數(shù)為448時,可以采用256-128-64這種2次截斷3個壓縮格式的方式表示,表示長度為48 b.如果不存在L=64 b和L=128 b對應的Huffman編碼,需要采用256-32-32-32-32-32-32這種6次截斷7個壓縮格式表示,表示長度為100 b.L∈[2,16]采用等差增長是因為該部分所占頻率占據(jù)了[2,2 048]中的99.3%,若采用截斷方式,會增加表示長度.本文根據(jù)統(tǒng)計結果以及編碼方式,將L≤2 048中未編碼的值采用截斷處理,然后計算理論壓縮率: (8) 其中,S為經(jīng)過編碼處理的L值集合.將相應的數(shù)據(jù)帶入式(8)可得其壓縮率為53.43%. 按照H-RLE壓縮算法對測試文件進行壓縮,理論計算得到的最小壓縮率為53.43%.其中包含未壓縮部分的40.93%與壓縮部分的12.50%.從式(8)可以得出2點結論:1)原始文件中未壓縮部分P1占據(jù)32.74%,這部分導致壓縮率RREL>40.93%;2)其余67.26%部分被壓縮至12.50%,表明配置文件中連續(xù)重復的“0”或者“1”較多,“0”,“1”分布并不均勻.由結論1可知,如果不對未壓縮部分進行處理,壓縮率將不會產(chǎn)生明顯改善.本文后續(xù)對H-RLE壓縮結果進行分析,依據(jù)分析結果采用掩碼壓縮思想,提出Mask Huffman Run Length Encoding (MH-RLE)壓縮算法進行2次壓縮,進一步降低壓縮率,提升壓縮效果. 掩碼壓縮最初提出主要是為了優(yōu)化靜態(tài)字典壓縮算法,采用掩碼的方法,提高字典的覆蓋范圍.在靜態(tài)字典壓縮算法中,需要將原始數(shù)據(jù)與字典條目進行匹配,若匹配成功,用該條目在字典中的位置表示該數(shù)據(jù).在二進制靜態(tài)字典壓縮過程中會存在許多數(shù)據(jù)與字典中數(shù)據(jù)僅相差n位,這樣的數(shù)據(jù)不能被壓縮.將這些數(shù)據(jù)與字典中的某1條目進行異或操作,可以得出n個差異位置.由于異或操作具有可逆性,解壓時只需將對應位置的“0”修改為“1”,然后與字典數(shù)據(jù)進行異或運算.例如假設字典條目為“01000100”,原始數(shù)據(jù)為“01000000”,異或結果為“00000100”,即數(shù)據(jù)不同位為第5位.解壓時只需將“00000000”中第5位修改為1,然后字典條目“01000100”進行異或運算,得出結果為原始數(shù)據(jù)“01000000”. 本文根據(jù)原始文件“0”,“1”分布不均勻的特征,對壓縮后的文件進行統(tǒng)計分析,得出“0”占據(jù)變長RLE壓縮后文件的21.14%,“1”占據(jù) 78.86%.根據(jù)“0”,“1”分別所占比例,本文以5 b為單位長度,以1 b為掩碼長度進行掩碼壓縮,壓縮格式如圖10所示: Fig. 10 Mask format圖10 掩碼格式 掩碼標識為“0”表示5 b原始數(shù)據(jù)未被處理,即5 b原始數(shù)據(jù)與“00000”進行異或運算,得出結果中含有“1”的數(shù)量count≥2.掩碼標識為“1”表示異或運算結果中含有“1”數(shù)量為0或1.3 b數(shù)據(jù)表示“1”出現(xiàn)位置,即“001”至“101”表示“1”從左至右出現(xiàn)的位置.本文用“000”表示5 b原始數(shù)據(jù)為“00000”,用“111”表示5 b原始數(shù)據(jù)為“11111”.由于配置文件是以配置幀為單位進行配置,而配置幀的大小為32 b,非5的整數(shù)倍,本文對于剩余位數(shù)采取掩碼為“0”的非壓縮處理并且不采用補位處理,保證后續(xù)配置過程的正確性. 當掩碼格式確定后,本文對H-RLE壓縮后的結果進行重新處理,實現(xiàn)MH-RLE壓縮算法:1)對每5 b數(shù)據(jù)與“00000”進行異或運算;2)統(tǒng)計運算結果中“1”的數(shù)量count,當count≥2,輸出0,count≥1時輸出為1;3)統(tǒng)計輸出結果中0和1所占百分比.根據(jù)處理結果可知,0所占百分比為27.21%,1所占百分比為 72.79%.然后計算理論壓縮率: (9) 其中,RREL_MASK表示MH-RLE壓縮率.將上述統(tǒng)計結果以及RREL=53.43%帶入式(9),計算理論壓縮率為48.56%. 可重構系統(tǒng)配置文件壓縮過程在集成開發(fā)環(huán)境中通過軟件壓縮算法實現(xiàn),壓縮時間代價對動態(tài)可重構系統(tǒng)配置性能沒有影響.本節(jié)不考慮壓縮時間,僅從壓縮率角度評價本文提出的MH-RLE壓縮算法性能.本節(jié)首先對測試數(shù)據(jù)集中的二進制配置文件進行簡單介紹,然后通過本文提出的壓縮算法對所有測試文件進行壓縮,最后將壓縮結果與多種優(yōu)秀的壓縮算法的壓縮結果進行對比,評價本文壓縮算法的優(yōu)劣. 本次實驗測試數(shù)據(jù)集來源于Department of Computer Science 12[27].為了保證壓縮算法對不同應用程序的有效性,測試集包含了3種FPGA應用領域程序模塊,其中包括加密模塊DES和RC5、信號處理模塊FFT與FIR、網(wǎng)絡通信模塊Net(network router)與Xbar (crossbar).上述6種應用程序占據(jù)LUT資源90%以上.測試集增加了SoC模塊配置文件,占據(jù)LUT資源70%左右,確保在不同資源利用率下的壓縮算法性能.為了體現(xiàn)壓縮算法對各種FPGA芯片對應配置文件壓縮效果,測試數(shù)據(jù)分別由2個生產(chǎn)商的4個系列FPGA芯片組成,分別為:Altera Cyclone -Ⅱ,Xilinx Spartan-3,Xilinx Virtex -Ⅱ,Xilinx Virtex-V.表9~12介紹各種應用模塊在不同F(xiàn)PGA芯片上對應可重構資源利用比例信息. Table 9 Resources Using Rate of 7 Applications in Altera Cyclone -Ⅱ Table 10 Resources Using Rate of 7 Applications in Xilinx Spartan-3 Table 11 Resources Using Rate of 7 Applications in Xilinx Virtex -Ⅱ Table 12 Resources Using Rate of 7 Applications in Xilinx Virtex-V 圖11為9種壓縮算法分別在4個系列FPGA芯片測試環(huán)境下的壓縮率比較圖.9種壓縮算法分別為T-RLE,T-RLE*,F-RLE,LZSS8,LZSS16,HUFF8,EPC16,GZIP和本文提出的MH-RLE.其中HUFF8為Huffman壓縮算法的實現(xiàn),之中的8表示以8b為單位建立Huffman樹.GZIP為Linux環(huán)境下常用壓縮程序,實驗中使用的GZIP版本為1.3.5.為了忽略各種壓縮算法對個別配置文件具有較低壓縮率,實驗采用均值(AV)比較各個壓縮算法的性能(圖11中每幅圖的最右邊類別).從圖11中可以看出,各種壓縮算法對不同配置文件的壓縮性能表現(xiàn)各不一樣,不能依據(jù)某1組實驗結果確定某個壓縮算法的性能,本節(jié)主要參考AV值來分析MH-RLE壓縮算法性能.MH-RLE在Altera Cyclone -Ⅱ,Xilinx Spartan-3,Virtex -Ⅱ,Virtex-V FPGA芯片的平均壓縮率分別為:54.36%,57.32%,41.98%,45.61%. 首先,從圖11可得,MH-RLE壓縮率高于HUFF8與GZIP.在二進制配置文件壓縮算法中,Huffman算法首先將配置信息全部遍歷,然后根據(jù)指定壓縮元長度統(tǒng)計壓縮元頻數(shù),建立相應的靜態(tài)Huffman樹,最后依據(jù)Huffman樹進行壓縮,也可以在第1次變量過程中動態(tài)建立Huffman樹.Huffman壓縮算法具有較優(yōu)的壓縮率,但是解壓硬件資源消耗過大.配置文件解壓過程需要由硬件完成,Huffman解壓過程需要將Huffman樹存入硬件資源,需要耗費大量的硬件資源,Huffman解壓所需硬件資源為其他壓縮算法對應解壓資源的40倍左右.GZIP核心思想是通過LZSS壓縮算法的變形算法對配置文件進行首次壓縮,然后將壓縮結果采用Huffman壓縮算法進行2次壓縮,所以GZIP壓縮算法雖然具有較優(yōu)的壓縮率,但是解壓縮硬件代價比Huffman壓縮代價更高,在可重構系統(tǒng)中一般不會采用GZIP壓縮算法.MH-RLE壓縮算法雖然也采用了Huffman壓縮思想,但是Huffman樹對應的葉子節(jié)點僅有22個,并且靜態(tài)建立,即該Huffman樹對所有配置文件壓縮與解壓均有效,不會因為配置文件不同而重新修改解壓算法的實現(xiàn). Fig. 11 Compression ratio comparison圖11 壓縮率比較圖 其次,相對于Xilinx系列FPGA對應配置文件,在Altera系列FPGA對應配置文件中,MH-RLE壓縮算法性能明顯下降.圖11(a)中MH-RLE壓縮算法壓縮率比T-RLE*,LZSS8,LZSS16,EPC16壓縮算法壓縮率低,比T-RLE和F-RLE壓縮算法壓縮率高.在圖11(b)~(d)中,MH-RLE壓縮率僅高于HUFF8和GZIP壓縮算法,主要原因是MH-RLE壓縮算法中的所有參數(shù)均來源于對Xilinx系列FPGA配置文件數(shù)據(jù)的統(tǒng)計,而Altera系列對應的配置文件描述方式(非公開)與Xilinx系列有所不同,所以MH-RLE壓縮算法針對Altera系列FPGA配置文件的壓縮性能不如Xilinx系列FPGA配置文件. 最后,本節(jié)通過具體數(shù)據(jù)表現(xiàn)MH-RLE壓縮算法相對于其他8種壓縮算法壓縮率降低比例,數(shù)據(jù)計算方式為RMH-RLE-Rother,計算結果如表13所示,其中,“-”表示壓縮率降低. Table 13 Comparison of Compression Ratio Optimization表13 MH-RLE壓縮率優(yōu)化比較表 % 根據(jù)本文提出的FPGA配置文件壓縮算法,進行相應的硬件解壓縮電路設計,由于配置文件是以1幀二進制數(shù)據(jù)(32 b)的形式進行數(shù)據(jù)存儲和傳輸,因此,結合MH-RLE壓縮算法的特點,將解壓電路設計為外部、內(nèi)部2個部分,其中解壓縮外部電路如圖12所示,由隊列緩存(queue buffer)、輸入緩存(input buffer)、解壓縮模塊(MH-RLE decoder)、輸出緩存(output buffer)組成,其中隊列緩存按配置幀緩存被壓縮后的配置文件數(shù)據(jù),輸入緩存以配置幀為單位依次從隊列緩存中抽取數(shù)據(jù),解壓縮模塊實現(xiàn)MH-RLE解壓縮算法,輸出緩存放置原始配置文件數(shù)據(jù),等待后續(xù)電路讀取. 圖13為解壓縮內(nèi)部電路實現(xiàn),開發(fā)工具為XILINX ISE Design Suite 13.4,開發(fā)語言為VHDL,以解壓縮模塊的頂層電路設計圖形式進行展示.其中InputBuffer用于接收1幀(32b)二進制數(shù)據(jù),Judgment判斷是否進行了掩碼壓縮和Huffman壓縮,根據(jù)判斷結果通過使能信號(EN)調(diào)用Mask或Huffman進行相應的解壓縮實現(xiàn),由于本文的壓縮算法為2次壓縮,因此需要Mbuffer對中間數(shù)據(jù)進行暫存,OutputBuffer進行解壓后的數(shù)據(jù)存儲. Fig. 12 External decode circuit圖12 解壓縮外部電路 Fig. 13 Internal decode circuit圖13 解壓縮內(nèi)部電路 將上述解壓縮電路與文獻[28-29]中的解壓縮電路進行硬件資源使用量對比,文獻[28]采用了掩碼壓縮與Huffman編碼相結合的方式實現(xiàn)壓縮算法,其解壓電路所需的Slice數(shù)量為250個,針對Huffman編碼的解壓電路需要將整個Huffman樹存入硬件,從而耗費大量的硬件資源,本文提出的MH-RLE壓縮算法對Huffman壓縮進行了改進,解壓電路所需Slice只占到其解壓電路所需Slice的1/3(84個).而與傳統(tǒng)的基于LZSS壓縮算法的解壓縮電路實現(xiàn)[29]占用45個Slice相比,MH-RLE解壓電路所需硬件略高,但是為了提高壓縮比,減少數(shù)據(jù)傳輸時間,在現(xiàn)有的硬件資源相對充足的前提下,以犧牲少許資源為代價來得到更快的運行速率是值得的. 本文以RLE壓縮算法為基礎,提出MH-RLE配置文件壓縮算法.首先,針對優(yōu)化定長RLE壓縮算法的性能,本文采用統(tǒng)計方式對測試文件進行統(tǒng)計,以理論計算的方式選擇出最優(yōu)的壓縮元長度m與計數(shù)長度n.然后,針對定長壓縮算法計數(shù)部分“0”占位的缺憾,采用Huffman編碼方式對計數(shù)表示部分進行編碼,實現(xiàn)變長H-RLE壓縮算法.本文依據(jù)壓縮元連續(xù)分布信息,選取22個編碼單位并進行Huffman編碼,該方式的優(yōu)勢在提高壓縮率的前提下,減少解壓縮硬件消耗代價.對H-RLE壓縮后的數(shù)據(jù)進行分析,采用掩碼壓縮思想進行2次壓縮,實現(xiàn)了最終的配置文件壓縮算法MH-RLE.仿真實驗表明,MH-RLE壓縮算法相對于大多數(shù)配置文件壓縮算法均有較好的壓縮性能,并且更適合于Xilinx系列FPGA配置文件壓縮.MH-RLE的平均壓縮率為49.82%,相較于其他6種壓縮算法均有不同程度的提升,最多可提升12.4%.后續(xù)研究可以針對Altera系列FPGA重新設計MH-RLE壓縮算法參數(shù),使得該算法可以對Altera系列FPGA配置文集也有較低的壓縮效率. [1]Xilinx Inc. Expanding the all programmable SoC portfolio[EB/OL]. [2016-05-21]. http://www.xilinx.com/products/silicon-devices/soc/zynq-7000/silicon-devices/index.htm [2]Xilinx Inc. 7 series FPGAs configurable logic block user guide,version1.8: Userguide[EB/OL].[2016-05-21]. http://china.xilinx.com/support/documentation/user_guides/ug474_7Series_CLB.pdf [3]Altera Corporation. Configuration, design security, and remote system Upgrades in ArriaII devices[EB/OL]. 2012-07 [2016-05-21]. https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/arria-ii-gx/aiigx_51009.pdf [4]Vliegen J, Mentcns N, Verbauwhede I. A single-chip solution for the secure remote configuration of FPGAs using bitstream compression[C] //Proc of the 8th IEEE ReConFig. Piscataway, NJ: IEEE, 2013 [5]Tefan R. Bitstream compression techniques for Virtex 4 FPGAs[C] //Proc of the 18th IEEE FPL. Piscataway, NJ: IEEE, 2008: 323-328 [6]Tajammul M A, Jafri S M A H, Hemani A, et al. Private configuration environments (PCE) for efficient reconfi-guration, in CGRAs[C] //Proc of the 24th IEEE ASAP. Piscataway, NJ: IEEE, 2013: 227-236 [7]Inoue H, Yamada J, Yoneda H, et al. Test compression for dynamically reconfigurable processors[J]. ACM Trans on Reconfigurable Technology and Systems, 2011, 4(4): 205-210 [8]Jia Rui, Wang Fei, Chen Rui, et al. JTAG-based bitstream compression for FPGA configuration[C] //Proc of the 11th IEEE Int Conf on Solid-State and Integrated Circuit Technology. Piscataway, NJ: IEEE, 2012 [9]Wu Weiguo, Yang Zhihua, Yu Guoliang. A reconfigurable configuration compression algorithm based on contextually adaptive arithmetic coding[J]. High Technology Letters, 2011, 21(5): 443-450 (in Chinese) (伍衛(wèi)國, 楊志華, 余國良. 基于上下文自適應算術編碼的可重構配置信息壓縮算法[J]. 高技術通信, 2011, 21(5): 443-450) [10]Duhem F, Muller F, Lorenzini P. Reconfiguration time overhead on field programmable gate arrays: Reduction and cost model[J]. LET Computers & Digital Techniques, 2012, 6(2): 105-113 [11]Abdelhadi A, Lemieux G G F. Configuration bitstream reduction for SRAM-based FPGAs by enumerating LUT input permutations[C] //Proc of the 6th IEEE ReConFig. Piscataway, NJ: IEEE, 2011: 20-26 [12]Jafri S M A H, Hemani A, Paul K, et al. Compression based efficient and agile configuration mechanism for coarse grained reconfigurable architectures[C] //Proc of the 2nd IEEE IPDPSW. Piscataway, NJ: IEEE, 2011: 290-293 [13]Qin Xiaoke, Muthry C, Mishra P. Decoding-aware compression of FPGA bitstreams[J]. IEEE Trans on Very Large Scale Integration (VLSI) Systems, 2011, 19(3): 411-419 [14]Nabina A, Nuńez-Yańez J L. Dynamic reconfiguration optimisation with streaming data decompression[C] //Proc of the 20th IEEE FPL. Piscataway, NJ: IEEE, 2010: 602-607 [15]Jordan M C, Vaidyanathan R. MU-decoders: A class of fast and efficient configurable decoders[C] //Proc of the 1st IEEE Int Symp on Parallel & Distributed. Processing. Piscataway, NJ: IEEE, 2010 [16]Liu Bo, Zhu Wanyu, Liu Yang, et al. A configuration compression approach for coarse-grain reconfigurable architecture for radar signal processing[C] //Proc of the 6th IEEE Int Conf on Cyber-Enabled Distributed Computing and Knowledge Discovery. Piscataway, NJ: IEEE, 2014: 448-453 [17]Sellers B, Heiner J, Wirthlin M, et al. Bitstream compression through frame removal and partial reconfiguration[C] //Proc of the 19th Int Conf on Field Programmable Logic and Applications. Piscataway, NJ: IEEE, 2009: 476-480 [18]Gu Haiyun, Chen Shurong. Partial reconfiguration bitstream compression for Virtex FPGAs[C] //Proc of the 1st IEEE Image and Signal Processing. Piscataway, NJ: IEEE, 2008: 183-185 [19]Beckhoff C, Koch D, Torresen J. Portable module relocation and bitstream compression for Xilinx FPGAs[C] //Proc of the 24th IEEE Int Conf on Field Programmable Logic and Applications. Piscataway, NJ: IEEE, 2014 [20]Jing Xie, Wang Yabin, Chen Liguang, et al. Fast configuration architecture of FPGA suitable for bitstream compression[C] //Proc of the 8th IEEE ASICON. Piscataway, NJ: IEEE, 2009: 126-130 [21]Xu Wenbo, Tian Geng, Xilinx FPGA: Development and Application[M]. 2nd ed. Beijing: Tsinghua University Press, 2012: 85-102 (in Chinese) (徐文波, 田耘. Xilinx FPGA開發(fā)實用教程[M]. 2版. 北京: 清華大學出版社, 2012: 85-102) [22]Delorme J, Nafkha A, Leray P, et al. New OPBHWICAP interface for realtime Partial reconfiguration of FPGA[C] //Proc of the 4th IEEE ReConFig. Piscataway, NJ: IEEE, 2009: 386-391 [23]Xilinx Inc. System ACE configuration solution for Xilinx FPGAs,version3.0.1[EB/OL]. (2007-12-17)[2016-05-21]. http://china.xilinx.com/support/documentation/white_papers/wp151.pdf [24]Hemnath P, Prabhu V. Compression of fpga bitstreams using improved rle algorithm[C] //Proc of the 2nd IEEE Int Conf on Information Communication and Embedded Systems. Piscataway, NJ: IEEE, 2013: 834-839 [25]Xilinx Inc.Vivado design suite user guide embeded processor hardware design[EB/OL]. (2007-12-17)[2016-05-21]. http://china.xilinx.com/support/documentation/sw_manuals/xilinx2015_4/ug898-vivado-embedded-design.pdf [26]Xilinx Inc. Xilinx FPGA configuration details.[EB/OL].[2016-05-21]. http://www.eefocus.com/sxl630828191/blog/12-12/290582_7f03c.html (in Chinese) (Xilinx. Xilinx FPGA配置細節(jié)詳解[EB/OL].[2016-05-21]. http://www.eefocus.com/sxl630828191/blog/12-12/290582_7f03c.html) [27]Department of Computer Science in University of Erlangen Nuremberg. Design methodology for embedded systems made upon small networks of hardware reconfigurable nodes and connections[EB/OL]. [2016-05-21]. http://www.reconets.de/bitstreamcompression/ [28]Seong S W, Mishra P. Bitmask-based code compression for embedded systems[J]. IEEE Trans on Computer-Aided Design of Integrated Circuits and Systems, 2008, 27(4): 673-685 [29]Koch D, Beckhoff C, Teich J. Bitstream decompression for high speed FPGA configuration from slow memories[C] //Proc of the 6th IEEE FPT. Piscataway, NJ: IEEE, 2008: 161-1682.3 H-RLE壓縮算法
2.4 MH-RLE壓縮算法
3 MH-RLE壓縮算法性能測試與評價
3.1 實驗數(shù)據(jù)
3.2 測試與評價
4 解壓電路介紹
5 結論與展望