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

AVS熵解碼在OMAP3530上的實現及優化

2014-09-17 10:27:18牛麗君
電視技術 2014年3期
關鍵詞:指令優化

宋 娜,牛麗君,張 剛

(太原理工大學信息工程學院,山西太原 030024)

AVS熵解碼在OMAP3530上的實現及優化

宋 娜,牛麗君,張 剛

(太原理工大學信息工程學院,山西太原 030024)

結合DSP硬件結構,首先對指數哥倫布碼算法的實現進行結構上的調整,其次對熵解碼部分的手工匯編實現高效的流水編排,最后結合熵解碼數據的存儲訪問對cache進行優化。仿真結果與傳統的C語言相比,程序運行周期降低了約21.49%,碼率也顯著提高。

AVS;熵解碼;OMAP3530;優化

AVS標準(Audio Video Coding Standard)是我國擁有自主知識產權的標準,具有計算復雜程度低、專利費用低、應用前景廣闊等特點。OMAP3530是由TI公司推出的一款基于DSP TMS320C64X內核的視頻處理器平臺,由于功耗低、高性能、高并行等優點,已經成為實現智能手機首選的理想平臺,為其增添實時圖像編解碼功能具有明顯的應用價值。其中DSP內核有8個獨立的功能單元,每個時鐘周期內最多可并行處理8條32位指令[1]。體系結構上采用了超長指令結構,具有雙16 bit擴充功能,可以在一個周期內完成雙16 bit的加、乘、比較或移位等操作。本文結合AVS熵解碼算法的特點,首先調整了k階指數哥倫布碼算法的結構,然后通過比較、跳轉指令實現了ce(v)語法元素解析的碼表切換,進而采用流水技術優化手工匯編,最后對cache進行優化,解碼速度顯著提高[2]。

1 AVS熵解碼的主要模塊

AVS熵解碼包括對語法元素的解析和殘差數據的解碼。解碼過程中,兩者均以指數哥倫布碼的形式映射成二進制比特流。AVS標準中采用ce(v)映射方式描述殘差數據,采用0到3階指數哥倫布碼進行解析,再通過查表得到run和level值。最后通過level值比較判斷,更新碼表解析下一個殘差系數。

1.1 k階指數哥倫布碼

指數哥倫布碼比特流由前綴、后綴及分隔符“1”三部分組成。前綴是n個連續的0,后綴為n+k(其中k為指數哥倫布碼的階數)個比特,分隔符“1”介于前綴與后綴之間[3]。解碼時,首先從比特流的當前位置開始查找以0開頭的比特位,直到找到第一個非0位置,并把0的個數記為n,根據下式計算出codenum值。

其中,read_bits(n+k)返回(n+k)比特碼流對應的實際值。

1.2 ce(v)語法元素解析

如果trans_coeff<59,則trans_coeff=codenum;否則,解析下一個ce(v)語法元素,得到一個新的codenum。在AVS標準中熵解碼部分規定了19個碼表,其中亮度塊部分幀內幀間各7個,色度塊部分5個,不同的碼表中ce(v)語法元素解析采用不同階數(0、1、2、3階)的指數哥倫布碼[4]。k規定如下:

1)trans_coeff<59時:

(1)以abslevel為索引按照以下方法查找得到碼表的tabnum:

(2)以tabnum為索引查找最終得到k值:

2)trans_coeff≥59時:

需要解析下一個ce(v)語法元素,此時需要根據不同的k值來解析得到一個新的codenum(<59)和escape_level_diff,其中escape_level_diff與k值有關

最終結合1)查找碼表。

1.3 解碼流程

解碼過程中以k階指數哥倫布碼返回值codenum作為索引查找碼表,最終生成run和level數組。解碼流程如圖1所示。

圖1 解碼流程圖

如果trans_coeff<59,則以該值作為索引在當前碼表中查找run、level值;如果trans_coeff≥59,解析下一個ce(v)語法元素,得到新的codenum值和escape_level_diff值,由此可以根據以下式子計算出run、level值

其中,refabslevel值由run值確定,如果run>Maxrun,refabslevel=1;否則,以run為索引查找當前碼表得到;escape_level_diff由ce(v)語法元素解析得到。

