999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于TMS320C6416的JPEG編碼器優化實現

2014-08-07 12:08:38王國樹聶友偉胡友鵬秦先全林嘉宇
微處理機 2014年4期
關鍵詞:指令優化

王國樹,聶友偉,胡友鵬,秦先全,林嘉宇

(1.西藏軍區77505部隊,拉薩850000;2.沈陽軍區65042部隊,沈陽110035;3.國防科學技術大學電子科學與工程學院,長沙410073)

基于TMS320C6416的JPEG編碼器優化實現

王國樹1,聶友偉2,胡友鵬1,秦先全1,林嘉宇3

(1.西藏軍區77505部隊,拉薩850000;2.沈陽軍區65042部隊,沈陽110035;3.國防科學技術大學電子科學與工程學院,長沙410073)

結合TI公司TMS320C6416的結構和特點,在分析JPEG編碼器結構特點的基礎上,闡述了在實現JPEG編碼中對算法的軟件并行優化實現所做的工作,并在工程中用匯編語言實現了JPEG編碼器。在主頻為600MHz的TMS320C6416 DSP上處理4008×2672大小的圖像數據,在滿足一定編碼圖像質量的前提下,編碼器編碼速度達到2幀/秒。

TMS320C6416;JPEG標準;并行;優化;超長指令字

1 概 論

TMS320C6416[1]芯片是TI公司推出的新一代并行處理的定點數字信號處理器。它的主頻最高可達1.1GHz,最高處理能力達8800MIPS,非常適用于大尺寸靜態圖像和視頻的編解碼器,其市場應用前景十分廣泛。JPEG是由聯合圖像專家組(JPEG)制定的第一個圖像壓縮國際標準,于1992年正式發布。雖然在高壓縮比的情況下JPEG2000的壓縮性能比JPEG出色,但是在低壓縮比時二者的性能差不多,而JPEG的算法要簡單得多,有利于硬件實現。在詳細分析JPEG中的關鍵模塊并進行優化的基礎上,進行匯編語言編程并實現了JPEG編碼器。

1.1 TMS320C6416 DSP介紹

實現的硬件選用TI公司的TMS320C6416[2],它的結構如圖1所示。

圖1 TMS320C6416的CPU結構圖

TMS320C6416 DSP主頻最高為1.1GHz,采用超長指令字VLIW結構:擁有兩個各自獨立的數據通道DA1和DA2;64個32-bit長的通用寄存器(分為A、B兩組,每組32個);8個獨立功能單元(.L1、.S1、.M1、.D1、.L2、.S2、.M2、.D2);6個算術運算單元ALU(32-/40-bit),支持每時鐘周期單32-bit、雙16-bit或者四個8-bit算術運算;2個乘法器支持每時鐘周期4個16×16-bit乘法運算(32-bit結果)或者8個8×8-bit乘法運算(16-bit結果);采用L1/L2兩級高速緩存結構:128K-bit程序高速緩存L1P、128K-bit數據高速緩存L1D、8M-bit內存L2(RAM/Cache可設置)。

1.2 JPEG標準[3]分析

JPEG標準是靜止圖像壓縮標準[4]的一種,其編碼器和解碼器框圖如圖2所示。上方為編碼器結構,下方為解碼器結構。編碼器包括預處理、離散余弦變換[5]、量化和熵編碼[6]四個模塊。解碼為編碼的逆過程。

圖2 JPEG編解碼器結構框圖

編碼器將經過預處理(主要是水平位移,使數據關于0對稱分布)的圖像數據首先進行DCT變換,將圖像數據從空間域變換到頻率域,經過變換之后,空間域中的能量全部轉移到頻率域中,總能量不變,但能量將會重新分布,在空間域中,能量分布具有一定的隨機性。由于圖像有一定的空域相關性,頻率域中能量在大部分情況下,集中于零空間頻率或低空間頻率對應的變換頻率系數,從而使具有相關性圖像的相關性減少。同時由于能量集中于零空間頻率和低空間頻率所對應的頻率域矩陣元素中,所以對這些元素分配較多的比特數,而對能量較少的元素分配較少的比特數或不分配比特數,變換域中分配的總比特數可以比原圖像的總比特數少,這樣就可以使圖像所需傳送的比特數減少,達到壓縮的目的。

DCT后的系數要進行量化,量化之前要將DCT系數進行Zig-Zag掃描,量化是圖像進行有損壓縮的關鍵,量化步長的大小決定圖像壓縮率的高低。

