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