最后,保存run、level值,更新當前碼表及指數哥倫布碼階數,解析下一個殘差系數,直到trans_coeff=EOB跳出循環,最終返回生成的run、level數組。

2 AVS熵解碼在DSP平臺的實現及優化

2.1 指數哥倫布碼的實現及優化

式(1)是實現AVS指數哥倫布碼的算法。由于指數哥倫布碼的碼長由碼字內容決定,而在AVS碼流中一次讀取碼流位數不超過32 bit,因此在讀取碼字時需要逐位讀出,會導致過多的函數調用,容易打斷處理器的流水操作,不利于編譯器對程序的優化。本文結合指數哥倫布碼的結構特點,并充分利用DSP資源,提出了以下實現方案:

由式(1)可知:2n+k即為分隔符“1”所在比特位置的實際值,因此可以將式(1)變形為

其中,read_bits(n+k+1)返回n+k+1比特碼流的實際值,稱其為哥倫布碼字值。即最終的碼字值codenum為哥倫布碼字值與2k之差。由式(6)可得指數哥倫布碼實現方法:

1)確定階數k和需要解碼的二進制碼流;

2)求出分隔符“1”與后綴部分比特流的實際值,即哥倫布碼字值,然后計算出2k;

3)將2)中兩個值作差,求得碼字值codenum。

結合DSP的硬件結構,本文的算法可一次性讀取多個比特碼流,拼接并返回待處理的32位碼,放入緩存區。然后利用式(5)進行計算。與傳統AVS算法相比,減小了算法復雜程度,指令占用的CPU周期也大幅度減少,且便于調試。

2.2 AVS熵解碼算法端的實現及優化

在OMAP3530上實現AVS熵解碼采用的是TI公司提供的用C/C++和匯編語言開發的CCS軟件平臺,其中算法的實現部分主要是評估測試代碼,進而優化得到實時解碼的要求[5]。結合AVS熵解碼的原理與TMS320C64x+硬件結構特點,算法實現模塊主要從手工匯編和cache性能入手。首先采用手工匯編優化,最后結合cache性能進行優化,提高命中率。

2.2.1 手工匯編優化

手工匯編代碼的實現主要是利用軟件流水技術對指令進行調度安排,使其能夠在不同部件內交迭處理。結合C64x+DSP的結構,本文主要做了以下優化:

1)減小寄存器相關性

只有不相關的指令才可以并行執行,即在同一個指令周期內寄存器調用不能過于頻繁。手工匯編中寄存器不是隨機分配的,而是在程序執行前人為地將寄存器分配到各個變量中,因此減小寄存器相關性可以提高手工匯編的并行效率,降低程序執行周期。

2)減少多周期指令

在C64x+DSP指令集中,乘法指令延遲為1個周期,讀取與轉移指令分別為4、5個延遲周期。本文中用左移指令SHL代替乘法指令,成對使用傳送指令MVKL、MVKH代替讀取指令,將碼表中的碼字值用傳送指令賦值給已分配好的寄存器。這樣可以大大減少所占用的周期,而且方便了寄存器間各變量的調用。

3)并行指令

CPU運行時,在一個指令周期內可以獨立運行8條指令。在根據codenum作為索引查找run、level值過程中,由于二者的值無任何關聯性,可以分別分配到A組、B組寄存器中,由此在同一個周期中便可以采用不同的功能單元并行執行含有run、level變量的指令。

4)使用打包、解包指令

查找出run、level值后,分別將其保存到2個不同的寄存器數組中,增加了寄存器存儲時間的消耗。可以先將二者打包后放在一個32位的寄存器中,逆掃描模塊再進行解包處理,節省了寄存器存儲所用的時間,而后續讀取所需時間基本沒變。

5)使用具有函數功能的指令

在C64x+DSP指令集中,使用匯編指令LMBD就可以很容易獲得當前的寄存器在第一個非0系數前含有0的個數,可以迅速查找出前綴0的個數,快速確定n值,簡化了程序,提高了執行效率。

6)填充NOP延遲間隙

使用多周期指令會出現延遲間隙,在數值上等于指令原操作數讀取到執行的結果可以被訪問所需的周期數。本文涉及到碼表的選擇與切換,有大量的條件轉移指令含有5個周期的指令延遲間隙,系統自動安排NOP指令,造成浪費。所以使用轉移指令后,盡量填充有用指令確保這5個周期的間隙不被浪費。