最后對量化后的數據進行HUFFMAN編碼形成碼流輸出。每個8×8模塊量化后的第一個分量為DC分量,對其與前一模塊的DC差分值進行HUFFMAN編碼,后面的63個分量皆是AC分量。對其游程進行HUFFMAN編碼,HUFFMAN編碼實際就是一個查表編碼的過程,HUFFMAN表是JPEG標準事先作大量統計形成的,固定在發送端和接收端。

2 JPEG編碼算法的并行優化設計

為在DSP上實現JPEG編碼器,必須充分發揮TMS320C6416的并行處理能力。從它的硬件結構出發,最大限度地利用其8個功能單元、64個寄存器、L1/L2兩級高速緩存,使用并行算法[7]使程序無沖突地并行執行。一般來說,并行算法是指在各種并行計算機上求解問題和處理數據的算法,其本質是把多任務映射到多處理機中執行,或是把多維問題映射到具有特定拓撲結構的多處理機上求解。其目標是盡可能減少時間復雜性,通常是通過增加空間復雜性來實現。并行算法根據實現算法所依賴的并行機類型的不同可以分為單指令流多數據流(SIMD)算法、多指令流多數據流(MIMD)算法、分布式算法、超大規模集成(VLSI)算法。根據實現算法所依賴的器件級別的不同可以分為機器級并行、芯片級并行(如多內核)、線程級并行(如超線程Hyper-Threading)、指令級并行(如超長指令字VLIW)。

2.1 超長指令字VLIW[1]

由于TMS320C6416的CPU芯片采用超長指令字VLIW結構,一個指令周期可以執行多條指令,故可以使用超長指令字 VLIW 并行。由于TMS320C6416擁有A、B兩個寄存器組(各32個寄存器),故可采用寄存器組并行,如DCT模塊,量化模塊。由于TMS320C6416擁有四個運算器功能單元(L、S、D、M),故還可以采用運算器功能單元并行,每個指令周期對L、S、D、M運算器功能單元進行操作,如量化模塊,游程計算等等。幾乎所有的模塊都會用到功能單元并行,雖然某些情況下不可能是完全的四個功能單元同時并行。這樣采用超長指令字VLIW,一個指令周期CPU最多可以同時并行執行8條指令。

2.2 數據并行

數據并行需要數據間是互相獨立的,在DCT、量化模塊時每個8×8子塊之間數據是相互獨立的,可以考慮數據并行優化,游程計算以及HUFFMAN編碼模塊每個8×8子塊之間的數據是相互關聯的,不適合用數據并行進行處理。

2.3 轉移指令的優化

由于轉移指令有5個延遲間隙,過多的轉移將導致資源浪費,尤其對于核心模塊來說,將嚴重影響編碼速度。轉移指令主要集中于子函數調用與返回和循環體中,其優化方法主要有:子函數合并、循環體直接展開和轉移指令直接利用三種方法。

子函數合并就是將盡可能多的子函數合并為一個函數,尤其是將JPEG中多重循環體中的核心子函數合并,如JPEG的量化、游程計算、HUFFMAN編碼、碼字輸出。一個子函數調用與返回耗費17個指令周期,子函數合并將會極大提高編碼速度,盡量避免調用子函數。

循環體直接展開,對于多重循環體的控制特別適用。若外層循環少,可將內層循環體直接展開,結合轉移條件,減少層與層之間的相互聯系。循環展開的限制在于展開之后所需變量個數與寄存器數目之間的矛盾,即生命太長問題。(所謂生命太長問題,即變量值需要保持較長時間,也就是說較長時間的占用該寄存器,使該寄存器無法用于其它變量,從而使在一定時間段內可使用寄存器的數目減少)。對于8×8子塊而言,一般不會存在沖突。因此對于JPEG量化,游程計算等尤為適用。

轉移指令直接利用是指直接利用轉移指令的5個延遲間隙。對于子函數的調用與返回,調用時可直接利用轉移指令的延遲間隙對子函數返回地址進行保護、傳遞子函數的自變量、保護需要保留的變量,返回時可直接利用轉移指令的延遲間隙傳遞子函數的返回值、恢復保留的變量。在不改變控制轉移條件寄存器值的條件下,可直接利用轉移指令的5個延遲間隙進行數據處理,如變量初始化等。

2.4 軟件流水線技術

