文獻標識碼: A
文章編號: 0258-7998(2014)12-0056-04
0 引言
視頻信息的采集、存儲、傳輸與處理一直都是多媒體領域研究的熱點[1]。多種視頻標準并存,桌面、嵌入式等不同應用,需要兼顧計算高效性和編程靈活性的動態(tài)可重構可編程視頻處理器體系結構[2]。而傳統(tǒng)通用處理器(Gnereal Purpose Processor,GPP)、DSP以及專用電路已很難滿足視頻處理性能和靈活性的要求,所以支持多標準和多種視頻編解碼算法已成為視頻編解碼器發(fā)展的趨勢,這向體系結構設計提出了更高的要求[3-4]。GPP采用RISC指令系統(tǒng),通過超標量、亂序執(zhí)行、動態(tài)分支預測、推測執(zhí)行等機制,但執(zhí)行效率低下,也只能處理較小的圖像[5];如Intel的MMX/SSE、IBM的AltiVec、HP的MAX-I/MAX-II等。專用集成電路(ASIC)性能高,執(zhí)行效率也成倍提高,如TIAN X H[6]通過利用流水線的方式來減少數(shù)據(jù)相關性, 并設計了一種完全支持RDO 的上下文存儲器管理機制,能夠達到每個時鐘周期處理一個符號的速度,但它沒有了可編程的靈活性,無法適應多標準的發(fā)展?,F(xiàn)有編解碼器體系結構無法完全滿足視頻處理的需求,研究創(chuàng)新的可編程可重構統(tǒng)一處理陣列體系結構,能夠解決視頻處理的計算高效性和編程靈活性問題[7-9],但在視頻陣列處理器中數(shù)據(jù)加載已逐步成為陣列處理器的瓶頸。如何減少數(shù)據(jù)的訪存冗余,提高視頻陣列處理效率,是一個亟待解決的問題。
本文將要介紹可編程可重構數(shù)據(jù)加載單元的設計與實現(xiàn),從而提升視頻處理的效率與性能。
1 運動估計算法對存儲結構要求
目前在視頻編解碼標準中,運動估計算法主要是為了除去幀間冗余,使視頻傳輸過程中的比特數(shù)大大減少。運動估計基本算法就是要對當前幀和參考幀進行最小平均絕對值誤差(MAD)操作,得到其運動矢量發(fā)送到解碼端。如圖1所示,實線框分別表示當前幀(W×H)和編碼的當前塊(N×N),虛線框分別表示參考幀(W×H)和計算的候選塊(N×N),點線框是參考幀的搜索區(qū)域(2pv+N×2ph+N)。
計算過程包括了六重循環(huán),當前塊和候選塊的每個像素計算絕對誤差和(SAA),候選塊遍歷了(2ph+N)×(2pv+N)個像素的搜索窗,即在搜索窗內選定了2ph×2pv比較塊。一幀圖像計算絕對誤差和(SAA)就要進行W×H×2pv×2ph次操作,每次絕對誤差和操作需要2個像素,那么一幀圖像要訪問存儲2×W×H×2pv×2ph次。若為1 080P 30 f/s,則總線將要讀取像素點7.962 64 Gpixel/s,而實際當前幀和參考幀的全部像素點僅為2×1 080×1 920×30=0.124 416 Gpixel。訪存冗余規(guī)定如下:
若結構不支持硬件緩存區(qū)域,訪存冗余將達到64。那么存儲的帶寬BW=f×W×H×訪存冗余當前幀+f×W×H×訪存冗余候選塊。存儲帶寬由訪存冗余決定,當每個像素只進行一次訪存操作時,存儲器的帶寬最小。所以必須在硬件內部設置像素緩存區(qū)域。若系統(tǒng)時鐘為100 MHz,進行1 080P 30 f/s幀間預測,那么搜索一幀的最大時間為1/30 s,搜索每個4×4子塊的時間為26個系統(tǒng)時鐘。pv=ph=32的搜索區(qū)域含有1 024個候選塊,每個候選塊要進行16次減法和15次加法,即26個時鐘要處理1 024個候選塊31K次操作,這顯然需要多個候選塊并行操作,所以存儲系統(tǒng)要有能夠支持多個候選塊并行操作的能力。
2 視頻陣列處理器數(shù)據(jù)加載單元設計
2.1 視頻陣列處理器結構
視頻陣列處理器可編程可重構的統(tǒng)一體系結構就是采用處理單元(PE)之間鄰接互連,基于單指令多數(shù)據(jù)(SIMD)的數(shù)據(jù)級并行計算和多指令多數(shù)據(jù)(MIMD)的指令級并行計算,解決了并行算法和非并行算法的計算高效性和編程靈活性。簡單來說就是將算法中靈活的部分用編程方式執(zhí)行,而算法中計算量較大的部分采用可重構的方式并行處理。圖2給出了完整的視頻陣列處理器系統(tǒng)結構,包含5個可編程可重構陣列,每個可編程可重構陣列都是通過總線與主處理器連接且可編程可重構陣列之間可以通過寄存器進行通信。每一個可編程可重構陣列包含 16個可編程可重構處理單元組以及一個單元組陣列控制器處理器;每一個處理單元組主要包含一個可重構的4×4處理單元陣列以及一個可編程的處理單元組控制處理器。
該視頻陣列處理器可編程可重構的統(tǒng)一體系結構可以完成視頻壓縮的計算任務,主處理器將不同的視頻壓縮算法映射到可編程可重構陣列處理器上。根據(jù)算法特點分為可重構處理部分和可編程處理部分,用4×4陣列處理單元處理一些計算量大的算法,用可編程控制器處理比較靈活的算法。
2.2 數(shù)據(jù)加載單元的設計
訪存時,需要局部存儲單元加載部分數(shù)據(jù),以實現(xiàn)數(shù)據(jù)復用。對當前幀需要N×N存儲大小,而數(shù)據(jù)復用重疊區(qū)域的大小為N×(N-1);對參考幀搜索區(qū)域的存儲大小為2ph×2pv,數(shù)據(jù)復用重疊區(qū)域的大小為2ph×(2pv-1)。由于處理單元(PE)不存在局部存儲,采用廣播策略分派數(shù)據(jù)。計算過程應該是PC地址和數(shù)據(jù)地址的計算,所有的操作指令都應由PC和數(shù)據(jù)地址驅動,系統(tǒng)根據(jù)PC取出相應指令得到所需數(shù)據(jù),并由數(shù)據(jù)地址得到對應的數(shù)據(jù),由新數(shù)據(jù)或已有數(shù)據(jù)計算下一次操作的PC值和數(shù)據(jù)地址循環(huán)往復。其數(shù)據(jù)流經計算部件輸出數(shù)據(jù)結果,可編程大多是自主申請所需數(shù)據(jù),而可重構或ASIC為了更高的性能大多使用地址生成的策略將數(shù)據(jù)“灌入”計算單元,以節(jié)省讀取數(shù)據(jù)的時間,增加系統(tǒng)吞吐率。如圖3所示數(shù)據(jù)存儲結構,塊區(qū)域存儲(Block Area Mem)需要兼顧申請讀取和“灌入”數(shù)據(jù)兩種模式。實線表示加載數(shù)據(jù)通過總線分別加載到各個塊區(qū)域存儲中;而當多個PE組需要加載相同數(shù)據(jù)時,如虛線表示可以通過一個發(fā)出讀請求的塊區(qū)域存儲廣播到其他需要數(shù)據(jù)的塊區(qū)域存儲中實現(xiàn)數(shù)據(jù)的共享。
塊區(qū)域存儲(Block Area Mem)負責與總線通信,以及數(shù)據(jù)的緩存,即需要當前幀緩存、參考幀緩存和寫入數(shù)據(jù)緩存。當前幀緩存負責當前塊的緩存和預取,參考幀緩存負責參考塊的緩存和預取,寫入緩存負責重建幀和相關變量的寫入。若使用灌入模式,為了達到高的處理能力,塊區(qū)域存儲(Block Area Mem)對當前塊和參考塊進行緩存和預取,為陣列處理器提供不間斷的數(shù)據(jù)源。在數(shù)據(jù)加載中搜索窗口的數(shù)據(jù)量要多于當前塊數(shù)據(jù),能滿足搜索窗口的加載即可滿足當前塊的加載,若要實時加載32×32搜索區(qū)域,每個搜索區(qū)域的最大處理時間是4 115 ns,即410個時鐘要加載1 024個像素分量,每時鐘應加載3個像素。塊區(qū)域存儲(Block Area Mem)采用一次加載4個像素分量設計,即32 bit的數(shù)據(jù)位寬,256個時鐘可以加載一個32×32搜索區(qū)域的像素分量。對16×16宏塊和32×32搜索區(qū)域數(shù)據(jù)采用乒乓操作,使當前塊和參考幀在“灌入”模式下不間斷地提供數(shù)據(jù)。根據(jù)幀間預測算法對存儲需求,電路工作在100 MHz下,對于pv=ph=32的搜索區(qū)域,每26個系統(tǒng)時鐘要處理1 024個候選塊,若16×16 PE組的每個PE只求一個當前塊像素和候選塊像素差的絕對值,剩余操作由其他PE組的PE流水完成,那么一個16×16的PE組可以處理16個4×4子塊像素差的絕對值。這樣要完成1 080P 30 f/s實時整數(shù)運動估計,需要讀取數(shù)據(jù)的16×16 PE組有1 024/(26×16)=2.462個,且這3個PE組可以利用數(shù)據(jù)共享減少對存儲的訪問,而總線可以對各塊區(qū)域存儲進行數(shù)據(jù)廣播,為減少對內部總線帶寬的要求,塊區(qū)域存儲(Block Area Mem)應具備從總線讀取相同數(shù)據(jù)的能力。在Cache模式下20 KB的當前塊緩存和參考塊緩存共同構成了16個2路直接相聯(lián)Cache。
如圖4所示,塊區(qū)域存儲(Block Area Mem)由互連檢測模塊(connect_chk)、讀寫控制模塊(rd_wt_ctrl)、16×16 Buf和32×32 Buf構成。
(1)互連檢測模塊:主要用于檢測相鄰塊區(qū)域存儲與本塊區(qū)域存儲的互連情況,根據(jù)配置的互連情況與周圍模塊建立連接,傳遞數(shù)據(jù)以實現(xiàn)數(shù)據(jù)的廣播。
(2)讀寫控制模塊:負責在“灌入”模式時計算下次讀取數(shù)據(jù)的首地址、緩沖區(qū)的切換及數(shù)據(jù)寫入;在Cache模式時,負責對2 KB寄存器進行管理,構成16個2路直接相聯(lián)Cache。
(3)16×16 Buf:用于存儲當前塊數(shù)據(jù),受讀寫控制模塊的控制。
(4)32×32 Buf:用于存儲參考塊及搜索區(qū)域數(shù)據(jù),受讀寫控制模塊的控制。
3 結果及分析
用Synopsys公司Desgin Compiler在SMIC 0.13 ?滋m CMOS工藝標準單元庫下綜合,頻率可達197.3 MHz。選用Xilinx公司Virtex6系列芯片Virtex XC6VLX550T進行FPGA驗證,綜合后的芯片資源使用情況如表1所示。本結構采用Verilog硬件描述,在Questasim 10.1d下完成了功能仿真和驗證;圖5所示為Cache模式時一組2路直接相連Cache替換策略仿真波形圖。
第1次訪問的數(shù)據(jù)地址peg_rd_add0為25’d823區(qū)號塊號(rd_area_nu,rd_block_nu)即(12,13),在輸出有效信號valid0有效時,hit0_0、hit0_1均為低,此次訪問沒有命中,替換id(excid0)為低表示本次讀取數(shù)據(jù)應寫入本組2路ram中的0號數(shù)據(jù)ram。第2次訪問的地址仍是25’d823,在輸出有效信號valid0有效時,hit0_0有效表示0號ram命中,且0號ram的訪問計數(shù)counter_0為0,1號ram的訪問計數(shù)counter_1為1,表明ram0最近被訪問過而ram1沒有被訪問。第3次訪問的地址為25’d564區(qū)號塊號(rd_area_nu,rd_block_nu)為(8,13)與823的塊號一致,但ram1數(shù)據(jù)有效標志tag_valid1無效,表示不發(fā)生替換exch0為低。第4次訪問地址為上次的564,hit0_1有效表示ram1命中。第5次訪問的地址為25’d52區(qū)號塊號(rd_area_nu,rd_block_nu)為(0,13),此次exch0為高表示需要替換cache數(shù)據(jù)塊,且excid0為低表示要替換ram0的數(shù)據(jù)。從上述描述可知,Cache替換策略得以正確實現(xiàn),電路功能正確。
從上述分析可知,在Cache模式時對寄存器進行管理。驗證結果表明,灌入和Cache模式可以滿足1 080P實時處理對數(shù)據(jù)加載的需求。
4 結束語
本文在研究分析了視頻處理編碼中運動估計算法的基礎上,制定了視頻陣列處理器數(shù)據(jù)加載電路設計的詳細方案,通過功能仿真驗證了電路功能的正確性,并綜合電路,得到了資源占用率、工作頻率等指標。結果表明,該電路能夠滿足1 080P視頻處理對數(shù)據(jù)加載的要求。該研究對于靈活性和高效性的可編程可重構視頻陣列處理器結構的設計有重要意義,后期將選用更多的視頻算法對該設計進行驗證。
參考文獻
[1] 畢厚杰.新一代視頻壓縮編碼標準—H.264/AVC(第二版)[M].北京:人民郵電出版社,2009.
[2] CHEN T C,CHIEN S Y,HUANG Y W,et al.Analysis and architecture design of an HDTV720p 30 frames/s H.264/AVC encoder[J].IEEE Trans.Circ.Syst.Video Technol.,2006,16(6):673-688.
[3] LIN Y L S,KAO C Y,KUO H C,et al.VLSI design for video coding[M].Springer,2010.
[4] 劉定佳.H_264視頻編碼算法研究及DSP實現(xiàn)[D].西安:西安電子科技大學,2010.
[5] 黃小平,樊曉椏,張盛兵,等.32位雙發(fā)射雙流水線結構RISC微處理器設計[J].西北工業(yè)大學學報,2011,29(1):6-11.
[6] TIAN X H,LE T M,HO B L,et al.A CABAC encoder design of H.264/AVC with RDO support[C].IEEE Interna-tional Workshop on Rapid System Prototyping,2007:167-173.
[7] 陶文卿.面向媒體處理的可重構陣列的結構設計與研究[D].上海:上海交通大學,2010.
[8] 張鵬,杜建國,解曉東,等.一種基于多核流水的多標準視頻編解碼器體系結構[J].計算機研究與發(fā)展,2008,45(11):1985-1993.
[9] PASTUSZAK G,TROCHIMIUK M.Architecture design and evaluation for the high-throughput interpolation in the HEVC encoder[C].Digital System Design(DSD),Euromicro,Los Alamitos CA,2013:423-428.