?

可重構陣列處理器上HEVC流水線并行化設計與實現*

2023-10-25 01:12謝曉燕崔馨月
傳感器與微系統 2023年10期
關鍵詞:流水線編碼器處理器

趙 靜,蔣 林,朱 筠,謝曉燕,楊 坤,崔馨月

(1.西安郵電大學 電子工程學院,陜西 西安 710121;2.西安科技大學 安全科學與工程學院,陜西 西安 710600;3.西安郵電大學 計算機學院,陜西 西安 710121)

0 引 言

為適應不同高級應用場景下的視頻編碼需求,新一代高效視頻編碼(high efficiency video coding,HEVC)標準引入了諸多新技術,來提高編碼效率[1]。但是,分辨率和壓縮性能的提升伴隨著計算復雜性和編碼時間的急劇增加,這對高清視頻的實時處理提出了巨大的挑戰,在保證視頻圖像質量的前提下如何節省編碼時間成為學者們的研究熱點[2,3]。

硬件解決方案因其高性能、低功耗等優點成為實現HEVC編碼器的主流趨勢,主要包括3 種類型:第1 種是中央處理器(CPU)/圖像處理器(graphic processing unit,GPU)架構[4],將部分高計算強度負載轉移到GPU上,但其大多數難以實現細粒度的并行,無法滿足逐漸嚴苛的編碼時間需求;第2種是在專用集成電路和現場可編程門陣列(field programmable gate array,FPGA)中實現[5,6],雖然可以解決計算效率低的問題,但應用發生變化時,需要重新設計電路,靈活性較差;第3種是基于可重構陣列處理器的解決方案[7],FPGA是一種細粒度的可重構器件,雖然在設計時不可避免地受到可用資源和頻率的限制,但可重構陣列處理器可以根據視頻圖像不同的需求,對處理單元邏輯功能和連接方式進行靈活配置,具有較好的靈活性和擴展性。

面對海量像素數據、高復雜度視頻編碼算法和苛刻的實時性要求,除了具有性能優越的硬件配置之外,基于硬件資源協調分配的并行優化算法設計也很重要。文獻[6]的優化算法極大地提高了吞吐量,然而,高復雜性的優化算法引入了13%的編碼開銷,優化代價較大。文獻[7~9]重點針對編碼器內的單個算法進行優化,實現編碼速度或圖像質量的提升。但這些大多數都是針對局部算法的優化,性能提升效果有限。

本文引入軟件流水線思想,提出一種基于可重構陣列處理器的HEVC算法流水線并行實現方案。將所有編碼塊級的子任務組織成流水線的形式,將其并行映射在不同處理單元簇上,并進行全局的流水線并行化設計,使得編碼塊可以同時被處理,從而減少硬件的等待時間。該方法在不引入其他額外硬件開銷、不降低視頻圖像質量的同時,實現編碼效率提升66%。

1 可重構陣列處理器與HEVC并行性分析

1.1 可重構陣列處理器

項目組前期研發的可重構陣列處理器結構如圖1 所示[10,11]。每個處理單元組(processing element group,PEG)由4 ×4的輕核處理單元(processing element,PE)陣列、存儲單元和高速交換開關構成。全局控制器利用H-tree傳輸網絡向PE陣列下發配置信息,對計算資源進行管理和控制。數據輸入存儲器(data input memory,DIM)和數據輸出存儲器(data output memory,DOM)用來存放待編碼視頻圖像的原始數據和處理結果。

可重構陣列處理器中豐富的計算資源為視頻編碼提供了強大的算力,可重構配置的計算系統使用靈活的高速計算結構來執行并行處理,以適應視頻算法的多樣性,有效提高HEVC編碼器計算效率。

1.2 編碼算法的并行性分析

HEVC映射方案包含幀內環路和幀間環路,每個算法映射在不同的PEG上,如圖2 所示。幀內預測算法從DIM中讀取原始數據,將計算得到的殘差值作為輸出傳遞給離散余弦變換(discrete cosine transform,DCT)算法,并將最優預測值傳遞給求和模塊,去塊(deblocking,DB)濾波算法將編碼塊處理結果存入DOM。幀間環路主要包含整數運動估計(integer motion estimation,IME)、運動補償(motion compensation,MC)、DCT算法、求和模塊和DB算法。

圖2 HEVC映射方案

