劉 波 肖 建 曹 鵬 楊苗苗
(東南大學國家專用集成電路系統(tǒng)工程技術研究中心,南京210096)
在媒體處理領域中,傳統(tǒng)數(shù)字信號處理器DSP雖然具有很好的靈活性,但由于采用串行的指令流驅動模式,因此難以滿足高性能的需求.專用集成電路ASIC 雖然具有較高的能量效率,但因其定制的功能特性難以滿足層出不窮的應用需求.動態(tài)可重構計算架構由于兼具ASIC 的高性能和DSP 的高靈活性,作為一種新的計算模式被提出并得到廣泛采用[1].
在可重構系統(tǒng)中設置和提供更多的計算資源通常很容易實現(xiàn),但是只有為這些計算資源提供足夠的數(shù)據(jù)存取帶寬,最大化地利用可重構計算陣列提供的硬件計算資源,才能獲得高的計算并行度以及能效比.因此如何設計數(shù)據(jù)緩存結構,為可重構計算陣列提供足夠的數(shù)據(jù)流帶寬,是可重構系統(tǒng)設計中必須考慮的關鍵問題之一.
基于參考像素的空間局部性同時沿著水平和垂直兩個維度分布,文獻[2-4]對傳統(tǒng)Cache 的一維組織方式進行改進,設計出以二維形式組織的Cache.Chang 等[4]提出了一種基于2D Cache 的數(shù)據(jù)重用緩沖機制,增加了宏塊間數(shù)據(jù)重用的功能,但色度和亮度數(shù)據(jù)存儲在一個緩存中,會使得Tag比較電路開銷增大并造成緩存沖突.Tsai 等[5]設計了一種參考幀數(shù)據(jù)和緩存塊數(shù)據(jù)一一對應的2D Cache 機制,相對于傳統(tǒng)的IWR 數(shù)據(jù)復用方案[6],帶寬需求減少了46%.文獻[3]設計的2D Cache架構與文獻[2]相似,采用了VBSMC 機制[5,7],將數(shù)據(jù)帶寬減少了41%,外部訪問延遲減少了30%.但是文獻[2-3]使用的方案地址映射設計復雜且采用簡單的輪轉替換策略.上述方法都取得了一定的效果,但是此類2D Cache 仍然使用傳統(tǒng)的Cache 塊作為2D 數(shù)據(jù)塊的行,從本質上來說是以單個數(shù)據(jù)進行比較和緩存的[7].而媒體算法是以2D 方式訪問數(shù)據(jù)的,若使用上述緩存方式,會使得數(shù)據(jù)訪問效率不高.另外,Zatt 等[8]提出了一種3D Cache 結構,其本質是多塊2D Cache 的拼接,不足之處在于Tag比較電路開銷過大且緩存存儲開銷過高.
為了進一步減少面向媒體處理可重構系統(tǒng)中訪存帶寬的壓力,本文將對上述諸多不足方面進行進一步改進.如將亮度和色度像素塊分開存儲以節(jié)省Tag 比較電路開銷,采用更優(yōu)的緩存替換策略和緩存結構,以提升可重構系統(tǒng)的訪存性能.
如圖1所示,典型的可重構系統(tǒng)主要包含主控核(ARM7TDMI)、可重構處理單元RPU(reconfigurable processor unit)、重構控制單元μPU(microprocessor unit)、DMAC 以及存儲訪問接口EMI(external memory interface)等多個功能模塊.其中,RPU 用于加速計算密集型任務;μPU 用來控制RPU 的功能重構.為了提高可重構處理器單元的數(shù)據(jù)訪問效率,通常會在RPU 與外部存儲器之間設置一塊數(shù)據(jù)緩存結構(圖1中2D Cache),通過預取和緩存片外數(shù)據(jù),利用訪存的局部性特征,降低數(shù)據(jù)訪存的延時,提高可重構系統(tǒng)的工作性能.
圖1 可重構系統(tǒng)總體架構
視頻解碼算法訪問外存進行數(shù)據(jù)存取過程中存在大量的重復和冗余數(shù)據(jù),其原因是:①運動補償算法中由于宏塊分割導致數(shù)據(jù)重復訪問.運動補償中,對于M ×N 的子塊,最大需要(M +5)×(N+5)的參考幀數(shù)據(jù)與之對應[2].以宏塊16 ×16、預測模式(1,3)為例,所需要參考幀的數(shù)據(jù)為441 字節(jié);采用16 ×8 的分割方式,參考幀數(shù)據(jù)量為546字節(jié),重復傳輸?shù)臄?shù)據(jù)是有用數(shù)據(jù)的1.24 倍;采用8 ×8 的分割方式,參考幀數(shù)據(jù)量為676 字節(jié),重復傳輸?shù)臄?shù)據(jù)是有用數(shù)據(jù)的1.53 倍.②由于外部存儲器的訪問造成了數(shù)據(jù)冗余和重復.媒體處理數(shù)據(jù)都是按照像素訪存(8 位)為單位進行的,而對片外存儲器的訪問通常是在32 位以上.這種非對齊的存儲訪問操作使得單次訪存的冗余數(shù)據(jù)可能被再次讀取,帶來數(shù)據(jù)復用的可能.
外部存儲器DDR SDRAM 由Bank,Page(頁)和Column(列)3 個基本單元構成,這種行列組織特性使得訪問不同行的存儲單元時,由于需要進行預充電和激活的換行操作,導致性能降低[9].一般而言,媒體算法如H.264,MPEG-2,AVS 等,其圖像是按幀為單位存放,每一幀圖像按照光柵掃描方式存放在外部存儲器中[10].由于媒體應用中,圖像和視頻的編解碼都是基于宏塊(MB)和塊進行操作的[11-12],導致宏塊中上、下兩行數(shù)據(jù)在地址空間不連續(xù),讀取宏塊時需多次換行;同時一個塊內(nèi)的所有數(shù)據(jù)都有相同的數(shù)據(jù)依賴關系,因此在處理一個宏塊數(shù)據(jù)時,應保證訪問該宏塊數(shù)據(jù)時不被其他操作打斷.
根據(jù)上述媒體算法數(shù)據(jù)訪存特點及需求,針對大量重復使用和讀取的數(shù)據(jù),本文在可重構處理單元RPU 與外部存儲器訪問接口EMI 之間設計了一個片外數(shù)據(jù)緩存單元2D Cache,通過利用數(shù)據(jù)訪存的局部性特征來減少可重構處理單元RPU 對外部數(shù)據(jù)的訪問次數(shù)和外部帶寬訪問延遲.
本文設計的數(shù)據(jù)緩存(2D Cache)結構如圖2所示.該結構包含3 個數(shù)據(jù)緩存(Data Cache):亮度數(shù)據(jù)緩存、色度Cb 數(shù)據(jù)緩存、色度Cr 數(shù)據(jù)緩存,分別用于緩存一個宏塊的亮度數(shù)據(jù)塊、色度Cb數(shù)據(jù)塊以及色度Cr 數(shù)據(jù)塊,3 個緩存模塊結構類似.每個數(shù)據(jù)緩存分別包括一個存儲單元和一個數(shù)據(jù)訪問控制單元.其中,存儲單元包含前向預測數(shù)據(jù)緩存和后向預測數(shù)據(jù)緩存.對于B 幀來說,既有可能讀取當前幀之前的幀圖像數(shù)據(jù)(稱為前向預測),也有可能讀取當前幀之后的幀圖像數(shù)據(jù)(稱為后向預測).因此,此處設置了2 個緩存單元用來避免由于前向預測和后向預測訪問不同幀圖像引起的2D Cache 中數(shù)據(jù)的頻繁替換.數(shù)據(jù)訪問控制單元的作用包括:以二維數(shù)據(jù)塊作為比較單位,當RPU 需要取數(shù)據(jù)時,先將要取的宏塊地址信息與2D Cache 結構中宏塊的地址信息進行比較(compare and select),如果命中,那么直接將該宏塊的數(shù)據(jù)輸出到RPU;否則,數(shù)據(jù)訪問控制單元將針對二維數(shù)據(jù)塊的不命中情況進行不同的處理.
圖2 2D Cache 結構框圖
為尋求性能提升與實現(xiàn)開銷之間的最佳平衡點,需要評估Cache 結構的大小.需要考慮的2 個因素是:①Cache 行需要盡可能開發(fā)數(shù)據(jù)的空間局部性;②Cache 行容量是外存突發(fā)訪問長度的整數(shù)倍.由于Cache 結構大小對于不同的算法標準(H.264,MPEG-2,AVS 等)差異不大,因此可以設置統(tǒng)一的參數(shù).本文以{24 ×13,32 ×13,40 ×21,64 ×21,64 ×3}字節(jié)來分析亮度緩存的大小對于命中率的影響.以{16 ×5,16 ×9,16 ×10,24 ×9,32 ×13}字節(jié)來分析色度緩存的大小與命中的關系.為了選取最佳的緩存大小參數(shù),需要通過命中率和收益率這2 個指標來評估Cache 的性能.命中率和收益率的定義如下:
式中,Rhit表示Cache 的命中率;Nhit表示Cache 的命中次數(shù);Nref表示RPU 讀取參考幀的次數(shù);Ropt表示收益率;Topt表示優(yōu)化后數(shù)據(jù)存取的周期數(shù);Tpre表示優(yōu)化前數(shù)據(jù)存取的周期數(shù).命中率Rhit代表了可重構處理單元RPU 讀取參考幀數(shù)據(jù)時在Cache中的命中幾率.收益率Ropt為采用本文設計的2D Cache 后,RPU 在解碼一個宏塊時訪問參考幀數(shù)據(jù)平均所需花費的時間周期數(shù)占優(yōu)化前時間周期數(shù)的比例,反映了優(yōu)化后數(shù)據(jù)訪問性能的提升率.
從圖3可以看出(圖中Airshow,Stockholm,Mobile 分別表示3 種不同的測試碼流),Cache 越大,命中率越高,對于亮度和色度數(shù)據(jù),從命中率來說,最佳尺寸分別為64 ×32,24 ×9 字節(jié);但是考慮到Cache 的尺寸越大,當RPU 所需要的二維數(shù)據(jù)塊不完全命中時,每次從外存訪問的相應數(shù)據(jù)塊的量就越大,換行次數(shù)就越多,進而導致訪問外存延遲越大.因此為了尋求性能提升與實現(xiàn)開銷之間的最佳平衡點,還要考慮2D Cache 尺寸不能過大的問題.由圖3可看出亮度和色度的緩存大小對收益率的影響,當亮度和色度Cache 大小分別為64 ×21 字節(jié)和24 ×9 字節(jié)時,收益率最高.綜合以上2種情況,本文選取64 ×21 字節(jié)的亮度Cache 大小以及24 ×9 字節(jié)的色度Cache 大小來作為最佳平衡點,此時Cache 不但大小合適,收益率最高,命中率也能高達80% ~90%,整體效能最佳.
圖3 緩存大小對收益率和命中率的影響
當RPU 所需要的二維數(shù)據(jù)塊不完全命中時,替換Cache 數(shù)據(jù)將影響對外訪問的性能.針對參考塊數(shù)據(jù)位置的不同設計了如下的替換策略:replace-flag 為替換標識,當不命中次數(shù)miss-number 達到M 時,令replace-flag 等于1,否則為0.當replace-flag 等于1 時,Cache 從片外讀取數(shù)據(jù)進行替換更新.不命中次數(shù)的更新分以下2 種情況討論:
1)當非完全命中的數(shù)據(jù)塊為小塊時(小于8 ×8字節(jié)),miss-number 加1.在媒體算法中,樹狀結構的運動補償技術通過采用小塊預測圖像中的細節(jié)部分來實現(xiàn).因此,當小塊不命中時,圖像細節(jié)部分的數(shù)據(jù)需要加載,并且由于空間局部性,一段時間內(nèi)此細節(jié)部分周圍數(shù)據(jù)都需要被加載.
2)當非完全命中的數(shù)據(jù)塊為較大塊,但其在Cache 中命中部分小于閾值Threshold 時,miss-number 加1;否則不變.如圖4所示,MB1 完全命中,但是另外4 個數(shù)據(jù)塊在Cache 中都不是完全命中,其中MB2,MB3,MB4 部分命中,MB5 完全不命中.對于MB2,MB3,非命中的數(shù)據(jù)是一個矩形塊,需要向外部存儲器發(fā)起一次訪問.當處理MB2情況,需要考量命中部分是否達到閾值Threshold;而對MB3 情況,由于視頻圖像大多情況是水平方向向上的運動,所以令此情況下的Threshold 為0.MB4 與MB2,MB3 不同,如果要對剩余非命中部分數(shù)據(jù)進行讀取,那么需要分2 次向外部存儲器發(fā)起訪問.這種情況造成訪問次數(shù)的增多,并且數(shù)據(jù)塊信息的計算復雜,反而導致訪問延遲增大.因此針對此種情況,當數(shù)據(jù)塊不是完全命中時,直接從外存訪問相應的數(shù)據(jù).
圖4 二維數(shù)據(jù)塊在Cache 中的不命中情況
當滿足上述2 種情況時,不命中次數(shù)miss-number 便開始計數(shù),只有當miss-number 計數(shù)到達M 次時,才更新replace-flag,繼而替換整個Cache.如果不滿足上述條件,那么對于沒有命中的二維數(shù)據(jù)塊,Cache 控制器直接從外部存儲器中對其訪問,而后發(fā)送給RPU,但是并不替換Cache 中的數(shù)據(jù).以下為2D Cache 結構替換策略的偽碼:
從圖5中的實驗數(shù)據(jù)得出,以碼流Airshow 為例,當M=8,命中閾值為0.6 時,Cache 效率最高,能獲得30%以上的性能收益.
圖5 設計參數(shù)對收益率的影響
為了評估上文中提出的優(yōu)化方法,本文將上述設計方案集成到一款可重構SoC 中,名為REMUS-Ⅱ(reconfigurable multimedia system version 2),目標應用包括H.264,MPEG-2 和AVS 等多種標準格式的視頻解碼.更進一步地,本文基于可重構系統(tǒng)REMUS-Ⅱ和TSMC65nm LP 工藝,設計實現(xiàn)了一款芯片RINOCEROS,如圖6所示.
圖6 RINOCEROS 版圖
表1是采用本文所述數(shù)據(jù)緩存結構后,解碼時平均訪問一個宏塊外部數(shù)據(jù)對應的時間.表中第3列和第4 列分別為平均訪問一個宏塊數(shù)據(jù)的總時間和訪問參考幀數(shù)據(jù)的時間,第5 列為訪存整體性能提升效果.
由表1可見,對于不同分辨率碼流的解碼,通過數(shù)據(jù)重用緩存優(yōu)化參考幀數(shù)據(jù)訪問時間后,REMUS-Ⅱ整體訪存性能都有提升,幅度為29.16%~35.65%,性能平均提升率為31.73%.其次,從第3 列中平均訪問一個宏塊數(shù)據(jù)的總時間可以看到,對于所有碼流,REMUS-Ⅱ都很好地滿足實時解碼1080p @30fps 時對訪存數(shù)據(jù)的時間要求.
表1 優(yōu)化后系統(tǒng)各碼流訪存性能提升效果
綜上所述,通過采用基于二維訪問機制的片外數(shù)據(jù)緩存來訪問外部數(shù)據(jù),最終使得系統(tǒng)性能提升,達到系統(tǒng)實時解碼的性能要求.這是因為本文設計的數(shù)據(jù)緩存結構大量減少了訪問沖突,減少了沖裁時間.同時本文通過增加參考幀數(shù)據(jù)在Cache中的命中率來減少對外部存儲器的訪問次數(shù),不僅減少了外部存儲器固有的發(fā)起延遲,并且減少了訪問外部存儲器時的換行時間,最終減少了對外部數(shù)據(jù)的訪問延遲,提升了系統(tǒng)的整體性能.
與表2中的2D Cache 緩存結構[3]相比,本文所提出的緩存結構,其性能提升率要略高于前者,且數(shù)據(jù)緩存的存儲開銷僅為前者的44.4%.與3D Cache 緩存結構[8]相比,本文所提出的Cache 結構,雖然性能提升率略低于前者,但是存儲開銷僅為前者的8%.
表2 訪存性能及存儲開銷對比
表3比較了REMUS-Ⅱ與國際上2 款主流可重構系統(tǒng)XPP 和ADRES 的性能.以H.264 解碼為例,XPP 在450 MHz 主頻下實現(xiàn)了Main Profile 1080p@24fps 的實時解碼,ADRES 在200 MHz 主頻下達到了Base Profile 720p@30fps 的實時解碼,REMUS-Ⅱ在主頻200 MHz 下,可以滿足更高的High Profile 1080p@30fps 解碼要求.表3中還將性能進行歸一化為執(zhí)行單個宏塊的性能,即單位頻率下每秒可解碼宏塊的個數(shù).REMUS-Ⅱ單位頻率單位時間內(nèi)可解碼的宏塊個數(shù)為1 224,相對于ADRES 和XPP,REMUS-Ⅱ分別獲得8.1 倍和1.8倍的加速比.
表3 與國際同類可重構系統(tǒng)的比較
本文提出的基于二維訪問機制的數(shù)據(jù)緩存結構與替換策略,對于不同標準的媒體處理算法都能獲得較好的優(yōu)化效果,使得可重構系統(tǒng)的訪存提升了29.16% ~35.65%,在有效控制硬件存儲開銷的同時,獲得相對較高的訪存性能提升率.
References)
[1] Cervero T,Lopez S,Callico G M,et al.Survey of reconfigurable architectures for multimedia applications[C]//VLSI Circuits and Systems IV.Dresden,Germany,2009,736303-01-736303-12.
[2] Chuang T D,Chang L M,Chiu T W,et al.Bandwidthefficient cache-based motion compensation architecture with dram-friendly data access control[C]//IEEE International Conference on Acoustics,Speech,and Signal Processing.Taipei,China,2009:2009-2012.
[3] Chuang T D,Tsung P K,Lin P C,et al.A 59.5 mW scalable/multi-view video decoder chip for quad/3D full HDTV and video streaming applications[C]//2010 IEEE International Solid-State Circuits Conference.San Francisco,CA,USA,2010:330-331.
[4] Chang Y N,Tong T C.An efficient design of H.264 interpolator with bandwidth optimization[J].Signal Processing Systems,2008,53(3):435-448.
[5] Tsai C Y,Chen T C,Chen T W,et al.Bandwidth optimized motion compensation hardware design for H.264/AVC HDTV decoder[C]//48th Midwest Symposium on Circuits and Systems.Covington,KY,USA,2005:1199-1202.
[6] Chien Chih-Da,Lin Chien-Chang,Shih Yi-Hung,et al.A 252kgate/71mW multi-standard multi-channel video decoder for high definition video applicatioins[C]//ISSCC Dig Tech Papers.San Francisco,CA,USA,2007:282-283.
[7] Cucchiara Rita,Piccardi Massimo,Prati Andrea.Exploiting cache in multimedia[C]//IEEE Conference on Multimedia Computing and Systems.Florence,Italy,1999,1:345-350.
[8] Zatt B,de L Silva L M,Azevedo A,et al.A reduced memory bandwidth and high throughput HDTV motion compensation decoder for H.264/AVC high 4 ∶ 2 ∶ 2 profile[J].Journal of Real-Time Image Processing,2013,8(1):127-140.
[9] Whitty S,Ernst R.A bandwidth optimized SDRAM controller for the MORPHEUS reconfigurable architecture[C]//IEEE International Symposium on Parallel and Distributed Processing.Miami,F(xiàn)L,USA,2008:1-8.
[10] Probell J.Architecture considerations for multi-format programmable video processors[J].Journal of Signal Processing Systems,2008,50(1):33-39.
[11] Wiegand T.Draft ITU-T recommendation and final draft international standard of joint video specification[J].ITU-T rec.H.264 | ISO/IEC 14496-10 AVC,2003,26(2):167-184.
[12] ITU-T.ISO/IEC-13818 Generic coding of moving pictures and associated audio(MPEG-2)[J].Journal of the Audio Engineering Society (AES),1994,42(10):780-792.
[13] Ganesan M K A,Singh S,May F,et al.H.264 decoder at HD resolution on a coarse grain dynamically reconfigurable architecture[C]//International Conference on Field Programmable Logic and Applications.Amsterdam,Netherlands,2007:467-471.
[14] Mei B,de Sutter B,Vander Aa T,et al.Implementation of a coarse-grained reconfigurable media processor for AVC decoder[J].Journal of Signal Processing Systems,2008,51(3):225-243.