軟件流水[8]是編排循環指令,使循環的多次迭代能夠并行執行的技術。TMS320C6416的并行資源使得在前次迭代尚未完成之前可以開始一個新的循環迭代。軟件流水的目的就是盡可能早的開始一個新循環迭代,可以通過畫圖表的方式來確定每一個指令周期每個迭代所進行的節拍,從而確定什么時候可以開始一個新的迭代。對于多周期循環來說,主要步驟為:①確定最小迭代間隔(即前一迭代的第一節拍和緊隨其后的迭代的第一節拍之間的指令周期間隔);②畫相關圖表;③匯編資源安排;④最后匯編。在根據所畫圖表安排匯編指令時,需注意資源沖突和生命太長的問題。在JPEG中,水平位移、量化之間有很強的依賴性,必須使用軟件流水線技術來減少過多的延遲時間。

2.5 浮點數定點化實現

TMS320C6416是TI公司推出的新一代并行處理的定點數字信號處理器,其定點運算指令里的操作數都是整數,但JPEG編碼數值運算涉及浮點小數運算。浮點數需要乘一個比例因子并取整變成整型數后,才能使用定點運算指令。在轉換中必須保持系統比例因子的一致性。通常用Q格式數表示浮點數。以32位定點數為例:最高位為符號位,如規定符號位后即是小數點位置,則稱為Q31格式數,其表示的實際小數范圍是 -1≤x≤0.999999999534339。設以q代表所定義的Q格式值,則定點數Xq與實際小數x之間的轉換關系為:

選定Q格式值之后,應將系統的全部數值轉換成同一格式的定點數,稱為定標,即確定同一標尺。當發生溢出時,一般將所有參與操作的數右移1位,即除以2,然后再做加減運算。

2.6 內存調度的考慮

DSP存儲空間的配置十分重要。TMS320C6416的片內存儲器采用L1/L2兩級高速緩存結構:程序高速緩存L1P、數據高速緩存L1D均為16Kbyte;L2內存為1024Kbyte(SRAM/Cache可設置),可根據需要設置為32、64、128、256Kbyte的高速緩存,余下部分為SRAM。外部存儲器為SDRAM。CPU對不同存儲器的訪問速度是不同的:對片內存儲器的L1 Cache的訪問速度最快,為CPU的主頻速度;對片內存儲器的L2 Cache的訪問速度次之,為CPU的主頻速度的1/2;對片內存儲器的L2余下的SRAM和片外SDRAM的訪問速度最慢,為100~133MHz。因此合理配置和使用存儲空間,對編碼系統的整體運行效率影響很大,尤其是對編碼內部核心循環存儲空間的配置其影響更大(如8×8子塊DCT、量化、游程計算、HUFFMAN編碼等)。應該盡可能地把訪問最頻繁的常數表和代碼段裝入L1 Cache,相對較頻繁的變量和數據裝入L2 Cache,如果過大,則再考慮裝入SRAM和片外SDRAM。

程序高速緩存L1P采用直接映射結構,行大小為32字節,可以緩存512組,1次存取一行。當CPU的取指訪問L1P缺失但命中L2時,CPU會阻塞8個周期;若L2也缺失,則CPU一直阻塞,直到L2從外部存儲器取回相應取指包并傳回到L1P、再返回給CPU為止。

數據高速緩存L1D采用雙路組聯想結構,行大小為64字節,可以緩存128組。L1D和L2內存之間有一個4入口的寫緩存。L1D存儲器分為8組32位寬度的存儲體(bank),這些存儲體都是單通信口的,每周期只允許被訪問一次。L1D允許CPU每周期訪問兩次。對L1D的訪問導致CPU阻塞的情形有四種[6-7]:L1D存儲體(bank)沖突,L1D讀缺失阻塞,L1D寫缺失阻塞,監聽(snoops)阻塞。

L2高速緩存Cache采用4路組聯想結構,行大小為128字節,存儲器分為8組64位寬度的存儲體(bank),對L2的訪問要2個周期才完成。對L2的訪問導致CPU阻塞的情形有四種[9-10]:L2存儲體(bank)沖突,L2訪問沖突,L2 Cache讀缺失阻塞,L2 Cache寫缺失阻塞。

除開CPU第一次對L1P的取指訪問和對L1D的取數據訪問會發生強制缺失而不可避免外,其余的阻塞都可以通過內存調度來避免或減少阻塞周期。內存調度的基本原則為時空分布原則:時間上依次調用的在空間上的分布也依次放置,即在內存調度上按照在程序運行中的時間順序進行配置程序代碼和數據。