各編碼算法具有不同的數據流特性,結合可重構陣列處理器分析不同算法的并行加速方案如下:

1)幀內預測算法:各種預測模式的計算過程相互獨立,將其映射在不同的PE上,采取多種預測模式并行處理的加速方案。

2)DCT算法:主要包含變換、量化、反量化和反變換這4個步驟,每個步驟映射在不同的PE 上,則至少需要4 個PE來共同完成。1個PEG共有16個PE,因此,將輸入數據流劃分為4組,采取4路并行的方式。

3)DB濾波算法:DB 濾波算法需將像素塊劃分為2 部分,分別進行濾波操作,且濾波過程中無數據依賴關系,采取2路并行的方式可以使得這2部分像素同時進行處理。

4)MC算法:各像素點的插值計算過程相互獨立,因此,將輸入數據分發到不同PE中,同一時間進行多個像素點的插值計算。

5)IME算法:IME中進行4個參考塊的SAD值計算,其計算過程相互獨立,可以采取4路并行的方式加速計算。

1.3 HEVC流水線并行性分析

在非流水線編碼方式下,只有將該編碼塊的處理結果存入DOM并產生復位信號后,才可以開始處理下一編碼塊。因此,每個PEG有超過1/2的時間處于等待狀態,沒有充分發揮PEG可獨立并行運行的優勢,存在硬件資源浪費問題,過長的等待時間也極大限制了HEVC效率。

軟件流水線技術將編碼塊處理過程劃分為不同的階段,每個階段對應不同的執行單元,各執行單元并行工作的方式增大子任務的吞吐量,從而縮短完成總任務所需要的時間?;诳芍貥嬯嚵刑幚砥鞯腍EVC視頻編碼器具有分簇執行的特點,即不同算法對應不同的PEG,具備流水線并行化的基本條件。假設編碼一幀圖像是總任務,則每個編碼塊的處理過程可以看作是不同的子任務。

2 HEVC流水線并行優化設計實現

2.1 基于編碼塊的HEVC流水段劃分

幀內和幀間環路的流水級設計如表1 所示。HEVC編碼器在每個流水線周期均讀取一個新的編碼塊并開始它的處理流程。流水線周期,即編碼塊沿流水線移動的時間間隔,取決于運行時間最長的算法。當流水線處于滿載狀態時,PE利用率最高,相較于之前同一時間周期內只能處理1個編碼塊,流水線編碼器的幀內環路可以同時處理4個編碼塊;幀間環路可以同時處理5個編碼塊。

表1 HEVC的流水段劃分

2.2 HEVC算法的自動循環設計

流水線的正常工作要求各執行單元必須具有自動循環處理子任務的能力,即每個算法模塊完成一個編碼塊處理結果的傳輸之后,程序自動跳轉到頭部重新開始執行,進行下一個編碼塊的處理。

以DCT算法為例,其在PE 陣列上的并行映射結果如圖3 所示,PE00 將編碼塊的像素分為4 組并分別發送到PE10、PE20和PE30,每組4 個橫向PE 間采用鄰接互聯的數據傳遞方式完成處理流程,最后由PE03將處理結果傳輸給下一個模塊。此時,PE03在其本地存儲器的510 號地址存儲1個數字作為結束標志,該簇中的其他PE運行結束后循環檢測該標志,若能檢測到則跳轉到程序首行,開始下一編碼塊的處理;若沒有檢測到則繼續等待,直到檢測成功。

圖3 DCT算法在PEG11 上的并行映射

2.3 基于握手機制的流水線調度

HEVC流水線的調度過程如圖4 所示,當前PEG 在向下一級算法所在的PEG傳遞處理結果前,需要確保其處于空閑狀態。算法運行結束時在特定的地址空間存儲一個數字作為握手信號,其他算法通過檢測該握手信號是否存在來判斷該算法的運行狀態。當握手成功時,代表算法處于空閑狀態,此時可以向其PE傳輸數據。各流水段算法在首次執行時,其對應的處理元簇必定為空閑狀態,故不需要檢測握手信號,可直接開始執行。

圖4 流水線調度過程

2.4 數據沖突問題的解決方案

由于環路的數據流向在幀內預測算法處存在分支,而同一PEG內存儲空間不能在同一流水線周期內重復使用,否則最后存入的數據會覆蓋掉先前存儲的數據,從而導致流水線在求和模塊產生數據沖突。

