文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.06.011
中文引用格式: 彭益智. 一種基于TMS320C6678多核處理器的JPEG實時解碼優化算法[J].電子技術應用,2017,43(6):45-47.
英文引用格式: Peng Yizhi. A JPEG real-time decoding optimization algorithm based on multicore DSP TMS320C6678[J].Application of Electronic Technique,2017,43(6):45-47.
0 引言
在艦船指揮控制系統中,要求數字視頻信號準確、實時地傳輸,共享圖像資源。隨著微電子技術的發展,DSP廠商嘗試采用多核處理器構架來滿足電子信息系統日益增長的實時處理性能要求。針對數字視頻在電子信息系統應用中的實時處理要求,本文基于TI公司TMS320C6678(簡稱C6678)多核DSP的系統架構,提出了多核DSP任務并行設計方法,設計了基于C6678的JPEG解碼系統,實現了核間高效通信和解碼任務并行流水,提高了JPEG解碼系統的實時處理能力。
1 JPEG解碼算法原理
JPEG是成熟的圖像壓縮標準,根據人眼視覺特性,去除數據冗余信息,達到壓縮圖像的目的。JPEG編碼算法先將源圖像數據分塊,經前向離散余弦變換(FDCT)、量化和熵編碼處理,輸出壓縮數據[1]。
JPEG解碼算法流程是編碼算法的逆過程。壓縮數據輸入解碼器,按位讀取以識別Huffman碼字,對照編碼表進行熵解碼,輸出8×8的DCT系數矩陣,經反量化、反向離散余弦變換(IDCT),8×8的DCT系數矩陣變換為8×8的數據塊,經反向層平移、色彩模型轉換,重建圖像[2]。JPEG編解碼算法流程如圖1所示。
2 基于TMS320C6678多核處理器的JPEG實時解碼優化算法
2.1 多核DSP任務并行設計方法
多核DSP任務并行設計方法適用于解決復雜算法在多核DSP平臺的設計問題,包含算法模塊化分解、模塊間通信分析、模塊間通信優化和模塊的多核加載4個步驟。任務并行方式主要有主從模式和數據流模式[3]。
主從模式的特點是集中控制和分散執行。一個處理核設為Master,它調度所有的任務,其他的處理核都為Slave。該模式要解決好處理核之間實時負載平衡問題。主從模式如圖2所示。
數據流模式的特點是分散控制和分散執行。處理核加載不同的運算法則處理數據,再將數據傳遞到下一個處理核,通過查詢數據的有效性或發送消息來激活處理核。適用數據流模式的程序通常包含較高計算復雜度的模塊,且模塊間存在緊密的數據依賴。運用該模式時,各個處理核之間有大量的數據要傳輸,要求系統帶寬高,并且難以平衡核間負載,處理性能受限于計算負載最大的核[2]。數據流模式如圖3所示。
2.2 實時解碼優化算法設計
TMS320C6678是基于先進的KeyStone處理器構架,集成8個C66x核,運算能力強,網絡性能優越,支持圖像、視頻等信號處理應用。運用多核DSP任務并行設計方法,在C6678平臺上設計JPEG解碼算法,主要步驟包括算法分解、通信分析、通信優化和多核加載。
2.2.1 算法分解
將算法盡可能分解為小的模塊,有利于發現算法的并行性。分解時,要結合考慮模塊計算量以及模塊之間的結合性、耦合性,分解點一般選擇在結合性較高、耦合性較低的地方[2]。JPEG解碼算法可分為下面8個模塊[1]:(1)初始化;(2)熵解碼;(3)DC系數解碼;(4)AC系數解碼;(5)反Z字形掃描;(6)反量化;(7)逆向離散余弦變換(IDCT);(8)色彩空間轉換。
模塊之間數據聯系緊密,且熵解碼和IDCT模塊的計算復雜度較高,所以為JPEG解碼算法選擇數據流任務并行模式。壓縮圖像數據經熵解碼,輸出解碼中間符號,然后經DC系數、AC系數解碼,輸出64個DCT系數,經反Z字形掃描、反量化、IDCT和色彩空間轉換,最后重建圖像。解碼過程中發現,DC系數解碼和AC系數解碼模塊存在數據聯系,模塊間耦合性較強,Z字形掃描、反量化、IDCT和色彩空間轉換模塊間結合性較強。
2.2.2 通信分析
算法分解后,一般這些模塊不能獨立執行,因為模塊之間需要傳輸命令和數據,這是模塊間的通信需求。
控制流程表示模塊的執行順序,加載到不同處理核的模塊通過發送消息來實現同步,模塊間還有數據傳輸需求,這些通信會給系統帶來延遲時間,控制流程的設計目的是系統處理能力最大化。數據流程表示模塊間數據傳輸的方向,描述數據與模塊的關系,數據流程的設計目的是模塊間數據通信量最小化。
JPEG解碼算法通信分析如圖4所示,分為模塊層和數據層,實線箭頭代表數據傳輸,虛線箭頭代表命令傳輸。
2.2.3 通信優化
通信分析后,為了實現多核DSP內核間高效通信,使算法高效執行,模塊間通信需要優化。模塊計算量小且與其他模塊耦合性較強,可將模塊與其他模塊合并為子系統,模塊間數據傳輸轉變為子系統內數據讀寫。
針對JPEG解碼算法,DC系數解碼和AC系數解碼模塊共同處理DCT系數的DC系數和AC系數,這兩個模塊間耦合性較強,且模塊的計算量較小,將DC系數解碼、AC系數解碼和熵解碼合并為解碼子系統。反Z字形掃描、反量化、IDCT和色彩空間轉換模塊結合性較強,在解碼過程中,這4個模塊間傳輸的數據量相當龐大,除了IDCT,其他3個模塊的計算量都很小,將它們合并為DCT子系統,這樣模塊間通信變為子系統內數據讀取,減少了模塊間通信。優化后的JPEG解碼算法分為初始化模塊、解碼子系統和DCT子系統3部分,減少了模塊數量,優化了模塊間通信。
通信優化后的模塊通信如圖5所示,分為模塊層和數據層,實線箭頭代表數據傳輸,虛線箭頭代表控制命令的傳輸。
2.2.4 多核加載
通信優化后,根據算法適合的任務并行模式,將模塊、子系統加載到不同處理核,實現算法的任務級并行流水處理。
將初始化模塊、解碼子系統和DCT子系統加載到不同處理核,實現算法的任務級流水。由于解碼和DCT子系統計算復雜度較高,限制了任務級流水的處理速度,為了充分發揮多核處理器性能,也對應于JPEG編碼算法采用的映射方式,將這兩個子系統映射到多個處理核,以核級并行流水來提升系統的解碼速度。C6678的8個C66x核的編號為0~7,核0負責系統初始化,核1、2、3執行解碼子系統,解碼后的數據分別傳遞到核4、5、6,并執行DCT子系統,核1與4、2與5、3與6組成3條處理核級的并行流水線,如圖6所示。
2.3 設計實現
利用CCS5.0提供的SYS/BIOS和IPC組件,SYS/BIOS組件用于任務調度,IPC組件用于核間通信。
C6678的8個處理核為CORE0~CORE7,處理核初始化完成后等待同步消息。為實現內核間高效通信,CORE0與CORE1、2、3間的通信采用最小通信模式,CORE1與CORE4、CORE2與CORE5、CORE3與CORE6間的通信采用數據傳輸模式。基于C6678的并行JPEG解碼系統的整個處理流程如圖7所示。
3 實驗結果分析
為檢驗基于C6678的JPEG解碼系統的處理能力,將相同的算法運行在C6416、C6678的單C66x核上比較,實驗數據如表1所示。
根據測試結果可知,優化前,JPEG解碼算法具有基本相同的復雜度,基于C66x內核的系統處理能力是基于C6416的系統的4.03倍;基于C6678的JPEG解碼系統的處理能力是基于C66x內核的系統的4.65倍,是基于C6416的系統18.77倍。優化后,JPEG解碼算法復雜度略有不同,基于C66x內核的系統處理能力是基于C6416的系統的2.93倍;基于C6678的并行JPEG解碼系統的運行時間為11 ms,系統的處理能力是基于C66x內核的系統的5.36倍,是基于C6416的系統的15.73倍。
4 結束語
隨著先進視頻處理技術在電子信息裝備中的應用,本文針對TI公司TMS320C6678多核DSP的系統架構,提出了基于TMS320C6678的多核DSP解碼任務并行處理算法,提升了視頻處理實時能力。由于本文只采用了編譯器優化途徑,后續可以在流水線設計、內存調整控制等方面進一步優化,基于C6678的JPEG解碼系統的實時處理能力將進一步增強。
參考文獻
[1] WALLACE G K.The JPEG still picture compression standard[J].IEEE Transaction on Consumer Electronics,1992,38:18-34.
[2] 彭益智,霍家道,徐偉.一種基于TMS320C6678的JPEG編碼算法并行實現方法[J].指揮控制與仿真,2012,34(1):119-122.
[3] 劉波,孫書為,孫永節.H.264視頻編碼器的并行性分析[C].第十一屆全國計算機工程與工藝學術年會論文集,合肥,2007:194.
作者信息:
彭益智
(江蘇自動化研究所,江蘇 連云港222061)