摘要: 隨著電子產業、工商業以及軍事化產業的迅猛發展,越來越多的復雜運算已經無法單純利用算法上的優化處理來大幅提升執行速度。為了解決日益復雜的計算問題,利用多核處理勢必成為一種大勢所趨。所以著手從多核和單核對比出發,利用Xilinx 的XUP Virtex?2 Pro建立多核處理平臺(基于Shared Memory通信機制)以及單核平臺,并將相同的圖像處理算法DCT分別運行在所構造的基于FPGA的單核和多核硬件平臺上,觀察實驗結果,比較多核和單核運行所需的時間以及資源的消耗,最終的結果有力的說明多核在圖像處理方面的絕對優勢。
關鍵詞: 多核處理平臺; Shared Memory; 離散余弦變換; FPGA; 圖像處理
中圖分類號: TN919?34;TP274+.2 文獻標識碼: A 文章編號: 1004?373X(2013)06?0010?05
0 引 言
基于FPGA的嵌入式應用在近幾年來作為一個比較新穎的課題,已經在通信、消費電子、醫療、工業和軍事等諸多領域占據了相當重要的地位。相對于其他芯片來說,使用FPGA設計的電路執行速度快、上市時間短、成本低廉、可靠性高以及易于維護升級。正是這些優點才使得FPGA的應用范圍越來越廣泛,備受各個領域設計師們的青睞。但是有關于它在多核體系[1]上的研究卻一直很少有人涉及。本文在研究各種核間通信機制的基礎上,提出了一種基于Mailbox核間機制的多核處理系統[2],在該系統中集成了Xilinx的軟核處理器Microblaze,其降低了使用多信號處理板但來的成本問題同時還節省了空間,對更好的發揮多核系統提出了新的解決方案。
1 總線機制與核間通信機制
1.1 PLB總線
1.2 LMB總線
LMB總線主要用來連接片上BRAM(Block RAM)。為了能在一個時鐘周期內完成訪問,LMB采用了最少的控制信號和簡單協議的方式。它分為指令寄存器DLMB和數據寄存器ILMB兩類接口,而且這些接口只和BRAM連接。
1.3 Shared Memory通信機制
共享內存是一種典型的快速異步通信機制,因其使得零拷貝有可能實現,固非常適用于大于1 000 B的大型數據量共享的情況,共享內存可分為兩種:Block RAM和外部內存DDRR。
2 RGB2YCrCb算法以及DCT算法介紹
而DCT變換[5]是視頻壓縮編解碼器中很重要的一部分,被廣泛應用于各種視頻格式的編碼算法中,例如:JPEG,MPEG1,MPEG2,H.264等。
DCT是先將整體圖像分為N×N的像素塊,然后對N×N的像素塊逐一進行DCT變換。由于大多數圖像的高頻分量較小,對應于圖像高頻分量的系數經常為零,加上人眼對于高頻成分的失真不太敏感,所以可以用更粗糙的量化。因此,傳送變換系數的數碼率要大大小于傳送圖像像素所用的數碼率。圖像到達接收端后通過反離散余弦變換回到樣值,雖然會有一定的是真,但人眼是可以接受的,公式如下:
式中和在為0時等于,其他情況下均為1,而
3 多核系統設計環境與系統軟硬件的設計
本文所采用的軟件開發環境是Xilinx公司旗下的ISE 10.1[6?7]開發套件,硬件開發平臺采用的是Xilinx的XUP Virtex?2 Pro[8?9]開發板,而ISE 10.1開發套件嵌入了EDK開發包(其集成了Xilinx Platform studio,Software Development,庫文件生成器,編譯工具等開發模塊),這樣就大大方便了軟硬件的開發。
3.1 利用XPS向導進行多核硬件系統設計
硬件系統采用的總線機制為PLB總線,所有的Microblaze均掛在這兩條總線上,并且以Microblaze0作為主處理器,其他用作從處理器。
設計中PLB總線的從設備主要是xps?uartlite,它作為系統的主要驗證手段,通過串口打印可以在PC機終端里輸出核間通信信息。LMB總線則用于連接片上BRAM和MB的各個LMB接口,實現了D/I LMB端口與啟動內存塊、數據/指令控制器的互連。
PLB橋的作用是使得所有的處理器可以共享外圍設備,如串口RS 232等。
4 硬件實現
4.1 測試所搭建的硬件系統的步驟
(1)點擊Hardware下的Generate Bitstream按鈕,生成配置FPGA所需要的比特流文件;
(2)將PC機與Virtex?2 Pro開發板正確連接,并且給開發板上電;
(3)打開超級終端或是Putty工具,設置正確的參數(如波特率、奇偶校驗位以及流控制位等),確保和創建硬件系統時的設置一致;
(4)點擊Device Configuration下的Download Bitstream進行比特流的下載配置;
(5)觀察終端中的打印信息,判斷是否和Testapp_Memory.c文件中的一致。
4.2 單核執行圖像處理算法以及時間測量
4.2.1 圖像算法在單核上的執行流程
(1)算法按照宏塊順序往下處理,先處理第一個宏塊;
(2)對第一個宏塊的前4個Y分量進行RGB2YCrCb處理,完成后對YCrCb結果做DCT(YMatrix, color)變換;
(3)對第一個宏塊的Cr分量進行RGB2YCrCb處理,完成后對YCrCb結果做DCT(CrMatrix, color)變換;
(4)對第一個宏塊的Cb分量進行RGB2YCrCb處理,完成后對YCrCb結果做DCT(CbMatrix, color)變換;
(5)返回到步驟(1)進行第二個宏塊的處理。
基于單核架構的處理流程是一個串行執行過程,體現在宏塊于宏塊之間是處于一種阻塞等待性的機制,換言之,只要宏塊0的任何一個分量(Y/Cr/Cb)沒有獨立處理且最終完全處理完畢后處理器都必須等待,而無法轉向宏塊1進行后續的處理。
4.3 多核執行圖像處理算法以及時間測量
4.4 單核/多核體系占用資源對比
通過編譯,在生成的編譯報告中將兩者所用的資源統計如表3所示。從表中可以看到在硬件資源的占用上,雙核體系的確消耗的資源較多。
5 結 語
多核系統由于采用了并行環路體系并摒棄了單核阻塞狀態下的等待時間,從而能夠達到處理時間上的優化,但是另一方面其對片上資源的消耗也會隨著從處理器的增加與日俱增,這也印證了“速度與面積”不能兼得這條原則,所以在工程中一定要做好權衡,權衡算法性能優化和硬件資源占用率的取舍,最好能夠折中。
表3 多核和單核處理平臺各項資源對照表
當然在處理如圖像處理、信號處理類的一些復雜算法時,多核機制還是相當具有可取性的,畢竟在實際工程中,往往不介意以空間資源消耗來獲取時間上的優化處理。
參考文獻
[1] 張亮,沈沛意,肖瀟,等.基于Xilinx FPGA的多核嵌入式系統設計基礎[M].西安:西安電子科技大學出版社,2011.
[2] 李蘭英,李霄燕.基于NiosⅡ的SoPC多處理器系統設計方法[J].單片機與嵌入式系統應用,2007(3):18?20.
[3] 鄭升華,蔣本珊.基于Mailbox的圖像誤差擴散并行算法的SoPC實現[J].電子技術應用,2008(8):25?26.
[4] 封岸松,戰仕成,汪瀅.基于FPGA的RGB到YCrCb顏色空間轉換[J].現代電子技術,2010,33(10):122?123.
[5] 張曉晨.DCT 算法分析與結構設計[D].上海:上海交通大學,2010.
[6] 楊躍.FPGA應用開發實戰技巧精粹[M].北京:人民郵電出版社,2009.
[7] 石英,李新新,姜宇柏.ISE應用于軟件開發[M].北京:機械工業出版社,2006.
[8] Xilinx Inc. Virtex?II Pro and Virtex?II Pro X platform FPGAs: complete datasheet [DB/OL]. [2005?09?15]. http://www.xilinx.com/products/silicon_solutions/fpgas/virtex/virtex_ii_profpga.
[9] Xilinx Inc. Virtex?II Pro and Virtex?II Pro X FPGA user guide [EB/OL]. [2005?03?23]. http://www.xilinx.com/support.
[10] 譚浩強.C語言程序設計[M].北京:清華大學出版社,2001.
[11] 劉斌,何劍鋒,孫玲玲.基于FPGA的H.264 DCT算法的硬件實現[J].現代電子技術,2012,35(10):90?92.
[12] 柏均,鄭澤國.基于RGB空間的DCT域彩色圖像水印算法[J]. 現代電子技術,2010,33(4):26?28.