摘 要:可重構(gòu)計算具有應(yīng)用靈活、性能高、功耗低、成本低等優(yōu)勢。動態(tài)重構(gòu)技術(shù)作為可重構(gòu)計算的配置方法,具有配置方法靈活、耗時短、任務(wù)實時響應(yīng)能力強(qiáng)等特點(diǎn)。文章首先提出了可重構(gòu)系統(tǒng)原型的設(shè)計思路,并著重分析了可重構(gòu)計算單元、存儲單元、可重構(gòu)管理單元等關(guān)鍵模塊的設(shè)計理念。然后分析了動態(tài)配置技術(shù)的實現(xiàn)原理,并且基于可編程邏輯陣列,搭建了“嵌入式處理器+總線+可重構(gòu)計算單元”的硬件系統(tǒng),并實現(xiàn)了兩種圖像處理IP核的動態(tài)配置。
關(guān)鍵詞:可重構(gòu)計算;系統(tǒng)原型;動態(tài)配置技術(shù)
引言
可重構(gòu)系統(tǒng)一般由主處理器耦合一組可重構(gòu)的硬件部件,處理器負(fù)責(zé)任務(wù)的調(diào)度,而可重構(gòu)的硬件部件負(fù)責(zé)執(zhí)行算法[1]??芍貥?gòu)架構(gòu)的研究主要集中在以下幾個方面:不同粗細(xì)粒度的架構(gòu)研究、處理單元結(jié)構(gòu)研究、處理單元的互聯(lián)方式研究、新型存儲結(jié)構(gòu)研究等??芍貥?gòu)系統(tǒng)的重構(gòu)方法主要包含兩大類:靜態(tài)重構(gòu)技術(shù)、動態(tài)重構(gòu)技術(shù)。靜態(tài)重構(gòu)需要整個系統(tǒng)復(fù)位,往往需要斷電重啟;動態(tài)重構(gòu)技術(shù)是在系統(tǒng)不斷電的情況下,可以完成對指定計算資源、邏輯資源的模塊級或電路級重構(gòu),具有功能實時切換、資源可復(fù)用等優(yōu)勢。
動態(tài)重構(gòu)技術(shù)作為一種計算系統(tǒng)的新型配置設(shè)計思路,從傳統(tǒng)的追求計算資源“大而全”,向追求資源的利用率轉(zhuǎn)變。與傳統(tǒng)的靜態(tài)配置或完全配置方法相比,動態(tài)重構(gòu)技術(shù)無需對所有計算資源重構(gòu),可以有選擇性的進(jìn)行重構(gòu)資源加載,一方面,能夠保證系統(tǒng)在其他單元正常工作的同時,根據(jù)待處理任務(wù)需求及數(shù)據(jù)特點(diǎn)完成自適應(yīng)配置,保證了對邏輯資源的時分復(fù)用;另一方面,能夠大大縮短功能切換單元的配置時間,保證任務(wù)的無縫對接及實時處理。
文章組織結(jié)構(gòu)如下:首先提出了可重構(gòu)系統(tǒng)原型的設(shè)計思路,從可重構(gòu)計算單元、存儲單元、可重構(gòu)控制單元等多個方面做了細(xì)化闡述;然后分析了動態(tài)配置技術(shù)的實現(xiàn)原理,并基于Xilinx開發(fā)平臺,搭建了“嵌入式處理器+可重構(gòu)計算單元”的驗證系統(tǒng),實現(xiàn)了粗化、細(xì)化兩種邊緣提取IP核的動態(tài)配置;最后對試驗結(jié)果進(jìn)行評估。
1 可重構(gòu)計算系統(tǒng)架構(gòu)設(shè)計方案
可重構(gòu)計算原型系統(tǒng)的體系架構(gòu)采用RISC架構(gòu)通用處理器(CPU)、可重構(gòu)控制單元、可重構(gòu)計算陣列、可重構(gòu)I/O接口和存儲系統(tǒng)等部分組成。CPU與可重構(gòu)計算陣列之間為并行處理關(guān)系。從系統(tǒng)設(shè)計復(fù)雜度和靈活度考慮,兩者采用總線結(jié)構(gòu)耦合。因此,在系統(tǒng)平臺架構(gòu)中,通用處理器、計算單元和接口單元之間采用總線連接方式。其系統(tǒng)架構(gòu)見圖1。
系統(tǒng)變換形態(tài)流程如下:系統(tǒng)進(jìn)行計算功能變換時,通用處理器向可重構(gòu)控制單元發(fā)送重構(gòu)命令,可重構(gòu)控制單元管理、調(diào)度硬件資源,并上報系統(tǒng)工作狀態(tài);當(dāng)系統(tǒng)資源準(zhǔn)備就緒后,通用處理器控制可重構(gòu)硬件讀取硬件配置數(shù)據(jù)并加載到器件中,以變換可重構(gòu)計算單元或接口單元的形態(tài),統(tǒng)一變換系統(tǒng)中全局存儲空間的劃分、管理及訪問控制,各計算模塊共享內(nèi)存區(qū)的映射關(guān)系圖;同時,根據(jù)新的計算形態(tài)加載相應(yīng)的軟件和數(shù)據(jù),最終完成整個系統(tǒng)形態(tài)變換流程。功能切換時,只對可重構(gòu)硬件的一部分進(jìn)行重新配置,其他部分可繼續(xù)執(zhí)行任務(wù)。動態(tài)部分重構(gòu)可以減少配置數(shù)據(jù),加快了計算形態(tài)變換速度,提高了系統(tǒng)的適應(yīng)性和靈活性。
通用處理器運(yùn)行操作系統(tǒng),負(fù)責(zé)系統(tǒng)的控制、計算形態(tài)管理、計算資源管理和任務(wù)調(diào)度;處理那些控制比較復(fù)雜、不便映射到硬件上,且計算量較少的計算任務(wù),如變長循環(huán)、分支控制、存儲器讀寫等??芍貥?gòu)硬件則用于處理計算量大、并行度高、任務(wù)相關(guān)度低的部分,執(zhí)行程序中擁有規(guī)則的數(shù)據(jù)訪問模式,控制簡單的那部分“計算密集型”代碼,主要由可重構(gòu)控制單元、可重構(gòu)計算單元、可重構(gòu)I/O接口及片上高速總線組成。其中計算單元及I/O接口可根據(jù)應(yīng)用需求重構(gòu)為不同的計算形態(tài)。
1.1 可重構(gòu)系統(tǒng)計算單元模型設(shè)計
可重構(gòu)系統(tǒng)計算單元的基本思想要求將計算和存儲兩部分進(jìn)行解耦合,因此采用了數(shù)據(jù)和指令存儲物理分離的哈佛結(jié)構(gòu),將數(shù)據(jù)訪問模塊、指令組織與調(diào)度模塊和指令執(zhí)行模塊分離。同時,根據(jù)流處理模型中生產(chǎn)者消費(fèi)者局部性的特點(diǎn),將數(shù)據(jù)訪問模塊劃分成軟件可管理的多個存儲層次,各自保持獨(dú)立運(yùn)行。可重構(gòu)系統(tǒng)計算單元主要有三個部分組成:控制單元、存儲單元、可重構(gòu)處理單元陣列。
控制單元。執(zhí)行算法時,控制單元對可重構(gòu)系統(tǒng)計算單元進(jìn)行總體控制,協(xié)調(diào)可重構(gòu)處理單元陣列、配置存儲器、本地存儲器、數(shù)據(jù)分配單元、數(shù)據(jù)合并單元的運(yùn)行,根據(jù)系統(tǒng)運(yùn)行狀態(tài)和各個單元內(nèi)部控制信號的反饋信息,改變各個單元的狀態(tài),保證系統(tǒng)正確運(yùn)行。
存儲單元。存儲單元分為三部分:數(shù)據(jù)存儲,寄存器堆以及配置存儲。數(shù)據(jù)存儲包括本地存儲器,數(shù)據(jù)分配單元以及數(shù)據(jù)合并單元。本地存儲器用于存儲可重構(gòu)處理單元陣列計算需要的輸入數(shù)據(jù)和輸出數(shù)據(jù);數(shù)據(jù)分配單元用于從本地存儲器或寄存器堆中讀取數(shù)據(jù);數(shù)據(jù)合并單元用于向本地存儲器或寄存器堆寫入計算單元的輸出數(shù)據(jù)。寄存器堆用于存儲中間數(shù)據(jù),并向陣列發(fā)送配置字。
可重構(gòu)計算基礎(chǔ)單元??芍貥?gòu)計算單元是可重構(gòu)陣列的核心部分,可以理解為粗粒度的最小計算單元。為了能夠執(zhí)行更多類型的算法,需要支持盡量更多的功能。例如,對于常用的計算密集型運(yùn)算,需要支持FFT、FIR、DCT和點(diǎn)積等功能。因此成熟的可重構(gòu)系統(tǒng)中,應(yīng)該包含足夠多基礎(chǔ)功能、不同粒度需求的可重構(gòu)計算資源庫,以便于更加靈活的資源組合。
1.2 可重構(gòu)系統(tǒng)存儲單元模型設(shè)計
可重構(gòu)計算系統(tǒng)的存儲單元由CPU和可重構(gòu)陣列共同訪問操作。因此,存儲單元主要研究CPU和可重構(gòu)計算單元對內(nèi)存訪問的協(xié)調(diào)與控制機(jī)制,存儲單元的模型設(shè)計需要主要解決如下問題:避免內(nèi)存訪問沖突、解決多個處理器模塊并行工作會降低主存的訪問效率的問題、解決可重構(gòu)計算單元面臨的端口和速度的限制。
存儲管理單元主要解決多個模塊并行工作時會降低訪存效率的問題:多個模塊共享片外內(nèi)存會引起訪問沖突從而導(dǎo)致等待;訪問片外內(nèi)存的端口數(shù)量非常有限,不利于數(shù)據(jù)通路中的并行訪問。主要采取如下改進(jìn)措施:(1)為可重構(gòu)硬件平臺增加內(nèi)存管理單元,實現(xiàn)片外和片上內(nèi)存的映射,保持?jǐn)?shù)據(jù)一致性;(2)為內(nèi)存訪問提供多端口流水化處理或數(shù)據(jù)預(yù)讀??;為應(yīng)用提供定制化的緩存結(jié)構(gòu)。
1.3 可重構(gòu)管理單元模型設(shè)計
可重構(gòu)管理單元負(fù)責(zé)控制任務(wù),它主要接收通用處理器指令,完成系統(tǒng)形態(tài)管理和資源管理;計算單元的軟件加載、配置管理和數(shù)據(jù)交換等任務(wù)。
其主要完成的工作有:(1)實現(xiàn)全局存儲空間的劃分、管理及訪問控制,解決數(shù)據(jù)訪問沖突,阻止非法訪問;將各模塊傳遞的數(shù)據(jù)存儲在統(tǒng)一的存儲區(qū),以并行方式協(xié)同完成計算任務(wù);(2)接收通用處理器的指令,將共享存儲系統(tǒng)中的操作系統(tǒng)及應(yīng)用軟件加載到計算單元;(3)對系統(tǒng)內(nèi)部可重構(gòu)硬件資源進(jìn)行管理,確保相應(yīng)可重構(gòu)計算單元或I/O接口功能變換時,不影響系統(tǒng)正常運(yùn)行功能;(4)用于實現(xiàn)對可重構(gòu)計算單元的動態(tài)配置,可以根據(jù)應(yīng)用任務(wù)需求修改計算單元架構(gòu)和計算模塊的功能,并將計算單元、I/O接口的總線轉(zhuǎn)換為統(tǒng)一的內(nèi)部互連總線,提高了對外連接的適應(yīng)性。
2 基于可編程邏輯陣列的動態(tài)配置技術(shù)實現(xiàn)
2.1 動態(tài)配置技術(shù)原理
動態(tài)配置技術(shù)是實現(xiàn)可重構(gòu)計算單元切換的關(guān)鍵技術(shù),保證邏輯資源的時分復(fù)用,在優(yōu)化資源配置的基礎(chǔ)上實現(xiàn)對不同任務(wù)的響應(yīng)。動態(tài)配置技術(shù)支持的配置階段及配置策略,直接決定了不同重構(gòu)單元是否能夠?qū)崿F(xiàn)無縫切換,進(jìn)而影響了任務(wù)實時響應(yīng)能力。目前成熟的動態(tài)配置技術(shù)需要提前編譯待重構(gòu)的邏輯資源、定義各硬件模塊的接口和時序約束、明確各模塊在可編程邏輯陣列上的實現(xiàn)區(qū)域及模塊之間的物理連線。動態(tài)配置技術(shù)主要包括三個階段,即設(shè)計階段、編譯階段、運(yùn)行階段[2]。
設(shè)計階段,根據(jù)任務(wù)處理需求,需要設(shè)計不同計算任務(wù)對應(yīng)的功能電路,每種計算任務(wù)可能對應(yīng)一種功能電路,或者是若干個功能電路的組合。在基于可編程邏輯陣列的邏輯設(shè)計中,電路設(shè)計采用硬件語言描述或者原理圖描述的方法;頂層設(shè)計文件通過綜合器生成網(wǎng)表文件,在布局/布線階段,依舊可以對流處理器進(jìn)行優(yōu)化設(shè)計。
編譯階段,基于配置文件的生成工具,生成初始配置文件及若干動態(tài)配置文件;初始配置文件包含了非重構(gòu)區(qū)域的系統(tǒng)或電路描述,每個動態(tài)配置文件對應(yīng)一種計算任務(wù)。動態(tài)配置文件經(jīng)過重構(gòu)文件生成器,生成最終可以動態(tài)加載的配置文件。
運(yùn)行階段,非重構(gòu)區(qū)域的處理器或者控制電路,可以自行分析待處理數(shù)據(jù)的特點(diǎn)或依據(jù)頂層控制指令,完成配置文件的動態(tài)加載。加載過程往往通過重構(gòu)控制器及動態(tài)配置接口完成,重構(gòu)配置器在重構(gòu)數(shù)據(jù)庫中選擇相應(yīng)計算任務(wù)對應(yīng)的配置文件,通過動態(tài)配置接口將其加載到可重構(gòu)平臺中,并將可重構(gòu)分區(qū)內(nèi)的邏輯資源重構(gòu)。
2.2 基于ICAP動態(tài)配置技術(shù)實現(xiàn)
Xilinx公司提供支持動態(tài)配置技術(shù)的整套開發(fā)工具,包括用于動態(tài)配置的配置接口IP硬核及相應(yīng)的加載配置函數(shù)。開發(fā)者需要基于標(biāo)準(zhǔn)開發(fā)流程,搭建硬件平臺并制作可重構(gòu)計算單元的IP核;根據(jù)可重構(gòu)部分的資源占用情況,在FPGA內(nèi)部劃分可重構(gòu)區(qū)域資源的大小、位置及種類。ICAP(Internal Config Access Port)是可重構(gòu)資源的內(nèi)部配置接口,可以掛在到內(nèi)部總線上;硬件平臺搭建完成之后,編譯系統(tǒng)會為ICAP提供唯一尋址地址,作為從外部存儲空間向內(nèi)部可重構(gòu)區(qū)域加載的數(shù)據(jù)入口和通道。
如圖2所示,基于ICAP的動態(tài)配置技術(shù)主要包含如下步驟:創(chuàng)建處理器硬件系統(tǒng)、創(chuàng)建頂層設(shè)計、創(chuàng)建布局/布線工程、定義可重構(gòu)分區(qū)、添加可重構(gòu)模塊、設(shè)計規(guī)則檢測、自定義配置、生成比特流、生成啟動文件。創(chuàng)建處理器硬件系統(tǒng)及頂層設(shè)計后,需要對模塊占用的資源進(jìn)行預(yù)估,并根據(jù)預(yù)估結(jié)果創(chuàng)建頂層設(shè)計的約束文件。定義可重構(gòu)分區(qū)、添加可重構(gòu)模塊階段,需要充分考慮布局布線的時序及資源要求。圖3為可重構(gòu)系統(tǒng)的布局圖,主要包括處理器、可重構(gòu)分區(qū)、數(shù)據(jù)總線及其他非重構(gòu)IP核等,處理器負(fù)責(zé)資源調(diào)度、可重構(gòu)接口控制等;可重構(gòu)分區(qū)用于實現(xiàn)流處理器的多形態(tài)變換;數(shù)據(jù)總線同時用作動態(tài)配置文件加載、各模塊數(shù)據(jù)通信通道。
2.3 可重構(gòu)計算系統(tǒng)平臺搭建
如圖4所示,基于動態(tài)配置技術(shù)的可重構(gòu)架構(gòu)的驗證系統(tǒng)包括上位機(jī)、可重構(gòu)計算系統(tǒng)(主要由可編程邏輯陣列組成),兩者之間通過通信總線連接。主要包含以下模塊:(1)可重構(gòu)控制單元。該單元包含:內(nèi)嵌通用處理器PowerPC、Linux操作系統(tǒng)、PLB總線等,主要負(fù)責(zé)可重構(gòu)單元的控制、數(shù)據(jù)傳輸、資源調(diào)度等。(2)通信單元。該單元主要包含:以太網(wǎng)接口及串口,用于圖像傳輸及控制指令傳輸。(3)內(nèi)存管理單元。該單元主要包含片內(nèi)定制的乒乓存儲單元,用于源圖像及中間處理數(shù)據(jù)的緩存。(4)可重構(gòu)邏輯單元??芍貥?gòu)控制單元根據(jù)待處理數(shù)據(jù)的信息特征,通過動態(tài)重構(gòu)方式加載不同配置文件。如可重構(gòu)硬件模塊1支持圖像邊緣的粗提取,可重構(gòu)硬件模塊2支持圖像邊緣的精細(xì)化提取。
上位機(jī)負(fù)責(zé)可重構(gòu)配置單元的加載控制,能夠根據(jù)待處理任務(wù)的數(shù)據(jù)特點(diǎn)和大小以及處理內(nèi)容,選擇最適應(yīng)的可重構(gòu)加載文件,并向可重構(gòu)計算系統(tǒng)發(fā)出重構(gòu)指令??芍貥?gòu)計算系統(tǒng)通過加載不同配置信息,可重構(gòu)計算單元來并完成處理任務(wù)。在任務(wù)處理過程中,可重構(gòu)計算系統(tǒng)可將任務(wù)狀態(tài)信息、任務(wù)處理結(jié)果等用戶關(guān)心的參數(shù)上報給上位計算機(jī)并打印輸出。
文章實現(xiàn)的圖像邊緣提取算法包括如下步驟:圖像平滑、圖像銳化、邊緣提取、邊緣連接,最終得到完整的邊緣圖像。高斯平滑與LOG銳化過程采用空間域濾波方法,二值處理采用自適應(yīng)閾值分離方法,邊緣細(xì)化采用形態(tài)學(xué)變換的方法。其中粗提取模塊主要包含以下三個步驟:圖像平滑、圖像銳化、二值處理。精細(xì)提取模塊包括以下四個步驟:圖像平滑、圖像銳化,二值處理和邊緣細(xì)化四個步驟。
3 試驗結(jié)果分析
3.1 試驗環(huán)境
可重構(gòu)計算系統(tǒng)的試驗平臺基于Xilinx提供的ML507開發(fā)板,處理器采用PowerPC440,操作系統(tǒng)采用Linux,處理器通過PLB總線與可重構(gòu)配置區(qū)域及其他IP核通信。具體配置參數(shù)如表1所示。
3.2 試驗結(jié)果評估
配置文件規(guī)模評估。實驗結(jié)果表明,如果將“PowerPC處理器+PLB總線+圖像處理IP核”的硬件系統(tǒng)全部重構(gòu),需要配置的比特流文件為1914KB;而圖像處理IP核的重構(gòu)只需285KB。由此可以看出,與靜態(tài)配置技術(shù)相比,動態(tài)配置技術(shù)能夠在保證大部分邏輯資源不變的情況下,選擇性的完成資源重構(gòu)。
配置時間評估。動態(tài)配置技術(shù)實現(xiàn)中采用的內(nèi)部配置訪問接口ICAP的時鐘頻率為50MHz,數(shù)據(jù)帶寬8bit,理論配置速度為0.5× 108B/s。實驗結(jié)果表明,動態(tài)配置技術(shù)無論在配置數(shù)據(jù)的加載時間還是重構(gòu)總耗時,都大大減少。配置時間的減少,保證了計算資源的無縫切換,提高了不同任務(wù)的響應(yīng)速度及實時處理能力。
4 結(jié)束語
文章主要有如下貢獻(xiàn):(1)提出了可重構(gòu)計算原型系統(tǒng)的設(shè)計思路,著重介紹了可重構(gòu)系統(tǒng)計算單元、可重構(gòu)系統(tǒng)存儲單元、可重構(gòu)管理單元等關(guān)鍵模塊的設(shè)計理念。(2)搭建驗證平臺,并實現(xiàn)了動態(tài)配置技術(shù)。文章基于Xilinx開發(fā)平臺,搭建了“PowerPC處理器+PLB總線+可重構(gòu)計算單元”的驗證系統(tǒng),設(shè)計了邊緣提取的自主知識產(chǎn)權(quán)核,實現(xiàn)了基于ICAP動態(tài)配置接口的可重構(gòu)計算。實驗結(jié)果表明該驗證平臺不僅具有較高的計算能力和計算靈活性,而且具有較強(qiáng)的資源調(diào)度能力,能夠大大縮短資源重構(gòu)的占用時間。
未來工作包括以下幾方面:(1)進(jìn)一步完善體系結(jié)構(gòu)設(shè)計方案和系統(tǒng)計算模型;(2)結(jié)合可重構(gòu)硬件的發(fā)展,進(jìn)一步開展可重構(gòu)支撐技術(shù)的研究,如:任務(wù)時域劃分模型、軟硬件劃分及調(diào)度模型、硬件資源管理模型等;(3)深入研究可重構(gòu)計算基礎(chǔ)模型,建立多種架構(gòu)的可重構(gòu)單元模型庫,以適用于更多的應(yīng)用場景。
參考文獻(xiàn)
[1]方琛,等.粗粒度可重構(gòu)處理器的結(jié)構(gòu)研究與設(shè)計[D].上海:上海交通大學(xué),2010.
[2]徐新民,等.FPGA動態(tài)部分重構(gòu)的研究及位流信息重構(gòu)的實現(xiàn)[J].科技通報,2008,24(2):236-230.
[3]Krill B,Amira A,Ahmad A,Rabah H.A new FPGA-based dynamic partial reconfiguration design flow and environment for image processing applications[J]. Visual Information Processing (EUVIP),2010.
[4]Interoperability and performance standards for data modems[Z]. MIL-STD-188-110B,2000.
[5]Giovanni D M,Gupta R K.Hardware-software codesign[J]. Readings in Hardware/Software Co-Design,2002
[6]KchuaiWu,JanMadsen.Run-timedynamic reconfiguration:Areality che
ck based on FPGA Architectures form Xilinx[J]. Norchip Conferenc
e,2005.
[7]Sergios Theodoridis,Konstantinos Koutroumbas.Pattern Recogntion,20
06.
[8]ChristianFdaSilva,AliceM.Tokarnia.RECASTER:Synthesis of Fault-Tolerant Embedded Systems based on Dynamically Reconfigurable FPGAs[J].Proceedings of the 18th International Parallel and Distributed Processing Symposium,2004.
[9]Dimos V. Dimarogonas,Kostas J. Kyriakopoulos. A connection bet
ween formation infeasibility and velocity alignment in kinematic multi-agent systems[J].Automatica,2008(10).