《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種基于TMS320C6678多核處理器的JPEG實時解碼優(yōu)化算法
一種基于TMS320C6678多核處理器的JPEG實時解碼優(yōu)化算法
2017年電子技術應用第6期
彭益智
江蘇自動化研究所,江蘇 連云港222061
摘要: 針對電子信息系統(tǒng)應用中數字視頻的實時處理要求,在解析JPEG解碼原理的基礎上,針對多核DSP的系統(tǒng)架構,提出了多核DSP任務并行設計方法,設計了基于TMS320C6678的JPEG解碼系統(tǒng),實現了解碼任務并行流水和核間高效通信。實驗結果表明,基于TMS320C6678的JPEG解碼系統(tǒng)的實時處理能力有很大提升,在電子信息系統(tǒng)數字視頻傳輸與處理領域有廣泛應用前景。
中圖分類號: TP317
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.06.011
中文引用格式: 彭益智. 一種基于TMS320C6678多核處理器的JPEG實時解碼優(yōu)化算法[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.
A JPEG real-time decoding optimization algorithm based on multicore DSP TMS320C6678
Peng Yizhi
Jiangsu Automation Research Instisute,Lianyungang 222061,China
Abstract: Focus on the real-time processing requirement for digital video in electronic information system applications, based on the analysis of JPEG decoding, proposes a method of multicore DSP task-level parallel implementation for the system architecture of multicore DSP, and design a JPEG decoding system based on TMS320C6678, implement decoding task-level parallel pipeline and efficient inter-core communication. Experimental results show that the real-time processing capability of JPEG decoding system based on TMS320C6678 has improved so much and broaded application prospect in the field of digital video transmission and processing of electronic information systems.
Key words : digital video;JPEG;multicore DSP;TMS320C6678;real-time

0 引言

    在艦船指揮控制系統(tǒng)中,要求數字視頻信號準確、實時地傳輸,共享圖像資源。隨著微電子技術的發(fā)展,DSP廠商嘗試采用多核處理器構架來滿足電子信息系統(tǒng)日益增長的實時處理性能要求。針對數字視頻在電子信息系統(tǒng)應用中的實時處理要求,本文基于TI公司TMS320C6678(簡稱C6678)多核DSP的系統(tǒng)架構,提出了多核DSP任務并行設計方法,設計了基于C6678的JPEG解碼系統(tǒng),實現了核間高效通信和解碼任務并行流水,提高了JPEG解碼系統(tǒng)的實時處理能力。

1 JPEG解碼算法原理

    JPEG是成熟的圖像壓縮標準,根據人眼視覺特性,去除數據冗余信息,達到壓縮圖像的目的。JPEG編碼算法先將源圖像數據分塊,經前向離散余弦變換(FDCT)、量化和熵編碼處理,輸出壓縮數據[1]

    JPEG解碼算法流程是編碼算法的逆過程。壓縮數據輸入解碼器,按位讀取以識別Huffman碼字,對照編碼表進行熵解碼,輸出8×8的DCT系數矩陣,經反量化、反向離散余弦變換(IDCT),8×8的DCT系數矩陣變換為8×8的數據塊,經反向層平移、色彩模型轉換,重建圖像[2]。JPEG編解碼算法流程如圖1所示。

wdz3-t1.gif

2 基于TMS320C6678多核處理器的JPEG實時解碼優(yōu)化算法

2.1 多核DSP任務并行設計方法

    多核DSP任務并行設計方法適用于解決復雜算法在多核DSP平臺的設計問題,包含算法模塊化分解、模塊間通信分析、模塊間通信優(yōu)化和模塊的多核加載4個步驟。任務并行方式主要有主從模式和數據流模式[3]。

    主從模式的特點是集中控制和分散執(zhí)行。一個處理核設為Master,它調度所有的任務,其他的處理核都為Slave。該模式要解決好處理核之間實時負載平衡問題。主從模式如圖2所示。

wdz3-t2.gif

    數據流模式的特點是分散控制和分散執(zhí)行。處理核加載不同的運算法則處理數據,再將數據傳遞到下一個處理核,通過查詢數據的有效性或發(fā)送消息來激活處理核。適用數據流模式的程序通常包含較高計算復雜度的模塊,且模塊間存在緊密的數據依賴。運用該模式時,各個處理核之間有大量的數據要傳輸,要求系統(tǒng)帶寬高,并且難以平衡核間負載,處理性能受限于計算負載最大的核[2]。數據流模式如圖3所示。

wdz3-t3.gif

2.2 實時解碼優(yōu)化算法設計

    TMS320C6678是基于先進的KeyStone處理器構架,集成8個C66x核,運算能力強,網絡性能優(yōu)越,支持圖像、視頻等信號處理應用。運用多核DSP任務并行設計方法,在C6678平臺上設計JPEG解碼算法,主要步驟包括算法分解、通信分析、通信優(yōu)化和多核加載。

2.2.1 算法分解

    將算法盡可能分解為小的模塊,有利于發(fā)現算法的并行性。分解時,要結合考慮模塊計算量以及模塊之間的結合性、耦合性,分解點一般選擇在結合性較高、耦合性較低的地方[2]。JPEG解碼算法可分為下面8個模塊[1]:(1)初始化;(2)熵解碼;(3)DC系數解碼;(4)AC系數解碼;(5)反Z字形掃描;(6)反量化;(7)逆向離散余弦變換(IDCT);(8)色彩空間轉換。

    模塊之間數據聯系緊密,且熵解碼和IDCT模塊的計算復雜度較高,所以為JPEG解碼算法選擇數據流任務并行模式。壓縮圖像數據經熵解碼,輸出解碼中間符號,然后經DC系數、AC系數解碼,輸出64個DCT系數,經反Z字形掃描、反量化、IDCT和色彩空間轉換,最后重建圖像。解碼過程中發(fā)現,DC系數解碼和AC系數解碼模塊存在數據聯系,模塊間耦合性較強,Z字形掃描、反量化、IDCT和色彩空間轉換模塊間結合性較強。

2.2.2 通信分析

    算法分解后,一般這些模塊不能獨立執(zhí)行,因為模塊之間需要傳輸命令和數據,這是模塊間的通信需求。

    控制流程表示模塊的執(zhí)行順序,加載到不同處理核的模塊通過發(fā)送消息來實現同步,模塊間還有數據傳輸需求,這些通信會給系統(tǒng)帶來延遲時間,控制流程的設計目的是系統(tǒng)處理能力最大化。數據流程表示模塊間數據傳輸的方向,描述數據與模塊的關系,數據流程的設計目的是模塊間數據通信量最小化。

    JPEG解碼算法通信分析如圖4所示,分為模塊層和數據層,實線箭頭代表數據傳輸,虛線箭頭代表命令傳輸。

wdz3-t4.gif

2.2.3 通信優(yōu)化

    通信分析后,為了實現多核DSP內核間高效通信,使算法高效執(zhí)行,模塊間通信需要優(yōu)化。模塊計算量小且與其他模塊耦合性較強,可將模塊與其他模塊合并為子系統(tǒng),模塊間數據傳輸轉變?yōu)樽酉到y(tǒng)內數據讀寫。

    針對JPEG解碼算法,DC系數解碼和AC系數解碼模塊共同處理DCT系數的DC系數和AC系數,這兩個模塊間耦合性較強,且模塊的計算量較小,將DC系數解碼、AC系數解碼和熵解碼合并為解碼子系統(tǒng)。反Z字形掃描、反量化、IDCT和色彩空間轉換模塊結合性較強,在解碼過程中,這4個模塊間傳輸的數據量相當龐大,除了IDCT,其他3個模塊的計算量都很小,將它們合并為DCT子系統(tǒng),這樣模塊間通信變?yōu)樽酉到y(tǒng)內數據讀取,減少了模塊間通信。優(yōu)化后的JPEG解碼算法分為初始化模塊、解碼子系統(tǒng)和DCT子系統(tǒng)3部分,減少了模塊數量,優(yōu)化了模塊間通信。

    通信優(yōu)化后的模塊通信如圖5所示,分為模塊層和數據層,實線箭頭代表數據傳輸,虛線箭頭代表控制命令的傳輸。