2.7 其它優化方法

除以上并行優化方法之外,還有另外一些基本方法,如:

常數表的使用。為了提高編碼算法的實現效率,減少運算的實際開銷,盡可能把需運行時計算的參數做成常數數值或常數表,尤其是對于核心循環中的變量參數計算,從而將運行時的計算轉化為編譯時的計算。對于熵編碼尤為適用。

移位指令代替乘除運算。對于基于2的指數次冪的乘除運算,可以采用移位指令代替乘除運算。移位指令是單周期指令,比乘除運算可以節約許多指令周期。

除法優化。對于非基于2的指數次冪的除法運算,TMS320C6000系列DSP沒提供直接進行除法運算的指令,需自行編寫除法算法。編寫除法匯編程序時,可利用條件減SUBC指令對除法進行優化。SUBC匯編指令格式為:SUBC(.L)src1,src2,dst,執行的操作為條件減:src1減去src2,若結果非負則將結果左移1位加1后送入dst;否則將src1左移1位后送入dst。

3 JPEG編碼器實現的性能測試

實驗測試采用尺寸大小為4008×2672的大圖像,圖像壓縮質量控制參數設為85(圖像質量較好),運行于PC機(CPU:Celeron(R)2.20GHz,內存256M)操作系統為Windows XP。測得對應圖像壓縮比為7.995:1,對4008×2672的大圖像來說共有501×334個8×8子塊,每8×8子塊平均輸出字節為64/8=8,每個子塊因為輸出字節數的不同所耗資源也不相同,所以只能選取一些樣本進行統計。選取樣本的時候主要從壓縮比,輸出字節最多的塊,最少的塊,輸出字節數主要分布范圍等方面來選取具有代表性的子塊進行統計,選取的樣本子塊輸出字節平均值為8。實驗中DCT模塊調用C64××的匯編化模塊,量化模塊調用C62××的匯編化模塊,并結合TMS320C6416的硬件結構特點,對HUFFMAN編碼模塊進行匯編語言編程,最終在TMS32C6416上實現JPEG編碼器。

JPEG編碼器匯編并行優化后,在CCS上實現的總體性能與匯編并行優化前的對比如表1所示。

表1 匯編并行優化前后性能對比表

從表1可以看出,匯編并行優化后編碼核心模塊的資源消耗大大降低。與匯編優化前相比,效率提高了84.06%,處理速度是匯編優化前的6.3倍;與無優化時相比,效率提高達93.67%,處理速度是無優化處理速度的15.8倍。這對壓縮速度有較高要求的工程硬件實現有很大幫助。實驗中采用的壓縮比為7.995:1,如果對某些工程應用中圖像質量要求不是很高的情況下,可以將壓縮比調得更高,HUFFMAN編碼模塊資源消耗將進一步降低,壓縮性能會得到更大的提高,當然壓縮速度的提高是以犧牲圖像質量為代價的,具體的工程應用中要考慮哪方面因素更重要,來協調速度和質量這一對矛盾。

4 結束語

通過優化實現的JPEG編碼器性能為:在主頻為600MHz的TMS320C6416芯片上對4008×2672大小的圖片進行處理,在一定的保真度條件下,可以做到編碼速度達2幀/秒(因為4008×2672的大圖像共有501×334個8×8子塊,所以大圖像總耗1388×501×334=232,259,592 cycles,600M/233M=2.57≥2,壓縮比為7.995:1)。適用于某些對大圖像實時壓縮傳輸的工程項目。而且還可以通過調整壓縮圖像質量來調整壓縮處理速度,以適應對編碼速度、實時性要求高的應用場合或者對圖像質量要求高的應用場合。

[1]Texas Instruments Incorporated,TMS320C64x Technical Overview[Z].January 2001.

[2]Texas Instruments Incorporated,TMS320C6416T DSK Technical Reference[Z].Nov.2004.

[3]G KWallace.the JPEG Still Picture Compression Standard[J].Consumer Electronics,IEEE Transactions,1992,38(2):xviii-xxxiv.

[4]胡棟.靜止圖象編碼的基本方法與國際標準[M].北京:北京郵電大學出版社,2003.

[5]婁莉.基于離散余弦變換的圖像壓縮技術[J].現代電子技術,2004(19):103-105.

[6]孫學巖.熵編碼的壓縮編碼原理與方法[J].濰坊學院學報,2004(6):86-87.

[7]George R Desrochers.Principles of Parallel and Multiprocessing[M].University of Michigan:Intertext Publications,McGraw-Hill,1987.

