《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 視頻陣列處理器數(shù)據(jù)加載電路的設(shè)計與實現(xiàn)
視頻陣列處理器數(shù)據(jù)加載電路的設(shè)計與實現(xiàn)
2014年電子技術(shù)應(yīng)用第12期
冼子雨,蔣 林,柏承雙,王 汐
(西安郵電大學(xué) 電子工程學(xué)院,陜西 西安710061)
摘要: 隨著多種視頻編解碼標(biāo)準(zhǔn)和視頻算法的提出,視頻處理器高效性和靈活性顯得更為重要。針對視頻陣列處理器中數(shù)據(jù)加載速率與陣列處理單元處理不匹配的問題,通過對視頻編解碼標(biāo)準(zhǔn)算法的分析,深度挖掘數(shù)據(jù)訪存冗余和傳輸?shù)奶攸c,在可編程可重構(gòu)體系結(jié)構(gòu)下,設(shè)計了支持灌入和Cache兩種工作模式的數(shù)據(jù)加載電路,并進行了功能仿真和FPGA驗證。結(jié)果表明,該電路能夠滿足1 080P視頻處理對數(shù)據(jù)加載的要求,采用Desgin Compiler在SMIC 0.13 ?滋m CMOS工藝標(biāo)準(zhǔn)單元庫下綜合,頻率可達197 MHz。
中圖分類號: TP393
文獻標(biāo)識碼: A
文章編號: 0258-7998(2014)12-0056-04
The design and implementation of data loading for video array processor
Xian Ziyu,Jiang Lin,Bai Chengshuang,Wang Xi
School of Electronic Engineering, Xi′an University of Posts and Telecommunications,Xi′an 710061,China
Abstract: With a variety of video codec standards and video algorithms proposed, the efficiency and flexibility of video processor become more important. To solve the mismatch of data loading rate and array processing unit, analyzing the video codec standard algorithm, deep mining characteristics of data memory access redundancy and transmission, this paper designs a data loading circuit supporting pump and Cache operating modes in the programmable reconfigurable architecture, and also completes the functional simulation and FPGA verification to the circuit. The result show that this design can meet the data loading requirements of 1 080P video processing for data loading, and its integrated frequency up to 197 MHz, using Desgin Compiler in SMIC 0.13 ?滋m CMOS process standard cell library.
Key words : video array processor;data loading;programmable;reconfigurable

0 引言

  視頻信息的采集、存儲、傳輸與處理一直都是多媒體領(lǐng)域研究的熱點[1]。多種視頻標(biāo)準(zhǔn)并存,桌面、嵌入式等不同應(yīng)用,需要兼顧計算高效性和編程靈活性的動態(tài)可重構(gòu)可編程視頻處理器體系結(jié)構(gòu)[2]。而傳統(tǒng)通用處理器(Gnereal Purpose Processor,GPP)、DSP以及專用電路已很難滿足視頻處理性能和靈活性的要求,所以支持多標(biāo)準(zhǔn)和多種視頻編解碼算法已成為視頻編解碼器發(fā)展的趨勢,這向體系結(jié)構(gòu)設(shè)計提出了更高的要求[3-4]。GPP采用RISC指令系統(tǒng),通過超標(biāo)量、亂序執(zhí)行、動態(tài)分支預(yù)測、推測執(zhí)行等機制,但執(zhí)行效率低下,也只能處理較小的圖像[5];如Intel的MMX/SSE、IBM的AltiVec、HP的MAX-I/MAX-II等。專用集成電路(ASIC)性能高,執(zhí)行效率也成倍提高,如TIAN X H[6]通過利用流水線的方式來減少數(shù)據(jù)相關(guān)性, 并設(shè)計了一種完全支持RDO 的上下文存儲器管理機制,能夠達到每個時鐘周期處理一個符號的速度,但它沒有了可編程的靈活性,無法適應(yīng)多標(biāo)準(zhǔn)的發(fā)展。現(xiàn)有編解碼器體系結(jié)構(gòu)無法完全滿足視頻處理的需求,研究創(chuàng)新的可編程可重構(gòu)統(tǒng)一處理陣列體系結(jié)構(gòu),能夠解決視頻處理的計算高效性和編程靈活性問題[7-9],但在視頻陣列處理器數(shù)據(jù)加載已逐步成為陣列處理器的瓶頸。如何減少數(shù)據(jù)的訪存冗余,提高視頻陣列處理效率,是一個亟待解決的問題。

  本文將要介紹可編程可重構(gòu)數(shù)據(jù)加載單元的設(shè)計與實現(xiàn),從而提升視頻處理的效率與性能。