wdz3-t5.gif

2.2.4 多核加載

    通信優(yōu)化后,根據算法適合的任務并行模式,將模塊、子系統(tǒng)加載到不同處理核,實現算法的任務級并行流水處理。

    將初始化模塊、解碼子系統(tǒng)和DCT子系統(tǒng)加載到不同處理核,實現算法的任務級流水。由于解碼和DCT子系統(tǒng)計算復雜度較高,限制了任務級流水的處理速度,為了充分發(fā)揮多核處理器性能,也對應于JPEG編碼算法采用的映射方式,將這兩個子系統(tǒng)映射到多個處理核,以核級并行流水來提升系統(tǒng)的解碼速度。C6678的8個C66x核的編號為0~7,核0負責系統(tǒng)初始化,核1、2、3執(zhí)行解碼子系統(tǒng),解碼后的數據分別傳遞到核4、5、6,并執(zhí)行DCT子系統(tǒng),核1與4、2與5、3與6組成3條處理核級的并行流水線,如圖6所示。

wdz3-t6.gif

2.3 設計實現

    利用CCS5.0提供的SYS/BIOS和IPC組件,SYS/BIOS組件用于任務調度,IPC組件用于核間通信。

    C6678的8個處理核為CORE0~CORE7,處理核初始化完成后等待同步消息。為實現內核間高效通信,CORE0與CORE1、2、3間的通信采用最小通信模式,CORE1與CORE4、CORE2與CORE5、CORE3與CORE6間的通信采用數據傳輸模式?;贑6678的并行JPEG解碼系統(tǒng)的整個處理流程如圖7所示。

