資料介紹
數字視頻產品需求近些年出現猛增。主流應用包括視頻通信、視頻監控與工業自動化,而最熱門的要算娛樂應用,如 DVD、HDTV、衛星電視、標清(SD)或高清 (HD) 機頂盒、數碼相機與 HD 攝像機、高端顯示器(LCD、等離子顯示器、DLP)以及個人攝像機等。這些應用都向高質量的視頻編解碼算法及其標準提出巨大需求,目前主流壓縮標準主要有MPEG2、MPEG4和H.264/AVC,而針對這些編解碼標準有各種各樣的實現方案。本文主要探討基于TI 的C64系列DSP的視頻解碼算法標準系統優化過程中需要考慮的若干因素。
TI的C64系列DSP以其強大的處理能力被廣泛用于視頻處理領域,然而由于大家對C64系列DSP的結構、指令、的理解程度不一樣,造成算法實現時的效果有許多的差異。具體體現在實現算法時所使用的CPU的資源上。如實現H.264 MP@D1解碼時所占用CPU的資源上,會有所差異,或者是所包含的算法工具子集上,如實現H.264 MP@D1解碼時使用CAVLC而不使用CABAC。造成這些差異,主要原因有如下因素:
算法關鍵模塊的優化
算法系統集成時Memory的管理
算法系統集成時的EDMA的資源分配管理
本文從這三方面逐步探討算法優化集成中需要考慮的若干因素。
算法關鍵模塊的優化
一般而言,對于目前主流視頻解壓縮標準都有類似的很消耗DSP CPU的模塊,如H.264/AVC、MPEG4、AVS等編碼中運動矢量搜索很占用資源,而且這些模塊在整個系統實現過程中調用相當頻繁,因此我們首先找出這些模塊,這點TI的CCS提供了工程剖析工具(Profile),可以很快找到整個工程中占用DSP CPU資源最多的模塊;然后對這些模塊進行優化。
對這些關鍵算法模塊的優化我們分可以分三步進行,如圖2所示,先認真分析這部分代碼,并進行相應的調整,如盡量減少有判斷跳轉的代碼,特別是for循環中,判斷跳轉會打斷軟件流水。使用的方法,可是使用查表或者使用_cmpgtu4、_cmpeq4等Intrinsics來代替比較判斷指令,從而巧妙替代判斷跳轉語句。同時使用TI的CCS中所提供的#pragma提供編譯器盡量多的信息,這些信息包括for循環的次數信息、數據對齊信息等。如果經過這部分優化無法滿足系統要求,則對這部分模塊使用線性匯編實現,線性匯編是介于C和匯編之間的一種語言實現形式,可以控制指令的使用,而不必特別關心寄存器、功能單元(S、D、M、L)的分配和使用,使用線性匯編一般會比使用C語言具有更高的執行效率。如果線性匯編還無法滿足要求,則使用匯編實現,要編寫出高并行、深軟件流水的匯編需要經過畫相關圖,創建時序表(Scheduling table)等步驟,由于篇幅所限,這里就不熬述。
表1
優化選項:-pm, -o3,基于C64plus內核,C+Instrinsics 是指在C中使用Instrinsics。
表1是運動搜索中所需要的計算16×16宏塊SAD值時,不同方式下所消耗的DSP CPU的周期數。由此可見,匯編實現所消耗的CPU的周期數最少,但前提是需要充分了解DSP CPU的結構、指令以及算法模塊的結構,從而能夠編寫出高并行、深軟件流水的匯編,否則有可能所寫出的匯編還沒有線性匯編或者C效率更高。為此一個行之有效的方法是,充分利用TI所提供的算法庫中的函數,因為算法庫中的函數都是已經充分優化過的算法模塊,而且大都提供對對應的C、線性匯編和匯編源代碼,并有文檔進行API介紹。
算法系統集成時Memory的管理
由于在基于DSP的嵌入式系統開發中,存儲資源特別是片內高速存儲資源有限,在算法系統集成時Memory的管理對于提高整個系統的優化是非常重要的,這一方面影響數據的讀取、搬移速度;另一方面還影響Cache的命中率,下面分程序和數據兩方面分析。
程序區:最大原則是將經常調度使用的算法模塊放片內。為做到這點,TI的CCS中提供了#pragma CODE_SECTION,可以把需要單獨控制存放的函數段從.text段中獨立出來,從而在.cmd文件中對這些函數段進行單獨物理地址映射。還可以使用程序動態的方式,將需要運行的代碼段先調度進片內memory,如H.264/AVC中CAVLC和CABAC兩個算法模塊具有互斥性,因此可以將這兩個算法模塊放在片外而且對應于片內同一塊運行區,在運行其中某一個算法模塊之前,先將其調入片內,從而充分利用片內有限的高速存儲區。程序區的管理考慮到一級程序Cache(L1 P)的命中率,最好將具有先后執行順序的函數按地址先后順序配置在
程序空間中,同時對代碼比較大的處理函數將其拆分成小函數。
數據區:在視頻標準編解碼中,由于數據塊都很大,如一幀D1 4:2:0的圖像有622k大小,而且在編解碼中都需要開3~5幀甚至更多的緩沖幀,因此數據基本上無法在片內存放。為此在系統的Memory優化管理中,需要開C64系列DSP的二級Cache(對于TMS320DM642用于視頻編解碼中二級Cache開64k的情況比較多)。同時最好將放片外的被Cache所映射的視頻緩沖區的數據以128 byte對齊,這是因為C64系列的DSP的二級Cache的每行大小為128 byte,以128 byte對齊有利于Cache的刷新和一致性維護。
TI的C64系列DSP以其強大的處理能力被廣泛用于視頻處理領域,然而由于大家對C64系列DSP的結構、指令、的理解程度不一樣,造成算法實現時的效果有許多的差異。具體體現在實現算法時所使用的CPU的資源上。如實現H.264 MP@D1解碼時所占用CPU的資源上,會有所差異,或者是所包含的算法工具子集上,如實現H.264 MP@D1解碼時使用CAVLC而不使用CABAC。造成這些差異,主要原因有如下因素:
算法關鍵模塊的優化
算法系統集成時Memory的管理
算法系統集成時的EDMA的資源分配管理
本文從這三方面逐步探討算法優化集成中需要考慮的若干因素。
算法關鍵模塊的優化
一般而言,對于目前主流視頻解壓縮標準都有類似的很消耗DSP CPU的模塊,如H.264/AVC、MPEG4、AVS等編碼中運動矢量搜索很占用資源,而且這些模塊在整個系統實現過程中調用相當頻繁,因此我們首先找出這些模塊,這點TI的CCS提供了工程剖析工具(Profile),可以很快找到整個工程中占用DSP CPU資源最多的模塊;然后對這些模塊進行優化。
對這些關鍵算法模塊的優化我們分可以分三步進行,如圖2所示,先認真分析這部分代碼,并進行相應的調整,如盡量減少有判斷跳轉的代碼,特別是for循環中,判斷跳轉會打斷軟件流水。使用的方法,可是使用查表或者使用_cmpgtu4、_cmpeq4等Intrinsics來代替比較判斷指令,從而巧妙替代判斷跳轉語句。同時使用TI的CCS中所提供的#pragma提供編譯器盡量多的信息,這些信息包括for循環的次數信息、數據對齊信息等。如果經過這部分優化無法滿足系統要求,則對這部分模塊使用線性匯編實現,線性匯編是介于C和匯編之間的一種語言實現形式,可以控制指令的使用,而不必特別關心寄存器、功能單元(S、D、M、L)的分配和使用,使用線性匯編一般會比使用C語言具有更高的執行效率。如果線性匯編還無法滿足要求,則使用匯編實現,要編寫出高并行、深軟件流水的匯編需要經過畫相關圖,創建時序表(Scheduling table)等步驟,由于篇幅所限,這里就不熬述。
表1
優化選項:-pm, -o3,基于C64plus內核,C+Instrinsics 是指在C中使用Instrinsics。
表1是運動搜索中所需要的計算16×16宏塊SAD值時,不同方式下所消耗的DSP CPU的周期數。由此可見,匯編實現所消耗的CPU的周期數最少,但前提是需要充分了解DSP CPU的結構、指令以及算法模塊的結構,從而能夠編寫出高并行、深軟件流水的匯編,否則有可能所寫出的匯編還沒有線性匯編或者C效率更高。為此一個行之有效的方法是,充分利用TI所提供的算法庫中的函數,因為算法庫中的函數都是已經充分優化過的算法模塊,而且大都提供對對應的C、線性匯編和匯編源代碼,并有文檔進行API介紹。
算法系統集成時Memory的管理
由于在基于DSP的嵌入式系統開發中,存儲資源特別是片內高速存儲資源有限,在算法系統集成時Memory的管理對于提高整個系統的優化是非常重要的,這一方面影響數據的讀取、搬移速度;另一方面還影響Cache的命中率,下面分程序和數據兩方面分析。
程序區:最大原則是將經常調度使用的算法模塊放片內。為做到這點,TI的CCS中提供了#pragma CODE_SECTION,可以把需要單獨控制存放的函數段從.text段中獨立出來,從而在.cmd文件中對這些函數段進行單獨物理地址映射。還可以使用程序動態的方式,將需要運行的代碼段先調度進片內memory,如H.264/AVC中CAVLC和CABAC兩個算法模塊具有互斥性,因此可以將這兩個算法模塊放在片外而且對應于片內同一塊運行區,在運行其中某一個算法模塊之前,先將其調入片內,從而充分利用片內有限的高速存儲區。程序區的管理考慮到一級程序Cache(L1 P)的命中率,最好將具有先后執行順序的函數按地址先后順序配置在
程序空間中,同時對代碼比較大的處理函數將其拆分成小函數。
數據區:在視頻標準編解碼中,由于數據塊都很大,如一幀D1 4:2:0的圖像有622k大小,而且在編解碼中都需要開3~5幀甚至更多的緩沖幀,因此數據基本上無法在片內存放。為此在系統的Memory優化管理中,需要開C64系列DSP的二級Cache(對于TMS320DM642用于視頻編解碼中二級Cache開64k的情況比較多)。同時最好將放片外的被Cache所映射的視頻緩沖區的數據以128 byte對齊,這是因為C64系列的DSP的二級Cache的每行大小為128 byte,以128 byte對齊有利于Cache的刷新和一致性維護。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- C64 PSU 251053 11替換板0.4.0開源
- 通用C64 1MB墨盒
- 使用PLCC封裝中通用64kb OTP Eprom替換C64系統PLA功能
- ezPLA C64 PLA替換板
- 如何將TMS32C64x優化的聲碼器集成到TEB6416上的詳細概述 4次下載
- C64x視頻設備的差異基于DSP平臺運行的不同的TMS320C64x+編碼解碼器 4次下載
- TMS320C64x+ DSP 大字節DSP庫 程序員參考 7次下載
- 基于NiosII軟核的視頻解碼系統優化設計 1次下載
- XDAIS標準,TI-DSP算法標準-中文版 0次下載
- 面向TI公司C6000系列DSP的電源系統設計 6次下載
- 在DSP上G.729A算法的優化
- TI C64XX DSP特點及線性匯編程序分析
- 基于TMS320C64x DM64x的視頻編碼優化
- 基于TMS320DM642的MPEG-4編碼軟件優化設計
- AVS變換算法在C64x+DSP上的實現
- OpenHarmony標準系統C++公共基礎類庫案例:HelloWorld 219次閱讀
- OpenHarmony、輕量系統、小型系統、標準系統的差異 5405次閱讀
- 基于TMS320C6203 DSP芯片實現G.729ab聲碼器的應用方案 2874次閱讀
- 基于TMS320F2812 DSP芯片實現視頻驅動程序的開發設計 3755次閱讀
- 利用DSP芯片實現MPEG-4視頻編碼的優化設計 2120次閱讀
- 基于TI TMS320C6748定點/浮點DSP C674x處理器 2986次閱讀
- dsp tms320c6000基本作用的認識 9580次閱讀
- DSP320C6000的指令列表匯集 1.1w次閱讀
- tms320c6000系列dsp編程工具與指南 淺談dsp編程 5367次閱讀
- FFMPEG視頻編解碼流程 H.264硬件編解碼實現 1.8w次閱讀
- 基于OMAP3730的低成本高清屏媒系統【DSP硬解碼】 1802次閱讀
- TI C6000系列DSP的片內總線架構、存儲系統和外設 5529次閱讀
- 基于DSP的視頻采集系統仿真設計 2111次閱讀
- 基于DSP的脫機視頻編/解碼系統 1294次閱讀
- 基于DSP的最小圖像采集處理系統設計 2375次閱讀
下載排行
本周
- 1新概念模擬電路第四冊信號處理電路電子書免費下載
- 10.69 MB | 50次下載 | 免費
- 2SL6341B USB3.2 Gen1X1 接口的的4口HUB
- 2.94 MB | 5次下載 | 免費
- 3FT-7800R對講機維修手冊附原理圖
- 3.35 MB | 2次下載 | 免費
- 4和芯潤德USB3.0HUB芯片SL6341設計資料
- 2.58 MB | 2次下載 | 免費
- 5TPS80032原理圖核對表
- 74.95KB | 2次下載 | 免費
- 6使用CR6850C設計并制作12V5A開關電源
- 1.53 MB | 2次下載 | 2 積分
- 7設計院eplan 500多頁項目圖紙
- 21.43 MB | 2次下載 | 1 積分
- 82.1 MHz類放大器電感選擇指南
- 598.3KB | 1次下載 | 免費
本月
- 1新概念模擬電路第四冊信號處理電路電子書免費下載
- 10.69 MB | 50次下載 | 免費
- 2SW6308V原理圖設計指南
- 0.75 MB | 14次下載 | 1 積分
- 3SW6308V三口多協議升降壓移動電源SOC中文手冊
- 1.61 MB | 14次下載 | 1 積分
- 4純電動汽?的主要部件及?作原理
- 5.76 MB | 12次下載 | 5 積分
- 5800VA純正弦波逆變器的參考設計
- 2.96MB | 12次下載 | 免費
- 6GP328和GP88S對講機的維修實列資料合集免費下載
- 0.03 MB | 10次下載 | 10 積分
- 7SW6308V寄存器手冊
- 1.08 MB | 10次下載 | 1 積分
- 8IP5385_DEMO開發資料
- 1.96 MB | 8次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935115次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420061次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191364次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183329次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73805次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65985次下載 | 10 積分
評論
查看更多