為了解決這個問題,采用輪詢存儲方法,將可能產生沖突的數據按標簽分開存儲,不同的標簽對應不同的編碼塊和存儲位置,編碼塊循環存儲在不同的空間。在幀內環路中,求和模塊處于流水線的第三級,因此,該算法所在的PEG01內最多可能存儲3 個編碼塊的最優預測數據,所以設置3個標簽,從而避免了流水線設計引起的數據沖突。

3 實驗結果與性能分析

3.1 仿真驗證方案與結果分析

為了檢驗本文提出方案的正確性和可行性,基于可重構陣列處理器進行仿真驗證。首先,使用仿真軟件將測試數據轉換為二進制的形式存入DIM 中,并將指令通過平臺專用的翻譯器轉換為陣列處理器可以識別的二進制指令,存入對應PE陣列的指令存儲器中,完成初始化工作。然后使用基于標準的驗證軟件進行仿真驗證,Xilinx 公司的ISE14.7 開發環境進行綜合,選用BEE4 系列開發板XC6VLX550T進行FPGA 測試[12]。實驗表明,編碼器的工作頻率為153.6 MHz,電路規模為164553Flip—flops,測試結果如圖5所示,其中,圖5(a)~(c)為幀內環路的測試結果,圖5(d)~(f)為幀間環路的測試結果,均具有良好的可視效果。

圖5 測試結果

為了驗證所提方案適用于各種不同類型的視頻圖像,選取不同類別的標準測試序列進行編碼測試,表2 為改進前后方案的性能比較。加速比S為改進前后執行時間的比率,衡量并行化的性能效果,計算如式(1)所示,T1和Tn分別為流水線并行前和并行后的處理器運行時間

表2 改進前后性能對比

結果顯示,流水線并行方案的平均加速比約2.92,圖像的編碼時間比改進之前平均減少了66%,節省了大量的編碼時間,編碼器性能得到明顯提升。

3.2 性能分析比較

本文基于可重構陣列處理器的HEVC編碼器充分利用了編碼單元內細粒度并行性和可重構特性,同時引入流水線設計,獲得了較高的加速比。文獻[13]通過設計模式決策的并行架構實現編碼器加速,雖然硬件開銷很小,但其編碼時間相比本文較長。圖6為本文方案與文獻[13]的方案對不同分辨率視頻圖像的處理時間,灰色折線代表的是加速比??梢钥闯?,本文方案相對于文獻[13]獲得了普遍的加速,對高清視頻圖像的處理時間節約了18%,運行時間整體較短,并且受分辨率影響較小。

圖6 處理速度的比較

峰值信噪比(peak signal to noise ratio,PSNR)和結構相似性(structural similarity,SSIM)是2 種常用的評估視頻圖像質量的指標。選取5組測試序列,在全I幀配置下進行測試,結果如表3所示,平均SSIM值為0.994 1;與HM16.8 相比,PSNR值平均增加了0.021 9 dB,基本保持不變。結果表明,本文方案在編碼時間得到提高的同時,視頻圖像質量也得到了保證。

表3 與HM16.8 的視頻圖像質量對比

4 結束語

本文分析HEVC算法的數據相關性,結合可重構陣列處理器的工作特性,對不同處理元簇上的編碼算法進行自動循環設計,并基于握手機制設計流水線調度方式,實現了HEVC流水線并行化映射。此外,采用輪詢存儲方法避免了圖像重建模塊的數據沖突。該方案在FPGA平臺上的工作頻率可達153.6 MHz,對比改進前方案的執行時間減少了約66%。在保證視頻圖像質量不降低和不消耗更多硬件資源的前提下,實現了視頻編碼速度的提升。

猜你喜歡
流水線編碼器處理器
Gen Z Migrant Workers Are Leaving the Assembly Line
流水線
基于FPGA的同步機軸角編碼器
基于PRBS檢測的8B/IOB編碼器設計
報廢汽車拆解半自動流水線研究
JESD204B接口協議中的8B10B編碼器設計
Imagination的ClearCallTM VoIP應用現可支持Cavium的OCTEON? Ⅲ多核處理器
ADI推出新一代SigmaDSP處理器
多總線式光電編碼器的設計與應用
SIMATIC IPC3000 SMART在汽車流水線領域的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合