郭錚言,方向忠,王 慈
(上海交通大學電子工程系,上海200240)
HEVC是由JCT-VC組織研發的最新一代視頻壓縮標準[1],和上一代 H.264/AVC 標準[2]相比,HEVC 在保證視頻質量的同時可以帶來兩倍的視頻編碼壓縮量。現在電視廣播以及家庭影音中的主流視頻格式是1 080p和720p,新一代高端影音產品將目標鎖定在更高分辨率的視頻格式,比如QFHD(4K×2K)。HEVC的高視頻壓縮率將會更好地滿足超高清分辨率視頻對于海量數據吞吐的需求,也被業界公認為下一代最為普遍應用的標準。新標準中采用了很多先進視頻壓縮技術,比如說在運動補償模塊亮度插值中使用8抽頭濾波器來預測1/4分數精度像素值,同時在色度差值中使用4抽頭濾波器來預測1/8分數精度像素值。與之前的視頻壓縮標準相比,更高精度的插值預測能夠帶來更好的視頻壓縮效果,與此同時視頻編解碼的過程對于帶寬的需求就更高。
運動補償插值模塊是視頻解碼器中計算需求最大的模塊之一,插值預測的過程中需要大量讀取外設存儲器中的參考幀信息,占用了約70%的解碼帶寬。實時解碼3 840×2 160@60 f/s(幀/秒)格式視頻,數據吞吐量會達到500 Mpixel/s[3]。假如使用 H.264/AVC 解碼,帶寬的需求將會是1 080p的4.3倍,即7 Gbit/s。HEVC標準的插值部分因為應用了抽頭數更多的8抽頭濾波器,相比H.264標準需要更多的參考幀信息,因此會帶來更大的帶寬消耗。所以,運動補償模塊會是HEVC標準進行超高清視頻實時解碼過程中的瓶頸。
通過利用2D Cache結構和插值順序重排,本文提出了一種有效合理的運動補償帶寬優化設計。首先,并行化插值結構設計可以保證3 840×2 160@60 f/s的視頻實時解碼時的數據吞吐量需求。其次,利用在插值計算處理器與主存儲器中間使用2D Cache結構進行高速緩沖存儲,從而達到數據快速讀取以及大量減少帶寬的目的。然后,在保證Cache讀取命中率的前提下,利用插值順序重排方案提高每次所讀取參考幀數據之間的時/空相關性,從而減少Cache面積,減少片內硬件開銷。
圖1為所設計的運動補償模塊系統框架,主要由亮度插值計算模塊、色度插值計算模塊、Cache高速緩沖存儲模塊以及外設主存儲器組成。

圖1 HEVC運動補償模塊系統框架
在許多基于H.264/AVC標準所設計的運動補償結構中,一個宏塊往往被拆分成16個4×4模塊然后進行插值計算,一個4×4亮度模塊需要最多讀取9×9參考幀像素信息[4-5]。在HEVC中,3種不同系數的8抽頭濾波器的應用使得插值一個4×4亮度模塊需要讀取最多11×11參考幀像素信息。
本文運動補償模塊基于作者先前的研究成果[6],利用亮度插值中3種系數結構中的相同項,將3種不同系數的濾波器整合設計成為一個具有復用結構的8抽頭濾波器,減少了計算模塊的硬件開銷。插值計算模塊采用流水線設計,1/4精度亮度插值首先由8抽頭濾波器進行水平方向插值,得到半像素值或者1/4像素精度中間值。在8個時鐘周期之后,寄存器陣列中的8個中間值被傳送至垂直方向8抽頭濾波器進行插值計算,最后得到所求像素預測值。對于N個像素并行插值計算,整個HEVC亮度插值模塊需要由2N個8抽頭濾波器(N個水平方向,N個垂直方向)和N×8個15 bit寄存器組成。而在H.264/AVC中,亮度插值模需要(3N+1)個6抽頭濾波器(N個水平方向,2N+1個垂直方向),(2N+1)×6個8 bit寄存器和N個2抽頭濾波器[7-8]。和H.264/AVC相比,HEVC所需的濾波器數量和寄存器隊列減少了,但是濾波器的面積、寄存器的位寬以及寄存器隊列的長度增加了。同時因為插值所需參考幀像素信息的增加,HEVC運動補償對于帶寬需求也更大了。本文中的亮度插值結構為8個像素并行預測。色度模塊與亮度模塊結構相似。
運動補償插值模塊計算時所用到的參考幀信息由于數據量巨大,存儲在片外的主存儲器中。為了減少從數據片內外數據交互帶寬,計算模塊與片外主存儲器之間引入Cache[9]。首先,用來描述插值位置和參考塊大小的插值指令會被發送到判斷模塊中,判斷模塊通過訪問標志存儲器判斷得出所需數據是否命中。若命中,則將插值指令發送至任務隊列;若沒有命中,則將數據讀取請求發送給片外主存儲器,主存儲器確認請求后會將被請求數據傳送寫入片內數據存儲器中。當所有所需參考幀數據都已經被寫入數據存儲器中并且插值模塊已經準備就緒時,參考幀數據和插值指令隨后被發送至插值模塊中進行插值計算。
Cache設計中的三個主要問題為高速緩存映射機制,內部存儲器結構以及Cache緩存區面積優化。高速緩存映射機制[10-11]在許多研究者的文章中都被討論過,而內部存儲器結構和緩存區面積優化問題卻很少被研究。
本文的內部存儲器結構設計主要為了優化存儲器面積和功耗問題。首先,和標清視頻圖像解碼相比,在超高清視頻圖像解碼的過程中,插值模塊往往采用并行化流水線結構來增加數據吞吐量,導致內部存儲器的寬度也會成比例增加。其次,內存訪問過程中的數據對齊問題也會導致存儲器寬度的增加。如圖2a所示,RAM中數據通常是一列中多個像素在一起存儲和讀取,被稱為存儲單元。圖2a中以4個像素為基本存儲單元,假設內存輸出寬度為2個存儲單元即8個像素,以讀取8個像素值為例說明RAM數據訪問對齊問題。圖2a(1)中所示情況為數據對齊訪問,即所需8個數據正好完全包含2個存儲單元內數據,因此只要一個時鐘周期便可以讀取所需數據。圖2a(2)中所示情況為數據未對齊訪問,即只需要3個存儲單元內的部分數據,因為RAM一次只能輸出2個存儲單元的數據,因此需要2個時鐘周期來讀取所需數據。為了保證數據讀取速度滿足一個時鐘周期內讀取所有所需值,就需要增加RAM寬度。內存輸出寬度的增加雖然不會影響內存緩存區的大小,但是會導致功耗增加。

