資料介紹
數(shù)字視頻產(chǎn)品需求近些年出現(xiàn)猛增。主流應(yīng)用包括視頻通信、視頻監(jiān)控與工業(yè)自動化,而最熱門的要算娛樂應(yīng)用,如 DVD、HDTV、衛(wèi)星電視、標(biāo)清(SD)或高清 (HD) 機(jī)頂盒、數(shù)碼相機(jī)與 HD 攝像機(jī)、高端顯示器(LCD、等離子顯示器、DLP)以及個人攝像機(jī)等。這些應(yīng)用都向高質(zhì)量的視頻編解碼算法及其標(biāo)準(zhǔn)提出巨大需求,目前主流壓縮標(biāo)準(zhǔn)主要有MPEG2、MPEG4和H.264/AVC,而針對這些編解碼標(biāo)準(zhǔn)有各種各樣的實(shí)現(xiàn)方案。本文主要探討基于TI 的C64系列DSP的視頻解碼算法標(biāo)準(zhǔn)系統(tǒng)優(yōu)化過程中需要考慮的若干因素。
TI的C64系列DSP以其強(qiáng)大的處理能力被廣泛用于視頻處理領(lǐng)域,然而由于大家對C64系列DSP的結(jié)構(gòu)、指令、的理解程度不一樣,造成算法實(shí)現(xiàn)時的效果有許多的差異。具體體現(xiàn)在實(shí)現(xiàn)算法時所使用的CPU的資源上。如實(shí)現(xiàn)H.264 MP@D1解碼時所占用CPU的資源上,會有所差異,或者是所包含的算法工具子集上,如實(shí)現(xiàn)H.264 MP@D1解碼時使用CAVLC而不使用CABAC。造成這些差異,主要原因有如下因素:
算法關(guān)鍵模塊的優(yōu)化
算法系統(tǒng)集成時Memory的管理
算法系統(tǒng)集成時的EDMA的資源分配管理
本文從這三方面逐步探討算法優(yōu)化集成中需要考慮的若干因素。
算法關(guān)鍵模塊的優(yōu)化
一般而言,對于目前主流視頻解壓縮標(biāo)準(zhǔn)都有類似的很消耗DSP CPU的模塊,如H.264/AVC、MPEG4、AVS等編碼中運(yùn)動矢量搜索很占用資源,而且這些模塊在整個系統(tǒng)實(shí)現(xiàn)過程中調(diào)用相當(dāng)頻繁,因此我們首先找出這些模塊,這點(diǎn)TI的CCS提供了工程剖析工具(Profile),可以很快找到整個工程中占用DSP CPU資源最多的模塊;然后對這些模塊進(jìn)行優(yōu)化。
對這些關(guān)鍵算法模塊的優(yōu)化我們分可以分三步進(jìn)行,如圖2所示,先認(rèn)真分析這部分代碼,并進(jìn)行相應(yīng)的調(diào)整,如盡量減少有判斷跳轉(zhuǎn)的代碼,特別是for循環(huán)中,判斷跳轉(zhuǎn)會打斷軟件流水。使用的方法,可是使用查表或者使用_cmpgtu4、_cmpeq4等Intrinsics來代替比較判斷指令,從而巧妙替代判斷跳轉(zhuǎn)語句。同時使用TI的CCS中所提供的#pragma提供編譯器盡量多的信息,這些信息包括for循環(huán)的次數(shù)信息、數(shù)據(jù)對齊信息等。如果經(jīng)過這部分優(yōu)化無法滿足系統(tǒng)要求,則對這部分模塊使用線性匯編實(shí)現(xiàn),線性匯編是介于C和匯編之間的一種語言實(shí)現(xiàn)形式,可以控制指令的使用,而不必特別關(guān)心寄存器、功能單元(S、D、M、L)的分配和使用,使用線性匯編一般會比使用C語言具有更高的執(zhí)行效率。如果線性匯編還無法滿足要求,則使用匯編實(shí)現(xiàn),要編寫出高并行、深軟件流水的匯編需要經(jīng)過畫相關(guān)圖,創(chuàng)建時序表(Scheduling table)等步驟,由于篇幅所限,這里就不熬述。
表1
優(yōu)化選項(xiàng):-pm, -o3,基于C64plus內(nèi)核,C+Instrinsics 是指在C中使用Instrinsics。
表1是運(yùn)動搜索中所需要的計(jì)算16×16宏塊SAD值時,不同方式下所消耗的DSP CPU的周期數(shù)。由此可見,匯編實(shí)現(xiàn)所消耗的CPU的周期數(shù)最少,但前提是需要充分了解DSP CPU的結(jié)構(gòu)、指令以及算法模塊的結(jié)構(gòu),從而能夠編寫出高并行、深軟件流水的匯編,否則有可能所寫出的匯編還沒有線性匯編或者C效率更高。為此一個行之有效的方法是,充分利用TI所提供的算法庫中的函數(shù),因?yàn)樗惴◣熘械暮瘮?shù)都是已經(jīng)充分優(yōu)化過的算法模塊,而且大都提供對對應(yīng)的C、線性匯編和匯編源代碼,并有文檔進(jìn)行API介紹。
算法系統(tǒng)集成時Memory的管理
由于在基于DSP的嵌入式系統(tǒng)開發(fā)中,存儲資源特別是片內(nèi)高速存儲資源有限,在算法系統(tǒng)集成時Memory的管理對于提高整個系統(tǒng)的優(yōu)化是非常重要的,這一方面影響數(shù)據(jù)的讀取、搬移速度;另一方面還影響Cache的命中率,下面分程序和數(shù)據(jù)兩方面分析。
程序區(qū):最大原則是將經(jīng)常調(diào)度使用的算法模塊放片內(nèi)。為做到這點(diǎn),TI的CCS中提供了#pragma CODE_SECTION,可以把需要單獨(dú)控制存放的函數(shù)段從.text段中獨(dú)立出來,從而在.cmd文件中對這些函數(shù)段進(jìn)行單獨(dú)物理地址映射。還可以使用程序動態(tài)的方式,將需要運(yùn)行的代碼段先調(diào)度進(jìn)片內(nèi)memory,如H.264/AVC中CAVLC和CABAC兩個算法模塊具有互斥性,因此可以將這兩個算法模塊放在片外而且對應(yīng)于片內(nèi)同一塊運(yùn)行區(qū),在運(yùn)行其中某一個算法模塊之前,先將其調(diào)入片內(nèi),從而充分利用片內(nèi)有限的高速存儲區(qū)。程序區(qū)的管理考慮到一級程序Cache(L1 P)的命中率,最好將具有先后執(zhí)行順序的函數(shù)按地址先后順序配置在
程序空間中,同時對代碼比較大的處理函數(shù)將其拆分成小函數(shù)。
數(shù)據(jù)區(qū):在視頻標(biāo)準(zhǔn)編解碼中,由于數(shù)據(jù)塊都很大,如一幀D1 4:2:0的圖像有622k大小,而且在編解碼中都需要開3~5幀甚至更多的緩沖幀,因此數(shù)據(jù)基本上無法在片內(nèi)存放。為此在系統(tǒng)的Memory優(yōu)化管理中,需要開C64系列DSP的二級Cache(對于TMS320DM642用于視頻編解碼中二級Cache開64k的情況比較多)。同時最好將放片外的被Cache所映射的視頻緩沖區(qū)的數(shù)據(jù)以128 byte對齊,這是因?yàn)镃64系列的DSP的二級Cache的每行大小為128 byte,以128 byte對齊有利于Cache的刷新和一致性維護(hù)。
TI的C64系列DSP以其強(qiáng)大的處理能力被廣泛用于視頻處理領(lǐng)域,然而由于大家對C64系列DSP的結(jié)構(gòu)、指令、的理解程度不一樣,造成算法實(shí)現(xiàn)時的效果有許多的差異。具體體現(xiàn)在實(shí)現(xiàn)算法時所使用的CPU的資源上。如實(shí)現(xiàn)H.264 MP@D1解碼時所占用CPU的資源上,會有所差異,或者是所包含的算法工具子集上,如實(shí)現(xiàn)H.264 MP@D1解碼時使用CAVLC而不使用CABAC。造成這些差異,主要原因有如下因素:
算法關(guān)鍵模塊的優(yōu)化
算法系統(tǒng)集成時Memory的管理
算法系統(tǒng)集成時的EDMA的資源分配管理
本文從這三方面逐步探討算法優(yōu)化集成中需要考慮的若干因素。
算法關(guān)鍵模塊的優(yōu)化
一般而言,對于目前主流視頻解壓縮標(biāo)準(zhǔn)都有類似的很消耗DSP CPU的模塊,如H.264/AVC、MPEG4、AVS等編碼中運(yùn)動矢量搜索很占用資源,而且這些模塊在整個系統(tǒng)實(shí)現(xiàn)過程中調(diào)用相當(dāng)頻繁,因此我們首先找出這些模塊,這點(diǎn)TI的CCS提供了工程剖析工具(Profile),可以很快找到整個工程中占用DSP CPU資源最多的模塊;然后對這些模塊進(jìn)行優(yōu)化。
對這些關(guān)鍵算法模塊的優(yōu)化我們分可以分三步進(jìn)行,如圖2所示,先認(rèn)真分析這部分代碼,并進(jìn)行相應(yīng)的調(diào)整,如盡量減少有判斷跳轉(zhuǎn)的代碼,特別是for循環(huán)中,判斷跳轉(zhuǎn)會打斷軟件流水。使用的方法,可是使用查表或者使用_cmpgtu4、_cmpeq4等Intrinsics來代替比較判斷指令,從而巧妙替代判斷跳轉(zhuǎn)語句。同時使用TI的CCS中所提供的#pragma提供編譯器盡量多的信息,這些信息包括for循環(huán)的次數(shù)信息、數(shù)據(jù)對齊信息等。如果經(jīng)過這部分優(yōu)化無法滿足系統(tǒng)要求,則對這部分模塊使用線性匯編實(shí)現(xiàn),線性匯編是介于C和匯編之間的一種語言實(shí)現(xiàn)形式,可以控制指令的使用,而不必特別關(guān)心寄存器、功能單元(S、D、M、L)的分配和使用,使用線性匯編一般會比使用C語言具有更高的執(zhí)行效率。如果線性匯編還無法滿足要求,則使用匯編實(shí)現(xiàn),要編寫出高并行、深軟件流水的匯編需要經(jīng)過畫相關(guān)圖,創(chuàng)建時序表(Scheduling table)等步驟,由于篇幅所限,這里就不熬述。
表1
優(yōu)化選項(xiàng):-pm, -o3,基于C64plus內(nèi)核,C+Instrinsics 是指在C中使用Instrinsics。
表1是運(yùn)動搜索中所需要的計(jì)算16×16宏塊SAD值時,不同方式下所消耗的DSP CPU的周期數(shù)。由此可見,匯編實(shí)現(xiàn)所消耗的CPU的周期數(shù)最少,但前提是需要充分了解DSP CPU的結(jié)構(gòu)、指令以及算法模塊的結(jié)構(gòu),從而能夠編寫出高并行、深軟件流水的匯編,否則有可能所寫出的匯編還沒有線性匯編或者C效率更高。為此一個行之有效的方法是,充分利用TI所提供的算法庫中的函數(shù),因?yàn)樗惴◣熘械暮瘮?shù)都是已經(jīng)充分優(yōu)化過的算法模塊,而且大都提供對對應(yīng)的C、線性匯編和匯編源代碼,并有文檔進(jìn)行API介紹。
算法系統(tǒng)集成時Memory的管理
由于在基于DSP的嵌入式系統(tǒng)開發(fā)中,存儲資源特別是片內(nèi)高速存儲資源有限,在算法系統(tǒng)集成時Memory的管理對于提高整個系統(tǒng)的優(yōu)化是非常重要的,這一方面影響數(shù)據(jù)的讀取、搬移速度;另一方面還影響Cache的命中率,下面分程序和數(shù)據(jù)兩方面分析。
程序區(qū):最大原則是將經(jīng)常調(diào)度使用的算法模塊放片內(nèi)。為做到這點(diǎn),TI的CCS中提供了#pragma CODE_SECTION,可以把需要單獨(dú)控制存放的函數(shù)段從.text段中獨(dú)立出來,從而在.cmd文件中對這些函數(shù)段進(jìn)行單獨(dú)物理地址映射。還可以使用程序動態(tài)的方式,將需要運(yùn)行的代碼段先調(diào)度進(jìn)片內(nèi)memory,如H.264/AVC中CAVLC和CABAC兩個算法模塊具有互斥性,因此可以將這兩個算法模塊放在片外而且對應(yīng)于片內(nèi)同一塊運(yùn)行區(qū),在運(yùn)行其中某一個算法模塊之前,先將其調(diào)入片內(nèi),從而充分利用片內(nèi)有限的高速存儲區(qū)。程序區(qū)的管理考慮到一級程序Cache(L1 P)的命中率,最好將具有先后執(zhí)行順序的函數(shù)按地址先后順序配置在
程序空間中,同時對代碼比較大的處理函數(shù)將其拆分成小函數(shù)。
數(shù)據(jù)區(qū):在視頻標(biāo)準(zhǔn)編解碼中,由于數(shù)據(jù)塊都很大,如一幀D1 4:2:0的圖像有622k大小,而且在編解碼中都需要開3~5幀甚至更多的緩沖幀,因此數(shù)據(jù)基本上無法在片內(nèi)存放。為此在系統(tǒng)的Memory優(yōu)化管理中,需要開C64系列DSP的二級Cache(對于TMS320DM642用于視頻編解碼中二級Cache開64k的情況比較多)。同時最好將放片外的被Cache所映射的視頻緩沖區(qū)的數(shù)據(jù)以128 byte對齊,這是因?yàn)镃64系列的DSP的二級Cache的每行大小為128 byte,以128 byte對齊有利于Cache的刷新和一致性維護(hù)。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- C64 PSU 251053 11替換板0.4.0開源
- 通用C64 1MB墨盒
- 使用PLCC封裝中通用64kb OTP Eprom替換C64系統(tǒng)PLA功能
- ezPLA C64 PLA替換板
- 如何將TMS32C64x優(yōu)化的聲碼器集成到TEB6416上的詳細(xì)概述 4次下載
- C64x視頻設(shè)備的差異基于DSP平臺運(yùn)行的不同的TMS320C64x+編碼解碼器 4次下載
- TMS320C64x+ DSP 大字節(jié)DSP庫 程序員參考 7次下載
- 基于NiosII軟核的視頻解碼系統(tǒng)優(yōu)化設(shè)計(jì) 1次下載
- XDAIS標(biāo)準(zhǔn),TI-DSP算法標(biāo)準(zhǔn)-中文版 0次下載
- 面向TI公司C6000系列DSP的電源系統(tǒng)設(shè)計(jì) 6次下載
- 在DSP上G.729A算法的優(yōu)化
- TI C64XX DSP特點(diǎn)及線性匯編程序分析
- 基于TMS320C64x DM64x的視頻編碼優(yōu)化
- 基于TMS320DM642的MPEG-4編碼軟件優(yōu)化設(shè)計(jì)
- AVS變換算法在C64x+DSP上的實(shí)現(xiàn)
- OpenHarmony標(biāo)準(zhǔn)系統(tǒng)C++公共基礎(chǔ)類庫案例:HelloWorld 219次閱讀
- OpenHarmony、輕量系統(tǒng)、小型系統(tǒng)、標(biāo)準(zhǔn)系統(tǒng)的差異 5405次閱讀
- 基于TMS320C6203 DSP芯片實(shí)現(xiàn)G.729ab聲碼器的應(yīng)用方案 2874次閱讀
- 基于TMS320F2812 DSP芯片實(shí)現(xiàn)視頻驅(qū)動程序的開發(fā)設(shè)計(jì) 3755次閱讀
- 利用DSP芯片實(shí)現(xiàn)MPEG-4視頻編碼的優(yōu)化設(shè)計(jì) 2120次閱讀
- 基于TI TMS320C6748定點(diǎn)/浮點(diǎn)DSP C674x處理器 2986次閱讀
- dsp tms320c6000基本作用的認(rèn)識 9580次閱讀
- DSP320C6000的指令列表匯集 1.1w次閱讀
- tms320c6000系列dsp編程工具與指南 淺談dsp編程 5367次閱讀
- FFMPEG視頻編解碼流程 H.264硬件編解碼實(shí)現(xiàn) 1.8w次閱讀
- 基于OMAP3730的低成本高清屏媒系統(tǒng)【DSP硬解碼】 1802次閱讀
- TI C6000系列DSP的片內(nèi)總線架構(gòu)、存儲系統(tǒng)和外設(shè) 5529次閱讀
- 基于DSP的視頻采集系統(tǒng)仿真設(shè)計(jì) 2111次閱讀
- 基于DSP的脫機(jī)視頻編/解碼系統(tǒng) 1294次閱讀
- 基于DSP的最小圖像采集處理系統(tǒng)設(shè)計(jì) 2375次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費(fèi)下載
- 0.00 MB | 1489次下載 | 免費(fèi)
- 2單片機(jī)典型實(shí)例介紹
- 18.19 MB | 91次下載 | 1 積分
- 3S7-200PLC編程實(shí)例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關(guān)電源原理及各功能電路詳解
- 0.38 MB | 9次下載 | 免費(fèi)
- 6基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
- 0.11 MB | 4次下載 | 免費(fèi)
- 7基于單片機(jī)和 SG3525的程控開關(guān)電源設(shè)計(jì)
- 0.23 MB | 3次下載 | 免費(fèi)
- 8基于單片機(jī)的紅外風(fēng)扇遙控
- 0.23 MB | 3次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費(fèi)
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費(fèi)
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費(fèi)
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費(fèi)
- 6接口電路圖大全
- 未知 | 30319次下載 | 免費(fèi)
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費(fèi)
- 8開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21539次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537791次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233045次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191183次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183277次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138039次下載 | 免費(fèi)
評論
查看更多