[8]Texas Instruments Incorporated,T MS320C6000 Optimizing Compiler User’s Guide[Z].May 2004.

[9]Texas Instruments Incorporated,TMS320C6000 DSP Cache User’s Guide[Z].May 2003.

[10]Texas Instruments Incorporated,TMS320C6000 Peripherals Reference Guide[Z].February 2001.

Im plementation of JPEG Encoder Based on TMS320C6416

WANG Guo-shu1,NIE You-wei2,HU You-peng1,QIN Xian-quan1,LIN Jia-yu3
(1.Army 77505,TibetMilitary Region,Lhasa 850000,China;2.Army 65042,Shenyang Military Region,Shenyang 110035,China;3.School of Electronics Science and Engineering,National University of Defense Technology,Changsha 410073,China)

Integrating the TMS320C6416 structure and characteristics of TI company,based on analyzing the structural characteristics of JPEG coding devices,this paper describes realizing parallelism and optimization of algorithm software in the process of realizing JPEG coding,and implements JPEG coding deviceswith assembler language in project.The image data in size of4008×2672 is processed by TMS320C6416 DSP with the main frequency of 600MHz,and the coding rate reaches two frames per second after conforming to the quality of the coding image.

TMS320C6416;JPEG Standard;Parallel;Optimize;VLIW

10.3969/j.issn.1002-2279.2014.04.025

TN919.81

:A

:1002-2279(2014)04-0078-05

王國樹(1975-),男,重慶市北碚區人,碩士研究生,主研方向:信號處理。

2013-10-12

猜你喜歡
指令優化
聽我指令:大催眠術
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
由“形”啟“數”優化運算——以2021年解析幾何高考題為例
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
基于低碳物流的公路運輸優化
現代企業(2015年2期)2015-02-28 18:45:09
主站蜘蛛池模板: 国产在线自乱拍播放| 亚洲国产精品无码AV| 国产亚洲男人的天堂在线观看| 欧美精品xx| 日本国产精品| 99免费在线观看视频| 亚洲最新地址| 中文字幕资源站| 国产精品一区在线观看你懂的| 黄色网在线免费观看| 国产成人狂喷潮在线观看2345| 农村乱人伦一区二区| www.91在线播放| 国产门事件在线| 欧美性爱精品一区二区三区| 欧美成人精品一区二区| 69视频国产| 91极品美女高潮叫床在线观看| 99热国产在线精品99| 久久99国产综合精品1| 欧美在线国产| 久久夜色精品| 国产乱子伦视频三区| 国产成人麻豆精品| 中文字幕1区2区| 亚洲a免费| 26uuu国产精品视频| 欧美影院久久| 亚洲精品无码人妻无码| 国产主播一区二区三区| 国产h视频免费观看| 欧美精品aⅴ在线视频| 色噜噜在线观看| 亚洲视频无码| 精品色综合| 色婷婷亚洲综合五月| 国产成人91精品免费网址在线| 成人免费网站久久久| 在线观看亚洲天堂| 亚洲视频a| 国产精品熟女亚洲AV麻豆| 无码综合天天久久综合网| 精品久久久久久中文字幕女| 秋霞一区二区三区| 色婷婷成人网| 国产超碰在线观看| 全部免费特黄特色大片视频| 色偷偷一区| 香蕉在线视频网站| 国产在线视频欧美亚综合| 亚洲swag精品自拍一区| 亚洲AV电影不卡在线观看| 六月婷婷精品视频在线观看| 大香伊人久久| 少妇精品在线| 国产91视频免费| 永久免费AⅤ无码网站在线观看| 久久99热这里只有精品免费看| 天天色综网| 国内丰满少妇猛烈精品播| 欧美另类第一页| 国产精品永久久久久| 国产熟睡乱子伦视频网站| 亚洲欧洲天堂色AV| 四虎永久免费地址在线网站| 国产农村妇女精品一二区| 999国产精品| 全裸无码专区| 波多野结衣一区二区三区AV| 欧美一级在线看| 国产精品精品视频| 欧美日韩精品一区二区视频| 久久天天躁夜夜躁狠狠| 丰满人妻久久中文字幕| 99这里只有精品在线| 欧美19综合中文字幕| 国产精品极品美女自在线| 狼友av永久网站免费观看| 激情六月丁香婷婷| 日韩欧美在线观看| 这里只有精品在线| 欧美亚洲香蕉|