周國良,彭益智,曲 偉
(江蘇自動化研究所,江蘇 連云港 222061)
在艦船火力與指揮控制系統(tǒng)中,采用數(shù)字視頻總線準確、實時地傳輸傳感器視頻圖像信息,實現(xiàn)多傳感器圖像信息共享。傳感器視頻圖像信息先在前端圖像處理系統(tǒng)進行編碼處理,然后通過數(shù)字視頻總線實時傳輸,在指揮終端解碼實現(xiàn)圖像資源共享。隨著視頻圖像高清化發(fā)展趨勢,傳感器采集的圖像數(shù)據(jù)量激增,為實現(xiàn)圖像數(shù)據(jù)實時傳輸,對圖像處理系統(tǒng)的數(shù)據(jù)處理能力和數(shù)字視頻總線傳輸能力提出了更高的要求。針對艦船傳感器視頻圖像高清化和傳輸實時化需求,本文在分析多核DSP 并行處理和JPEG 編碼算法的基礎上,提出了一種基于多核DSP 的JPEG 圖像編碼實現(xiàn)方法,并實現(xiàn)了多核DSP 核間高效通信和任務級并行處理。
為滿足移動網絡領域對通道密度及高質量媒體服務日益增長的需求,德州儀器(TI) 推出TMS320C66x 系列數(shù)字信號處理器,提供系統(tǒng)級的低成本、低功耗和高密度媒體解決方案。
TMS320C6678(簡稱C6678)處理器基于創(chuàng)新型Key Stone 構架,集成了8 個C66x 內核,支持高性能信號處理應用。每個內核主頻1 GHz,最高可達1.25 GHz,可以進行160 km/s 次浮點運算,功耗不到10 w。每個內核擁有32 kBL1P、32 kB L1D、512 kBL2內存,4 MB 多核共享內存,8 192 個多用途硬件隊列,支持DMA 傳輸。處理器網絡性能優(yōu)越,支持雙千兆網口,帶有由1 個數(shù)據(jù)包加速器和1 個安全加速器組成的網絡協(xié)處理器[1-2]。此外,C6678 的拓展資源豐富,支持PCle、Serial RapidIO[3]、Gigabit Ethernet 以及HyperLink 等多種高速接口。
JPEG 是第一個國際圖像壓縮標準,能夠在提供良好的壓縮性能的同時,具有比較好的重建質量,被廣泛應用于圖像、視頻處理領域,尤其適用于互聯(lián)網和數(shù)碼相機,網站上80 %的圖像都采用了JPEG 壓縮標準。
該編碼算法步驟如下:源圖像數(shù)據(jù)分成8×8的數(shù)據(jù)塊,通過DCT 變換將8×8 的數(shù)據(jù)塊變換為DCT 系數(shù),數(shù)據(jù)塊按從左到右、從上到下的順序處理,根據(jù)量化表對DCT 系數(shù)進行量化,DCT 系數(shù)按Z 字形方式排序,其中直流系數(shù)采用差分脈沖編碼,交流系數(shù)采用行程編碼,最后經過二次編碼輸出壓縮圖像數(shù)據(jù)[4]。
JPEG 編碼算法分解為以下7 個模塊:
1)初始化;2)DCT 變換;3)量化;4)Z 形掃描;5)直流系數(shù)(DC)編碼;6)交流系數(shù)(AC)編碼;7)熵編碼。
考慮模塊間的耦合性、結合性以及模塊間通信,將DCT 變換、量化和Z 形掃描合并為DCT 子系統(tǒng),將DC 編碼、AC 編碼和熵編碼合并為編碼子系統(tǒng),將模塊或子系統(tǒng)映射到多核DSP 內核上。JPEG編碼算法采用任務并行模式[5],將算法的模塊或子系統(tǒng)映射到C6678 處理器內核上,應用多核DSP 并行程序設計方法實現(xiàn)算法的任務級并行處理和核間高效通信。
圖1 編碼并行實現(xiàn)框圖
DCT 子系統(tǒng)和編碼子系統(tǒng)涉及大量復雜運算,直接制約了編碼速度。因此,采用了3 條任務并行流水線來進行處理,分別為CORE1 和CORE4、CORE2 和CORE5、CORE3 和CORE6。CORE1、2 和3 并行進行DCT 變換,后級的CORE4、5 和6 分別接收CORE1、2 和3 的數(shù)據(jù),進行編碼,這樣把算法映射到多個DSP 核,變換與編碼流水線并行處理,提高了編碼速度。具體實現(xiàn)機制如下:
1)初始化和同步[6-9]
C6678 處理器共有8 個C66x 內核,命名為CORE0~CORE7,每個內核分別進行初始化,然后同步執(zhí)行。
* CORE0 初始化:接收源圖像數(shù)據(jù)并存儲在DDR3 上、初始化6 個EDMA3[10-11]通道;
*CORE1、2 和3 初始化:根據(jù)設定的圖像壓縮質量初始化量化表,CORE1、2 初始化亮度量化表,CORE3 初始化色度量化表;
* CORE4、5 和6 初始化:直流、交流系數(shù)Huffman 編碼表初始化,生成相應的直流、交流系數(shù)Huffman 碼字;
*CORE7 初始化(保留):傳輸壓縮圖像數(shù)據(jù)初始化。
每個內核初始化結束,調用Ipc_start 函數(shù)進入同步等待狀態(tài),直到所有內核都調用Ipc_start 函數(shù)進入同步狀態(tài),各個內核上的程序繼續(xù)執(zhí)行。
2)內核間任務調度和通信
根據(jù)SYS/BIOS 實時操作系統(tǒng)線程調度機制[7-9]和內核間通信機制,為并行JPEG 編碼系統(tǒng)選取合適的任務調度方式,并實現(xiàn)內核間高效通信。CORE0 與CORE1、2、3 間的通信采用最小通信模式,CORE1 與CORE4、CORE2 與CORE5、CORE3與CORE6 間的通信采用消息傳遞模式[5]。
基于C6678 的并行JPEG 編碼系統(tǒng)的任務調度過程如下:
*各個內核初始化;
*EDMA 完成從DDR3[12-13]到MSM_BUF 的源圖像數(shù)據(jù)傳輸后,CORE0 發(fā)送Notify 到CORE1、2和3;
* CORE1、2 和3 接收Notify,然后分別調用Task_dct 任務。Task_dct 任務從MSM 緩沖區(qū)[14]取源圖像數(shù)據(jù),并完成DCT 變換、量化和Z 字形掃描后,發(fā)送包含DCT 系數(shù)的Message 到對應的CORE4、CORE5 和CORE6;
* CORE4、CORE5 和CORE6 接收Message,然后分別調用Task_enc 任務。Task_enc 任務從Message 中讀取DCT 系數(shù),并對DC 和AC 系數(shù)編碼,最后Huffman 編碼輸出壓縮圖像數(shù)據(jù)到MSM_OUT 存儲區(qū)。
基于C6678 的并行JPEG 編碼系統(tǒng)的整個處理流程如圖2 所示。
本文設計的基于C6678 的JPEG 編碼系統(tǒng)采用任務并行方式,各內核執(zhí)行的任務單一,可以針對具體的任務進行優(yōu)化。由于不同任務的計算復雜度不同,任務并行很難實現(xiàn)各內核間實時負載平衡,系統(tǒng)性能受限于計算負載最大的處理核[15]。
JPEG 編碼算法中計算量較大的模塊是DCT 子系統(tǒng)和編碼子系統(tǒng),測試這兩個子系統(tǒng)的運行時間(包括初始化時間和處理時間),如DCT 子系統(tǒng)中,初始化時間對量化表進行初始化,處理時間對數(shù)據(jù)塊進行DCT 變換、量化和Z 字形掃描等。測試數(shù)據(jù)為多個8×8 的源圖像數(shù)據(jù)塊,實驗結果如表1 所示,測試平臺是C6678 處理器,主頻是1 GHz。
表1 DCT 與Huffman 子系統(tǒng)與測試結果
程序執(zhí)行時,各個子系統(tǒng)只初始化一次,因此,初始化時間對于子系統(tǒng)的計算量影響有限。DCT 子系統(tǒng)處理一個數(shù)據(jù)塊的處理時間是1 266 ns,而編碼子系統(tǒng)的處理時間是4 570 ns,編碼子系統(tǒng)的計算量遠大于DCT 子系統(tǒng)的計算量,編碼子系統(tǒng)制約了系統(tǒng)的實時處理能力。隨著數(shù)據(jù)塊數(shù)量的增加,子系統(tǒng)的初始化時間不變,但單個數(shù)據(jù)塊的平均處理時間略有下降。若想進一步提高基于C6678 的并行JPEG 編碼系統(tǒng)的實時處理能力,最好的方法是繼續(xù)優(yōu)化編碼子系統(tǒng)。
圖2 系統(tǒng)處理流程圖
把相同復雜度的JPEG 編碼算法程序分別在單核DSP 和多核DSP 處理器上運行,單核DSP 處理器采用C6678 處理器的單個C66x 內核,多核DSP處理器采用C6678 處理器。對比編碼系統(tǒng)的處理能力,實驗結果如表2 所示。測試源圖像來自光電跟蹤儀,分辨率為768*576。
表2 系統(tǒng)測試結果
JPEG 編碼算法復雜度基本相同(為實現(xiàn)算法的并行處理,多核DSP 平臺上算法略有改動),比較不同JPEG 編碼系統(tǒng)處理同一源圖像數(shù)據(jù)的時間,基于C6678 的并行JPEG 編碼系統(tǒng)的運行時間為13 ms,系統(tǒng)的處理能力是基于單核系統(tǒng)的5 倍。
基于TI 公司C6678 處理器,采用任務并行模式,將算法的模塊或子系統(tǒng)映射到C6678 處理器多個內核上,實現(xiàn)了JPEG 編碼算法的任務級并行處理和核間高效通信。測試結果表明,基于C6678 的JPEG 編碼系統(tǒng)是基于C66x 單核系統(tǒng)的5 倍,這說明該系統(tǒng)充分發(fā)揮了多核DSP 的性能優(yōu)勢,大幅度縮短了壓縮編碼時間,提高了視頻圖像壓縮效率。