• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于TMS320C6416的JPEG編碼器優(yōu)化實現(xiàn)

      2014-08-07 12:08:38王國樹聶友偉胡友鵬秦先全林嘉宇
      微處理機 2014年4期
      關(guān)鍵詞:子塊編碼器指令

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

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

      基于TMS320C6416的JPEG編碼器優(yōu)化實現(xiàn)

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

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

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

      TMS320C6416;JPEG標準;并行;優(yōu)化;超長指令字

      1 概 論

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

      1.1 TMS320C6416 DSP介紹

      實現(xiàn)的硬件選用TI公司的TMS320C6416[2],它的結(jié)構(gòu)如圖1所示。

      圖1 TMS320C6416的CPU結(jié)構(gòu)圖

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

      1.2 JPEG標準[3]分析

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

      圖2 JPEG編解碼器結(jié)構(gòu)框圖

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

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

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

      2 JPEG編碼算法的并行優(yōu)化設(shè)計

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

      2.1 超長指令字VLIW[1]

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

      2.2 數(shù)據(jù)并行

      數(shù)據(jù)并行需要數(shù)據(jù)間是互相獨立的,在DCT、量化模塊時每個8×8子塊之間數(shù)據(jù)是相互獨立的,可以考慮數(shù)據(jù)并行優(yōu)化,游程計算以及HUFFMAN編碼模塊每個8×8子塊之間的數(shù)據(jù)是相互關(guān)聯(lián)的,不適合用數(shù)據(jù)并行進行處理。

      2.3 轉(zhuǎn)移指令的優(yōu)化

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

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

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

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

      2.4 軟件流水線技術(shù)

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

      2.5 浮點數(shù)定點化實現(xiàn)

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

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

      2.6 內(nèi)存調(diào)度的考慮

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

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

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

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

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

      2.7 其它優(yōu)化方法

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

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

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

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

      3 JPEG編碼器實現(xiàn)的性能測試

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

      JPEG編碼器匯編并行優(yōu)化后,在CCS上實現(xiàn)的總體性能與匯編并行優(yōu)化前的對比如表1所示。

      表1 匯編并行優(yōu)化前后性能對比表

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

      4 結(jié)束語

      通過優(yōu)化實現(xiàn)的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)。適用于某些對大圖像實時壓縮傳輸?shù)墓こ添椖?。而且還可以通過調(diào)整壓縮圖像質(zhì)量來調(diào)整壓縮處理速度,以適應對編碼速度、實時性要求高的應用場合或者對圖像質(zhì)量要求高的應用場合。

      [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]婁莉.基于離散余弦變換的圖像壓縮技術(shù)[J].現(xiàn)代電子技術(shù),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-),男,重慶市北碚區(qū)人,碩士研究生,主研方向:信號處理。

      2013-10-12

      猜你喜歡
      子塊編碼器指令
      基于八叉樹的地震數(shù)據(jù)多級緩存方法
      基于八叉樹的地震數(shù)據(jù)分布式存儲方法研究
      聽我指令:大催眠術(shù)
      基于特征值算法的圖像Copy-Move篡改的被動取證方案
      基于波浪式矩陣置換的稀疏度均衡分塊壓縮感知算法
      ARINC661顯控指令快速驗證方法
      LED照明產(chǎn)品歐盟ErP指令要求解讀
      電子測試(2018年18期)2018-11-14 02:30:34
      基于FPGA的同步機軸角編碼器
      基于PRBS檢測的8B/IOB編碼器設(shè)計
      JESD204B接口協(xié)議中的8B10B編碼器設(shè)計
      電子器件(2015年5期)2015-12-29 08:42:24
      定边县| 图们市| 墨脱县| 荃湾区| 威信县| 岑巩县| 广安市| 宁明县| 米泉市| 庄浪县| 云龙县| 南木林县| 兴义市| 英山县| 贵州省| 常宁市| 新密市| 肥城市| 古丈县| 淅川县| 周口市| 长垣县| 茌平县| 鄂伦春自治旗| 辰溪县| 且末县| 颍上县| 嘉鱼县| 石首市| 莱州市| 陇南市| 东丽区| 吉水县| 大竹县| 锦屏县| 临漳县| 尤溪县| 浦县| 黄浦区| 佛山市| 庄河市|