圖2 內部存儲器RAM結構設計
一個解碼單元通常會被拆分成多個4×4或者8×4小模塊來進行插值計算。插值一個8×4模塊,在H.264中需要參考幀模塊大小為12×9,而在HEVC中需要大小為15×11的參考幀模塊。文獻[3]使用4片寬度為32 bit(4個像素)的RAM結構來輸出數據,稱之為4S×4結構。這種4S×4結構保證了12個參考幀像素值能在1個時鐘周期內從RAM中被讀取出來,但是無法滿足HEVC亮度插值時一個時鐘周期讀取15個像素值的需求。有兩種方法可以增加RAM輸出,保證HEVC的快速數據讀取需求。第一種方法是增加1片寬度為32 bit的RAM,即4S×5結構如圖2c所示。但是這種結構雖然保證了數據輸出速度,卻也增加了RAM寬度,為原先的1.25倍。本文提出了另一種2S×8結構,即使用8片RAM,每片RAM寬度為16 bit(2個像素)。這種2S×8結構使得15個參考幀像素能在1個時鐘周期內被全部讀取,從而有效地保證了亮度插值模塊的并行計算速度,并且沒有增加內存寬度。
運動補償插值計算過程中所需要的參考幀模塊數據之間事實上是有相關性的[9]。圖3展示了當前幀解碼單元P0,P1,P2,P3在進行運動補償時所需參考幀模塊大小的例子。從圖3可以發現,參考幀模塊之間互相有重疊。即在當前插值模塊Pk所需的參考幀模塊中,有部分信息有很大概率仍然會被下一個插值模塊Pk+1所需要,此為數據的時域相關性。另一種數據相關性是由存儲器中數據的存放格式所引起的。在外部存儲器中,多個像素通常被組合在一起當作一個訪問單元來存放和讀取。比如在本文設計的Cache中,一個訪問單元由8 byte(64 bit)組成。當這個訪問單元中的部分數據需要被讀取時,整個訪問單元都會從存儲器中讀取出來,包括單元中剩下的不需要數據。而那些當前模塊插值過程中所不需要的數據信息有很大概率在下一個模塊插值的過程中被請求讀取。因此,同一個訪問單元可能被連續多次地反復讀取,此為數據的空域相關性。在2D Cache結構中,這些數據相關性直接影響了Cache高速緩沖區的大小。合理高效地運用這些數據相關性來進行數據讀取,可以在保證帶寬減少的同時,優化Cache緩沖區的大小和減少硬件開銷。
文獻[12]使用了4×64×64大小的Cache緩沖區來減少帶寬,是H.264中32×32大小的Cache設計[10]的16倍。雖然帶寬減少了,但是也為解碼芯片帶來了巨大的片內硬件開銷。圖4a為HEVC中最大解碼單元(64×64)的原始運動補償插值順序,基于HM 9.0。由圖可知,各個模塊的原始插值計算順序與預測單元的存放結構有關。但是,按照這種樹狀存放結構讀取的參考幀模塊,其數據相關性的利用率很低。因此,本文提出3種插值順序重排方法,目的是為了提高參考幀數據相關性的利用率來減少Cache大小,從而減少片內硬件開銷。如圖4b~4d所示,分別為垂直讀取、水平讀取和混合讀取(將解碼單元分成上下兩塊進行垂直讀取)。