2.2.2 cache 優化

cache是介于主內存與CPU之間的高速緩存器,優化cache可以發揮CPU的高速度,提高內存訪問與外部存儲器訪問的速度。本文采用OMAP3530 EVM主板存儲,內部存儲包括分別用于數據處理和程序處理的一級數據存儲器L1D、一級程序存儲器L1P,大小分別為80 kbyte、32 kbyte,且二者都可以配置成普通存儲器SRAM和高速緩存 cache或者二者的結合;二級緩存 L2,大小為96 kbyte,作為程序和數據的共享空間[6]。工作原理是:CPU處理數據是從cache里查找數據,若cache命中,直接把數據從cache中取出,否則為cache miss,從下一級存儲器中取出需要的數據,CPU處于等待狀態時幾乎不進行任何操作,為cache缺失停頓時間,等待CPU恢復工作后將后續相關數據裝入cache中。本文主要采用的方法是合理分配數據和程序的內存,調整代碼的存放,改變CPU的訪問順序,從而提高cache命中率。

1)數據cache優化主要是從調整算法結構的數據存儲入手,避免數據的重復使用。優化時,將亮度和色度數據分開解碼,且將兩者的原始數據分別單獨傳輸,待數據傳出并存放在DDR中,最后集中處理。此外,對cache字節重新定義,確保解碼階段數據需求保持在32 kbyte內。最后利用TMS320C64X提供的編譯指令#pragma DATA_SECTION,對解碼數據進行合理分配存儲。

2)程序cache優化與數據優化是一樣的,亮度和色度解碼的數據分開獨立進行,將熵解碼循環體所在宏塊層改為幀層,幀內、幀間解碼程序分開,盡量把程序分段,使每段能夠控制在32 kbyte內。最終,每個循環體的指令數不超過cache容量,所以只有剛進入循環體初次執行時才會使主存裝載指令到cache中,從而大幅度減少cache缺失和cache指令執行的次數,在優化的基礎上也使開支降到最低。

在CCS3.3中用Profile Setup工具設置cache選項,然后用Cache Tune顯示cache效率問題出現的區間,使之可視化,得到圖2、圖3仿真圖。

用Profile性能分析工具可測出:一級緩存中數據cache命中率為97.28%,程序cache命中率為99.41%。

3 實驗結論

在OMAP3530上正確實現熵解碼的條件下,本文在XD560 Emulator上進行了仿真,并利用CCS3.3提供的Profile性能分析工具對選用的1~15 Mbit/s不同碼率的標清尺寸AVS碼流進行測試。解碼測試條件有:幀率為25 Hz,解碼50幀。考慮到圖像大小不影響指數哥倫布解碼的效率,本文選擇CIF大小的系列進行測試,其中包括

圖2 L1Dcache命中仿真圖(截圖)

圖3 L1Pcache命中仿真圖(截圖)

ice,soccer,football,highway,news,flower六個 YUV 系列。經過比較計算得出表1結果。

表1 不同碼率序列測試結果

由表1可知,用匯編實現的熵解碼程序周期較C語言平均降低約21.49%,碼率也顯著提高,進而提高了熵解碼的解碼效率。

4 結束語

本文在研究指數哥倫布碼數學特性的基礎上提出了一種新的指數哥倫布解碼算法,又高效利用手工匯編的優化方法及提高cache命中率,最終實現了對AVS熵解碼的優化。在保證正確解碼的前提下進行解碼效率的測試,結果表明,本文針對AVS熵解碼的優化方法不僅縮短了解碼周期,且顯著提高了解碼速度。

:

[1]宋建斌,詹舒波,馬麗.基于通用DSP的視頻解碼器的優化實現[J].電信科學,2011,27(8):84-88.

[2]雷濤,周進,吳欽章.DSP實時圖像處理軟件優化方法研究[J].計算機工程,2012,38(14):177-180.

[3]劉小成,曹默.H.264解碼器設計與算法優化[J].微計算機信息,2011(5):90-92.

[4]李輯,陳穎琪,王慈.基于PC的AVS視頻解碼器軟件優化[J].電視技術,2010,34(11):40-42.

