基于TMS320DM3730的H.264編碼器移植與優(yōu)化方法研
該指令的作用是將對象symbol排列到constant指定的列邊界上以方便讀取。例如DM3730是支持對非對齊雙字的一次性讀取,但是如果內(nèi)存地址對齊,同一個時鐘周期內(nèi)可以同時進(jìn)行兩組雙字的讀取,而如果不對齊則只能讀取一組。因此在定義數(shù)組時使用DATA_ALIGN指令,可以大大減少數(shù)據(jù)讀取時內(nèi)存地址不對齊的情況,增加程序的并行性。
3)使用最小循環(huán)次數(shù)指令MUST_ITERATE
最小循環(huán)次數(shù)指令的完整語法是:
#pragma MUST_ITERATE(min,max,multiple)
其中min和max分別代表了循環(huán)的最小和最大迭代次數(shù),multiple表明了循環(huán)次數(shù)是其倍數(shù)。使用最小循環(huán)次數(shù)程序指令可以通過通知編譯器至少進(jìn)行多少次循環(huán),那樣編譯器可以將min次循環(huán)進(jìn)行展開進(jìn)行軟件流水,進(jìn)行循環(huán)之間并行處理,提高程序運(yùn)行速度。
3.4 匯編代碼的優(yōu)化
C語言編譯器通常只能完成大部分的工作,這個階段的C語言代碼在DSP端運(yùn)行的效率并不是很高,為了進(jìn)一步改善性能,對那些算法簡單但計算量大且使用很頻繁的函數(shù)使用匯編語言進(jìn)行編寫實現(xiàn),可以大大提高程序運(yùn)行速度。例如快速DCT變換、SAD、量化等算法過程可以考慮用匯編語言來編寫。
線性匯編是TI公司簡化C6000系列DSP的匯編語言而開發(fā)設(shè)計的,介于高級語言和機(jī)器語言之間。線性匯編語言的指令系統(tǒng)和普通的匯編語言的指令系統(tǒng)基本相同。在編寫線性匯編語言的時候是不需要考慮到指令的延時、寄存器的使用和功能單元的分配,C6000編譯器提供了匯編優(yōu)化器進(jìn)行匯編優(yōu)化,會綜合指令的延時、寄存器的使用和功能單元的分配進(jìn)行優(yōu)化,讓線性匯編語言盡量的進(jìn)行軟件流水和指令的并行處理,提高匯編的運(yùn)行速度。DM3730的DSP核為C64x+系列,線性匯編在上面是可以完美運(yùn)行的。本文引用地址:http://butianyuan.cn/article/192789.htm
表2所示為使用CCS中的profile工具測量的一些函數(shù)的C語言函數(shù)和線性匯編函數(shù)在DM3730上運(yùn)行時鐘周期對比。
4 實驗結(jié)果分析
x264編碼器移植成功后,使用標(biāo)準(zhǔn)CIF格式視頻序列對移植和優(yōu)化后的x264編碼器在DM3730上進(jìn)行測試,測試結(jié)果如下表3所示。
從表3可以看出,x264程序經(jīng)過優(yōu)化后,峰值信噪比有略微的下降,但該下降不影響整體視頻效果,而編碼速度得到了大大的提高。
5 結(jié)束語
文中基于DM3730平臺,描述了進(jìn)行x264編碼器移植應(yīng)該注意的主要問題,然后通過編譯選項優(yōu)化、內(nèi)存優(yōu)化、C語言代碼的優(yōu)化和匯編代碼的優(yōu)化等優(yōu)化方法對x264編碼器進(jìn)行了優(yōu)化。最后視頻編碼測試表明,優(yōu)化的效果顯著,且均值信噪比下降不多。
評論