1 運動估計算法對存儲結(jié)構(gòu)要求


001.jpg


  目前在視頻編解碼標(biāo)準(zhǔn)中,運動估計算法主要是為了除去幀間冗余,使視頻傳輸過程中的比特數(shù)大大減少。運動估計基本算法就是要對當(dāng)前幀和參考幀進行最小平均絕對值誤差(MAD)操作,得到其運動矢量發(fā)送到解碼端。如圖1所示,實線框分別表示當(dāng)前幀(W×H)和編碼的當(dāng)前塊(N×N),虛線框分別表示參考幀(W×H)和計算的候選塊(N×N),點線框是參考幀的搜索區(qū)域(2pv+N×2ph+N)。

  計算過程包括了六重循環(huán),當(dāng)前塊和候選塊的每個像素計算絕對誤差和(SAA),候選塊遍歷了(2ph+N)×(2pv+N)個像素的搜索窗,即在搜索窗內(nèi)選定了2ph×2pv比較塊。一幀圖像計算絕對誤差和(SAA)就要進行W×H×2pv×2ph次操作,每次絕對誤差和操作需要2個像素,那么一幀圖像要訪問存儲2×W×H×2pv×2ph次。若為1 080P 30 f/s,則總線將要讀取像素點7.962 64 Gpixel/s,而實際當(dāng)前幀和參考幀的全部像素點僅為2×1 080×1 920×30=0.124 416 Gpixel。訪存冗余規(guī)定如下:

  3FRO(S{S~3FWH}`Z[{2W@2E.jpg

  若結(jié)構(gòu)不支持硬件緩存區(qū)域,訪存冗余將達到64。那么存儲的帶寬BW=f×W×H×訪存冗余當(dāng)前幀+f×W×H×訪存冗余候選塊。存儲帶寬由訪存冗余決定,當(dāng)每個像素只進行一次訪存操作時,存儲器的帶寬最小。所以必須在硬件內(nèi)部設(shè)置像素緩存區(qū)域。若系統(tǒng)時鐘為100 MHz,進行1 080P 30 f/s幀間預(yù)測,那么搜索一幀的最大時間為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ù)加載單元設(shè)計

  2.1 視頻陣列處理器結(jié)構(gòu)


002.jpg

  視頻陣列處理器可編程可重構(gòu)的統(tǒng)一體系結(jié)構(gòu)就是采用處理單元(PE)之間鄰接互連,基于單指令多數(shù)據(jù)(SIMD)的數(shù)據(jù)級并行計算和多指令多數(shù)據(jù)(MIMD)的指令級并行計算,解決了并行算法和非并行算法的計算高效性和編程靈活性。簡單來說就是將算法中靈活的部分用編程方式執(zhí)行,而算法中計算量較大的部分采用可重構(gòu)的方式并行處理。圖2給出了完整的視頻陣列處理器系統(tǒng)結(jié)構(gòu),包含5個可編程可重構(gòu)陣列,每個可編程可重構(gòu)陣列都是通過總線與主處理器連接且可編程可重構(gòu)陣列之間可以通過寄存器進行通信。每一個可編程可重構(gòu)陣列包含 16個可編程可重構(gòu)處理單元組以及一個單元組陣列控制器處理器;每一個處理單元組主要包含一個可重構(gòu)的4×4處理單元陣列以及一個可編程的處理單元組控制處理器。

  該視頻陣列處理器可編程可重構(gòu)的統(tǒng)一體系結(jié)構(gòu)可以完成視頻壓縮的計算任務(wù),主處理器將不同的視頻壓縮算法映射到可編程可重構(gòu)陣列處理器上。根據(jù)算法特點分為可重構(gòu)處理部分和可編程處理部分,用4×4陣列處理單元處理一些計算量大的算法,用可編程控制器處理比較靈活的算法。

  2.2 數(shù)據(jù)加載單元的設(shè)計

  訪存時,需要局部存儲單元加載部分?jǐn)?shù)據(jù),以實現(xiàn)數(shù)據(jù)復(fù)用。對當(dāng)前幀需要N×N存儲大小,而數(shù)據(jù)復(fù)用重疊區(qū)域的大小為N×(N-1);對參考幀搜索區(qū)域的存儲大小為2ph×2pv,數(shù)據(jù)復(fù)用重疊區(qū)域的大小為2ph×(2pv-1)。由于處理單元(PE)不存在局部存儲,采用廣播策略分派數(shù)據(jù)。計算過程應(yīng)該是PC地址和數(shù)據(jù)地址的計算,所有的操作指令都應(yīng)由PC和數(shù)據(jù)地址驅(qū)動,系統(tǒng)根據(jù)PC取出相應(yīng)指令得到所需數(shù)據(jù),并由數(shù)據(jù)地址得到對應(yīng)的數(shù)據(jù),由新數(shù)據(jù)或已有數(shù)據(jù)計算下一次操作的PC值和數(shù)據(jù)地址循環(huán)往復(fù)。其數(shù)據(jù)流經(jīng)計算部件輸出數(shù)據(jù)結(jié)果,可編程大多是自主申請所需數(shù)據(jù),而可重構(gòu)或ASIC為了更高的性能大多使用地址生成的策略將數(shù)據(jù)“灌入”計算單元,以節(jié)省讀取數(shù)據(jù)的時間,增加系統(tǒng)吞吐率。如圖3所示數(shù)據(jù)存儲結(jié)構(gòu),塊區(qū)域存儲(Block Area Mem)需要兼顧申請讀取和“灌入”數(shù)據(jù)兩種模式。實線表示加載數(shù)據(jù)通過總線分別加載到各個塊區(qū)域存儲中;而當(dāng)多個PE組需要加載相同數(shù)據(jù)時,如虛線表示可以通過一個發(fā)出讀請求的塊區(qū)域存儲廣播到其他需要數(shù)據(jù)的塊區(qū)域存儲中實現(xiàn)數(shù)據(jù)的共享。

003.jpg

  塊區(qū)域存儲(Block Area Mem)負(fù)責(zé)與總線通信,以及數(shù)據(jù)的緩存,即需要當(dāng)前幀緩存、參考幀緩存和寫入數(shù)據(jù)緩存。當(dāng)前幀緩存負(fù)責(zé)當(dāng)前塊的緩存和預(yù)取,參考幀緩存負(fù)責(zé)參考塊的緩存和預(yù)取,寫入緩存負(fù)責(zé)重建幀和相關(guān)變量的寫入。若使用灌入模式,為了達到高的處理能力,塊區(qū)域存儲(Block Area Mem)對當(dāng)前塊和參考塊進行緩存和預(yù)取,為陣列處理器提供不間斷的數(shù)據(jù)源。在數(shù)據(jù)加載中搜索窗口的數(shù)據(jù)量要多于當(dāng)前塊數(shù)據(jù),能滿足搜索窗口的加載即可滿足當(dāng)前塊的加載,若要實時加載32×32搜索區(qū)域,每個搜索區(qū)域的最大處理時間是4 115 ns,即410個時鐘要加載1 024個像素分量,每時鐘應(yīng)加載3個像素。塊區(qū)域存儲(Block Area Mem)采用一次加載4個像素分量設(shè)計,即32 bit的數(shù)據(jù)位寬,256個時鐘可以加載一個32×32搜索區(qū)域的像素分量。對16×16宏塊和32×32搜索區(qū)域數(shù)據(jù)采用乒乓操作,使當(dāng)前塊和參考幀在“灌入”模式下不間斷地提供數(shù)據(jù)。根據(jù)幀間預(yù)測算法對存儲需求,電路工作在100 MHz下,對于pv=ph=32的搜索區(qū)域,每26個系統(tǒng)時鐘要處理1 024個候選塊,若16×16 PE組的每個PE只求一個當(dāng)前塊像素和候選塊像素差的絕對值,剩余操作由其他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ù)廣播,為減少對內(nèi)部總線帶寬的要求,塊區(qū)域存儲(Block Area Mem)應(yīng)具備從總線讀取相同數(shù)據(jù)的能力。在Cache模式下20 KB的當(dāng)前塊緩存和參考塊緩存共同構(gòu)成了16個2路直接相聯(lián)Cache。

004.jpg

  如圖4所示,塊區(qū)域存儲(Block Area Mem)由互連檢測模塊(connect_chk)、讀寫控制模塊(rd_wt_ctrl)、16×16 Buf和32×32 Buf構(gòu)成。

  (1)互連檢測模塊:主要用于檢測相鄰塊區(qū)域存儲與本塊區(qū)域存儲的互連情況,根據(jù)配置的互連情況與周圍模塊建立連接,傳遞數(shù)據(jù)以實現(xiàn)數(shù)據(jù)的廣播。

  (2)讀寫控制模塊:負(fù)責(zé)在“灌入”模式時計算下次讀取數(shù)據(jù)的首地址、緩沖區(qū)的切換及數(shù)據(jù)寫入;在Cache模式時,負(fù)責(zé)對2 KB寄存器進行管理,構(gòu)成16個2路直接相聯(lián)Cache。

  (3)16×16 Buf:用于存儲當(dāng)前塊數(shù)據(jù),受讀寫控制模塊的控制。

  (4)32×32 Buf:用于存儲參考塊及搜索區(qū)域數(shù)據(jù),受讀寫控制模塊的控制。

3 結(jié)果及分析

  用Synopsys公司Desgin Compiler在SMIC 0.13 ?滋m CMOS工藝標(biāo)準(zhǔn)單元庫下綜合,頻率可達197.3 MHz。選用Xilinx公司Virtex6系列芯片Virtex XC6VLX550T進行FPGA驗證,綜合后的芯片資源使用情況如表1所示。本結(jié)構(gòu)采用Verilog硬件描述,在Questasim 10.1d下完成了功能仿真和驗證;圖5所示為Cache模式時一組2路直接相連Cache替換策略仿真波形圖。

005.jpg

006.jpg

  第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ù)應(yīng)寫入本組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ù)有效標(biāo)志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模式時對寄存器進行管理。驗證結(jié)果表明,灌入和Cache模式可以滿足1 080P實時處理對數(shù)據(jù)加載的需求。

4 結(jié)束語

  本文在研究分析了視頻處理編碼中運動估計算法的基礎(chǔ)上,制定了視頻陣列處理器數(shù)據(jù)加載電路設(shè)計的詳細方案,通過功能仿真驗證了電路功能的正確性,并綜合電路,得到了資源占用率、工作頻率等指標(biāo)。結(jié)果表明,該電路能夠滿足1 080P視頻處理對數(shù)據(jù)加載的要求。該研究對于靈活性和高效性的可編程可重構(gòu)視頻陣列處理器結(jié)構(gòu)的設(shè)計有重要意義,后期將選用更多的視頻算法對該設(shè)計進行驗證。

參考文獻

  [1] 畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)—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].西安:西安電子科技大學(xué),2010.

  [5] 黃小平,樊曉椏,張盛兵,等.32位雙發(fā)射雙流水線結(jié)構(gòu)RISC微處理器設(shè)計[J].西北工業(yè)大學(xué)學(xué)報,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] 陶文卿.面向媒體處理的可重構(gòu)陣列的結(jié)構(gòu)設(shè)計與研究[D].上海:上海交通大學(xué),2010.

  [8] 張鵬,杜建國,解曉東,等.一種基于多核流水的多標(biāo)準(zhǔn)視頻編解碼器體系結(jié)構(gòu)[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.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。