《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 視頻陣列處理器數據加載電路的設計與實現
視頻陣列處理器數據加載電路的設計與實現
2014年電子技術應用第12期
冼子雨,蔣 林,柏承雙,王 汐
(西安郵電大學 電子工程學院,陜西 西安710061)
摘要: 隨著多種視頻編解碼標準和視頻算法的提出,視頻處理器高效性和靈活性顯得更為重要。針對視頻陣列處理器中數據加載速率與陣列處理單元處理不匹配的問題,通過對視頻編解碼標準算法的分析,深度挖掘數據訪存冗余和傳輸的特點,在可編程可重構體系結構下,設計了支持灌入和Cache兩種工作模式的數據加載電路,并進行了功能仿真和FPGA驗證。結果表明,該電路能夠滿足1 080P視頻處理對數據加載的要求,采用Desgin Compiler在SMIC 0.13 ?滋m CMOS工藝標準單元庫下綜合,頻率可達197 MHz。
中圖分類號: TP393
文獻標識碼: 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 引言

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

  本文將要介紹可編程可重構數據加載單元的設計與實現,從而提升視頻處理的效率與性能。

1 運動估計算法對存儲結構要求


001.jpg


  目前在視頻編解碼標準中,運動估計算法主要是為了除去幀間冗余,使視頻傳輸過程中的比特數大大減少。運動估計基本算法就是要對當前幀和參考幀進行最小平均絕對值誤差(MAD)操作,得到其運動矢量發送到解碼端。如圖1所示,實線框分別表示當前幀(W×H)和編碼的當前塊(N×N),虛線框分別表示參考幀(W×H)和計算的候選塊(N×N),點線框是參考幀的搜索區域(2pv+N×2ph+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。訪存冗余規定如下:

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

  若結構不支持硬件緩存區域,訪存冗余將達到64。那么存儲的帶寬BW=f×W×H×訪存冗余當前幀+f×W×H×訪存冗余候選塊。存儲帶寬由訪存冗余決定,當每個像素只進行一次訪存操作時,存儲器的帶寬最小。所以必須在硬件內部設置像素緩存區域。若系統時鐘為100 MHz,進行1 080P 30 f/s幀間預測,那么搜索一幀的最大時間為1/30 s,搜索每個4×4子塊的時間為26個系統時鐘。pv=ph=32的搜索區域含有1 024個候選塊,每個候選塊要進行16次減法和15次加法,即26個時鐘要處理1 024個候選塊31K次操作,這顯然需要多個候選塊并行操作,所以存儲系統要有能夠支持多個候選塊并行操作的能力。

2 視頻陣列處理器數據加載單元設計

  2.1 視頻陣列處理器結構


002.jpg

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

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

  2.2 數據加載單元的設計

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

003.jpg

  塊區域存儲(Block Area Mem)負責與總線通信,以及數據的緩存,即需要當前幀緩存、參考幀緩存和寫入數據緩存。當前幀緩存負責當前塊的緩存和預取,參考幀緩存負責參考塊的緩存和預取,寫入緩存負責重建幀和相關變量的寫入。若使用灌入模式,為了達到高的處理能力,塊區域存儲(Block Area Mem)對當前塊和參考塊進行緩存和預取,為陣列處理器提供不間斷的數據源。在數據加載中搜索窗口的數據量要多于當前塊數據,能滿足搜索窗口的加載即可滿足當前塊的加載,若要實時加載32×32搜索區域,每個搜索區域的最大處理時間是4 115 ns,即410個時鐘要加載1 024個像素分量,每時鐘應加載3個像素。塊區域存儲(Block Area Mem)采用一次加載4個像素分量設計,即32 bit的數據位寬,256個時鐘可以加載一個32×32搜索區域的像素分量。對16×16宏塊和32×32搜索區域數據采用乒乓操作,使當前塊和參考幀在“灌入”模式下不間斷地提供數據。根據幀間預測算法對存儲需求,電路工作在100 MHz下,對于pv=ph=32的搜索區域,每26個系統時鐘要處理1 024個候選塊,若16×16 PE組的每個PE只求一個當前塊像素和候選塊像素差的絕對值,剩余操作由其他PE組的PE流水完成,那么一個16×16的PE組可以處理16個4×4子塊像素差的絕對值。這樣要完成1 080P 30 f/s實時整數運動估計,需要讀取數據的16×16 PE組有1 024/(26×16)=2.462個,且這3個PE組可以利用數據共享減少對存儲的訪問,而總線可以對各塊區域存儲進行數據廣播,為減少對內部總線帶寬的要求,塊區域存儲(Block Area Mem)應具備從總線讀取相同數據的能力。在Cache模式下20 KB的當前塊緩存和參考塊緩存共同構成了16個2路直接相聯Cache。

004.jpg

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

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

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

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

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

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替換策略仿真波形圖。

005.jpg

006.jpg

  第1次訪問的數據地址peg_rd_add0為25’d823區號塊號(rd_area_nu,rd_block_nu)即(12,13),在輸出有效信號valid0有效時,hit0_0、hit0_1均為低,此次訪問沒有命中,替換id(excid0)為低表示本次讀取數據應寫入本組2路ram中的0號數據ram。第2次訪問的地址仍是25’d823,在輸出有效信號valid0有效時,hit0_0有效表示0號ram命中,且0號ram的訪問計數counter_0為0,1號ram的訪問計數counter_1為1,表明ram0最近被訪問過而ram1沒有被訪問。第3次訪問的地址為25’d564區號塊號(rd_area_nu,rd_block_nu)為(8,13)與823的塊號一致,但ram1數據有效標志tag_valid1無效,表示不發生替換exch0為低。第4次訪問地址為上次的564,hit0_1有效表示ram1命中。第5次訪問的地址為25’d52區號塊號(rd_area_nu,rd_block_nu)為(0,13),此次exch0為高表示需要替換cache數據塊,且excid0為低表示要替換ram0的數據。從上述描述可知,Cache替換策略得以正確實現,電路功能正確。

  從上述分析可知,在Cache模式時對寄存器進行管理。驗證結果表明,灌入和Cache模式可以滿足1 080P實時處理對數據加載的需求。

4 結束語

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

參考文獻

  [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實現[D].西安:西安電子科技大學,2010.

  [5] 黃小平,樊曉椏,張盛兵,等.32位雙發射雙流水線結構RISC微處理器設計[J].西北工業大學學報,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].計算機研究與發展,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.


此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 多人乱p欧美在线观看| 一区二区在线视频免费观看| 免费黄色a视频| 伊人久久青草青青综合| 亚洲精品美女久久久久| 国产亚洲美女精品久久久久| 国产精品视频2020| 国产无套粉嫩白浆在线观看| 国产不卡视频在线播放| 免费在线一级毛片| 亚洲激情小视频| 久久精品国产99精品国产亚洲性色| 中文字幕免费观看全部电影| eeuss影院在线观看| 五月婷中文字幕| 老司机深夜影院| 激情偷乱人伦小说视频在线| 最近中文字幕免费mv在线视频| 文中字幕一区二区三区视频播放| 夜夜躁狠狠躁日日躁视频| 国产日韩精品一区二区三区| 国产2021中文天码字幕| 国产丝袜无码一区二区视频| 伊人中文字幕在线观看| 亚洲综合网美国十次| 亚洲精品国产手机| 和黑帮老大365天完整版免费| 免费国产不卡午夜福在线| 亚洲一欧洲中文字幕在线| 一级毛片免费毛片毛片| 精品小视频在线| 精品视频一区二区三三区四区 | 扒开老师挠尿口到崩溃刑罚| 国产高清一区二区三区免费视频| 国产精选之刘婷野战| 国产福利片在线| 冬月枫亚洲高清在线观看| 五十路在线播放| 99在线观看视频免费精品9| 色费女人18毛片a级毛片视频 | 午夜天堂在线观看|