[5]魏曉君.AVS解碼器環路濾波的優化及實現[J].電視技術,2013,37(5):23-25.

[6]李方慧,王飛,何佩琨.TMS320C600系列DSPs原理與應用[M].2版.北京:電子工業出版,2003.

張 剛(1953— ),博士生導師,主研音視頻編解碼和計算機通信等。

Implementation and Optimization of AVS Entropy Decoding on OMAP3530

SONG Na,NIU Lijun,ZHANG Gang

(College of Information Engineering,Taiyuan University of Technology,Taiyuan 030024,China)

In this paper,combining DSP hardware architecture,the implementation of Exp-Golomb code algorithm is firstly adjusted in structure.Then highly efficient pipeline arrangement is achieved on the hand assembly of entropy decoding part.Finally the cache is optimized combining the storage and access of entropy decoding data.The results demonstrate that the program operation cycle reduces by about 21.49%compared with traditional C code,and the code rate also improves significantly.

AVS;entropy decoding;OMAP3530;optimization

TN919.8

A

【本文獻信息】宋娜,牛麗君,張剛.AVS熵解碼在OMAP3530上的實現及優化[J].電視技術,2014,38(3).

國家自然科學基金項目(60772101)

宋 娜(1989— ),女,碩士生,主研視頻解碼;

牛麗君(1987— ),女,碩士生,主研視頻圖像編解碼;

責任編輯:魏雨博

2013-05-30

猜你喜歡
指令優化
聽我指令:大催眠術
超限高層建筑結構設計與優化思考
房地產導刊(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
主站蜘蛛池模板: 97成人在线视频| 鲁鲁鲁爽爽爽在线视频观看| 国产在线观看高清不卡| 久久精品亚洲中文字幕乱码| 亚洲综合网在线观看| 国产91透明丝袜美腿在线| 欧美国产日韩另类| 在线国产你懂的| 亚洲无码视频一区二区三区| 久久人体视频| 波多野结衣久久高清免费| 国产午夜福利在线小视频| 在线毛片网站| 免费av一区二区三区在线| 国产精品美人久久久久久AV| 國產尤物AV尤物在線觀看| 国产精品欧美在线观看| 久久永久精品免费视频| 日韩中文无码av超清| 一级爆乳无码av| 亚洲天堂2014| 任我操在线视频| 精品免费在线视频| 国内精品九九久久久精品| 国产女人18水真多毛片18精品 | 无码中文字幕精品推荐| 中文字幕在线看| 精品国产成人a在线观看| 免费在线视频a| 一本色道久久88综合日韩精品| 五月婷婷丁香综合| 一区二区三区四区在线| 中文字幕亚洲精品2页| 国产乱人视频免费观看| 99伊人精品| 狠狠色综合网| 中文毛片无遮挡播放免费| 亚洲系列中文字幕一区二区| 国产99热| 性视频一区| 国产欧美专区在线观看| 幺女国产一级毛片| 尤物精品视频一区二区三区| 69av免费视频| 免费福利视频网站| 色婷婷亚洲十月十月色天| 天天操天天噜| av性天堂网| 欧美成a人片在线观看| 亚洲中文在线视频| 婷婷99视频精品全部在线观看| 伊人色综合久久天天| 亚洲日韩精品欧美中文字幕 | 熟妇丰满人妻av无码区| 欧美性久久久久| 波多野结衣AV无码久久一区| 永久成人无码激情视频免费| 国产玖玖视频| 一级福利视频| 国产原创第一页在线观看| 亚洲精品国产成人7777| 亚洲成人黄色网址| 91色爱欧美精品www| 欧美在线一级片| 亚洲手机在线| 国产AV无码专区亚洲精品网站| 91麻豆精品视频| 久久久久久国产精品mv| 国产99在线| 亚洲第一国产综合| 91久久性奴调教国产免费| 伊人国产无码高清视频| www欧美在线观看| 精品国产一区91在线| 亚洲综合色婷婷中文字幕| 国模极品一区二区三区| 永久免费av网站可以直接看的 | 无码精品福利一区二区三区| 美女内射视频WWW网站午夜| 色悠久久久久久久综合网伊人| P尤物久久99国产综合精品| 国产精品亚洲五月天高清|