wdz3-t7.gif

3 實驗結果分析

    為檢驗基于C6678的JPEG解碼系統(tǒng)的處理能力,將相同的算法運行在C6416、C6678的單C66x核上比較,實驗數據如表1所示。

wdz3-b1.gif

    根據測試結果可知,優(yōu)化前,JPEG解碼算法具有基本相同的復雜度,基于C66x內核的系統(tǒng)處理能力是基于C6416的系統(tǒng)的4.03倍;基于C6678的JPEG解碼系統(tǒng)的處理能力是基于C66x內核的系統(tǒng)的4.65倍,是基于C6416的系統(tǒng)18.77倍。優(yōu)化后,JPEG解碼算法復雜度略有不同,基于C66x內核的系統(tǒng)處理能力是基于C6416的系統(tǒng)的2.93倍;基于C6678的并行JPEG解碼系統(tǒng)的運行時間為11 ms,系統(tǒng)的處理能力是基于C66x內核的系統(tǒng)的5.36倍,是基于C6416的系統(tǒng)的15.73倍。

4 結束語

    隨著先進視頻處理技術在電子信息裝備中的應用,本文針對TI公司TMS320C6678多核DSP的系統(tǒng)架構,提出了基于TMS320C6678的多核DSP解碼任務并行處理算法,提升了視頻處理實時能力。由于本文只采用了編譯器優(yōu)化途徑,后續(xù)可以在流水線設計、內存調整控制等方面進一步優(yōu)化,基于C6678的JPEG解碼系統(tǒng)的實時處理能力將進一步增強。

參考文獻

[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] 劉波,孫書為,孫永節(jié).H.264視頻編碼器的并行性分析[C].第十一屆全國計算機工程與工藝學術年會論文集,合肥,2007:194.



作者信息:

彭益智

(江蘇自動化研究所,江蘇 連云港222061)

此內容為AET網站原創(chuàng),未經授權禁止轉載。