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