文獻(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ū)悠揭?、色彩模型轉(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ù)傳輸模式,。基于C6678的并行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].第十一屆全國計(jì)算機(jī)工程與工藝學(xué)術(shù)年會(huì)論文集,合肥,,2007:194.
作者信息:
彭益智
(江蘇自動(dòng)化研究所,,江蘇 連云港222061)