圖3 數據時域空域相關性


圖5 部分插值順序重排實驗結果及混合讀取帶寬減少率
圖5為部分插值順序重排實驗結果,所使用的視頻來自HEVC標準測試序列集,為IPPPP編碼模式,測試工具為HM 9.0。
以圖5a為例,測試了3種插值順序重排在不同的緩沖區大小情況下的帶寬優化結果,其中橫坐標表示Cache緩沖區大小(高×寬字節),縱坐標表示帶寬減少率。從此圖中可以看出,在原始插值順序的情況下,帶寬優化曲線(此處稱之為Rc曲線)在128×128處收斂,即在這個緩沖區大小下帶寬優化效果最佳。另外三種插值順序使得曲線提前收斂,其中混合順序重排使得帶寬優化效果在Cache緩沖區大小為32×64時就已經接近于最佳。其他視頻序列的測試結果也均表明利用混合插值順序重排,在保證帶寬優化效果的同時,可以將片內Cache硬件開銷減少為原來的(32×64)/(128×128)=1/8。使用插值順序重排的方法也會帶來一些額外的硬件開銷,那就是需要在外部存儲器中利用一塊64×64 byte大小的存儲空間來存儲整個最大解碼單元內的參考幀數據信息。片外存儲器原先存儲空間遠大于64×64 byte,而且流水線設計有效地解決了數據等待時間問題,因此這點額外的硬件開銷是可接受的。圖5d為混合插值順序重排下的帶寬減少率,從圖中可以看出帶寬優化率達到80% ~90%,合理有效地優化了超高清視頻編解碼過程中帶寬過大的問題。
本文提出了一種基于Cache的HEVC運動補償帶寬優化設計。主要貢獻有:1)提出了內部存儲器低功耗結構設計,保證HEVC標準下超高清視頻解碼數據吞吐量需求,同時降低RAM功耗。2)提出了Cache大小優化設計,通過插值順序重排的方法高效地利用了參考幀數據間的相關性,將片內Cache硬件開銷減少了87.5%。
HEVC視頻測試集的實驗結果表明,本文Cache設計用與H.264有可比性的32×64 byte內存就可以減少HEVC運動補償插值計算過程中的80%以上的帶寬。本文為HEVC解碼器芯片的實際生產和未來針對超高清視頻實時解碼應用提出了合理的解決方案,同時比較了HEVC和H.264運動補償模塊在硬件實現和開銷上的異同。
:
[1] Working draft 5 of high-efficiency video coding,joint collaborative team on video coding(JCT-VC)[S].2011.
[2] Draft ITU-T recommenda-tion and final draft international standard of joint video specification[S].2003.
[3] ZHOU J,ZHOU D,HE G,et al.Cache based motion compen-sation architecture for quad-HD H.264/AVC video decoder[J].IEICE Trans.Electron.,2011(4):439-447.
[4] GUO Zhengyan,ZHOU Dajiang,GOTO S.An optimized mcinterpolation architecture for HEVC[C]//Proc.IEEE Int.Conf.on Acoustics,Speech,and Signal Processing.[S.l.]:IEEE Press,2012:1117-1120.
[5]劉立峰,方向忠.低運算復雜度的H.264解碼器運動補償模塊[J].電視技術,2011,35(9):23-26.
[6] SZE V,FINCHELSTEIN D,SINANGIL M,et al.Chandrakasan.A 0.7-V 1.8-mW H.264/AVC 720 p video decoder[C]//Proc.IEEE J.Solid-State Circuits.[S.l.]:IEEE Press,2009:2943-2956.
[7] WANG S,LIN T,LIU T,et al.A new motion compensation designfor H.264/AVC decoder[C]//Proc.IEEE Int.Symp.Circuits Syst. [S.l.]:IEEE Press,2005:4558-4561.
[8] ZHOU D,LIU P.A hardware-efficient dual-standard VLSI archi-tecture for MC interpolation in AVS and H.264[C]//Proc.IEEE Int.Symp.Circuits and Syst..[S.l.]:IEEE Press,2007:2910-2913.
[9] CHEN X,LIU P,ZHOU D,et al.A high performance and low bandwidth multi-standard motion compensation design for HD video decoder[J].IEICE Trans.Electronics.,2010(3):253-260.
[10] CHUANG T,CHANG L,CHIU T,et al.Bandwidth-efficient Cachebased motion compensation architecture with DRAM-friendly data access control[C]//Proc.IEEE Acoust.,Speech and Signal Process..[S.l.]:IEEE Press,2009:200-2012.
[11] MEHENDALE M,DAS S,SHARMA M,et al.A true multistandard,programmable,low-power,full HD video-codec engine for smartphone SoC[C]//Proc.IEEE Solid-State Circuits Conf.[S.l.]:IEEE Press,2012:226-228.
[12] HUANG C,TIKEKAR M.A 249Mpixel/s HEVC video-decoder chip for quad full HD applications[C]//Proc.IEEE Solid-State Circuits.[S.l.]:IEEE Press,2013:162-163.