江顯舟
?
一種應用于超高清視頻編解碼芯片中的定制CACHE
江顯舟
福州瑞芯微電子股份有限公司,上海 201203
在超高清實時編解碼芯片中,數據帶寬和訪問延時一直是制約芯片性能和成本的關鍵。本設計在參考了傳統CACHE特性的基礎上,充分利用了視頻編解碼器對視頻數據的處理順序、圖像數據相關性、AXI總線及DRAM的訪問特性,將平均訪問命中率提高到75%以上、并明顯降低了未命中數據的讀取延時。
CACHE;DRAM;AXI
2013年HEVC(High Efficiency Video Coding)正式成為國際標準。相較于H.264/AVC,HEVC在相同的視頻質量前提下,可以提高約一倍的壓縮效率,在同樣的信道條件下可以傳遞更多的視頻信息。但與此同時,HEVC也大大提升了算法復雜度,再加上不斷增加的分辨率和幀率需求,都對視頻編解碼器的實時編碼速度提出了較大的挑戰。特別是對于的數據帶寬消耗,即使僅考慮分辨率提升產生的影響,4K分辨率的視頻編解碼所需的數據帶寬也已經是1080P的4倍。如何降低視頻編解碼系統的數據帶寬,是所有高性能視頻處理芯片都需要解決的難題。[1]
通用指令CACHE的設計初衷,是為了解決CPU內核不斷增長的讀指令數據訪問需求與系統內存低下的數據效率之間的矛盾。[2]CACHE的核心思想是開辟一個速度快容量小的存儲空間(通常使用高速片上RAM),存儲一些經常會被使用到的數據,使得CPU對系統內存的數據訪問降低,以達到降低系統帶寬并提升數據訪問效率的作用。
CACHE的最小操作單位是行,一般稱之為“cache line”。每個cache line使用tag和index與系統內存中的相同大小的數據對應。在訪問系統內存時,CACHE會根據訪問地址查找與其對應的cache line,若cache line中存在因之前訪問所保留下來的該地址的數據,則直接將cache line中的數據返回,稱之為訪問命中;否則從系統內存中讀取該數據,同時返回數據給請求者以及判斷是否將其存儲在cache line中供后續訪問使用。[3]
研究中所描述的定制化CACHE是在通用指令CACHE的基礎上,綜合考慮了編解碼器的數據訪問,通用總線(AXI)及DRAM的特性,而設計出的一款適用于編解碼器的高命中低訪問延時數據緩沖模塊。設計細節如下:
CACHE最小操作單位(cache line)的選定:cache line越小,CACHE中的數據利用率越高,但CACHE與系統內存中的數據的映射邏輯較復雜,并且數據訪問過于零散,造成系統內存的數據訪問延時增大、數據訪問帶寬降低;cache line越大,cache中的數據利用率越低(因為即使僅需要一筆數據,整個cache line都需要被存儲或讀?。成溥壿嬢^簡單,連續訪問的數據較多,數據訪問效率較高。通過對當前主流的視頻壓縮協議的運動估計結果分析得出,以4行16列的亮度分量及其對應的色度分量(若色度格式為yuv420,則色度分量為2行16列)作為一個cache line最為合理。首先,主流視頻壓縮協議都以16x16或其整數倍大小的圖像塊作為編碼單元,在大多數的情況下,當前編碼的圖像塊與其左側已經編碼完成的圖像塊具有相同的運動方向(同屬一個平動物體),即當前編碼塊的匹配塊也位于左側圖像塊的匹配塊的右側,并且水平距離為編碼圖像塊的寬度。站在數據訪問的角度來看,當前需要訪問的數據非??赡芪挥谏弦淮卧L問數據的右側,且距離為16的整數倍。故以16作為cache line的寬度剛好可以匹配訪問位置的移動。而將亮度和色度合并在一個cache line中可以一次將匹配塊的數據讀出,并且在系統內存中連續編址,增加DRAM訪問效率。
cache line映射方案:本設計采用了組相連的cache line映射方案,但tag和index的排布根據編解碼器的訪問特性進行了調整。首先,采用組相連方案映射的CACHE,每個index只能映射到若干固定的位置。以4路組相連的CACHE為例,若需要訪問的數據恰好需要5個相同index映射位置的數據,則無法全部存儲,至少有一個數據會被更新掉。在視頻編碼中,運動估計都會指定一個矩形的范圍,若tag區域的大小剛好與其匹配,可以最大限度的利用CACHE中的存儲單元。特別的,由于編解碼對圖像塊的處理順序是光柵掃描順序,上行圖像塊的參考圖像塊相鄰的數據有較大的概率在當前圖像塊的編碼過程中使用,基于以上特性,設計了以line buffer為組織形式的L2 CACHE,進一步提高CACHE命中。
cache line更新策略:當從外存中載入了新的數據,且CACHE中能與其對應的cache line都已經存有數據時,需要選擇一個cache line將其內部的數據更新成新載入的數據。cache line更新策略的目的是盡量更新掉后續不會再被使用的數據。由于圖像塊的編碼順序是從左到右從上到下,所以右下側的數據有更大的幾率會被后續的編碼過程使用。本模塊綜合考慮到了上述數據訪問特點以及數據與當前編碼塊之間的距離信息,選擇將最不可能被使用的數據進行更新。
總線優化方案:站在總線效率來看,若想要獲得高效率的數據傳輸,則需要盡量增大連續數據傳輸的長度,并增大發出的最大命令請求數量。模塊內部采用可配置的多個數據管理引擎,可同時發出多個ID的數據請求,并支持數據返回亂序和交織、連續cache line請求命令聚合等功能,以提高總線數據傳輸效率。
DRAM訪問優化方案:DRAM作為絕大多數系統內存的實際載體,其訪問效率決定著整個系統的運行速度。針對于DRAM訪問的特性,模塊會盡量減少對DRAM同一個bank不同row的連續數據訪問。實現方式為通過地址映射,將CACHE中的多個數據管理引擎映射到DRAM的不同bank,每個數據管理引擎每次管理一行cache line,這保證了同時發出的命令必然是散布在DRAM的不同bank上,并盡量減少對同一bank不同row的數據訪問。
使用x264作為測試平臺,在集成了本文所述的CACHE之后,通過對不同的視頻序列進行實際編碼,部分測試數據如表1。
表1

視頻序列名稱分辨率CACHE命中率 tennis1920x108073.29% streetview306x23482.87% soccer720x48080.38% station1920x108078.11% basketball1920x108077.68% riverbed1920x108068.35%
對于絕大多數的視頻序列,CACHE命中率都可以達到75%以上。對于一些運動方向特別復雜的視頻序列(如riverbed),由于其參考塊數據的位置較隨機,造成命中率有所下降,但也能保持在68%以上的命中率。
研究中所述的定制化CACHE,充分挖掘了編解碼算法以及系統總線和DRAM的特性,顯著提升了命中率和帶寬效率??梢詮V泛應用于各種視頻編解碼器的設計中,具有很高的實際應用價值。
[1]葉云飛,柯宜京.一種應用于超聲無損檢測的可變步長LMS算法[J].信息通信,2016(1):29-30.
[2]梅建偉,姜木霖,劉杰,等.一種應用于牽引型超級電容的充電裝置研制[J].湖北汽車工業學院學報,2013,27(2):63-65.
[3]姬偉杰,劉平,李杰,等.一種應用于地下腔體成像的新超寬帶成像算法[J].現代導航,2015(5):441-447.
A Custom CACHE Used in Ultra High Definition Video Codec Chip
Jiang Xianzhou
Fuzhou rockchips electronics Limited by Share Ltd,Shanghai 201203
Data bandwidth and access delay are the key to control the performance and cost of ultra high definition real time coding and decoding chip.This design in reference to the basis of traditional cache characteristic,make full use of the video codec for video data processing sequence,image data correlation,Axi bus and DRAM access features,the average access hit rate is increased to more than 75%,and significantly reduces the misses in the data read delay.
CACHE;DRAM;AXI
TN919.81
A
1009-6434(2016)6-0158-02