C代碼在TMS320C54X上的手工匯編優(yōu)化
發(fā)布時(shí)間:2008/8/18 0:00:00 訪問次數(shù):621
隨著dsp技術(shù)的不斷發(fā)展和完善,數(shù)字信號(hào)處理的應(yīng)用范圍越來越廣泛。工控、計(jì)算機(jī)、通信和消費(fèi)電子產(chǎn)品中,都會(huì)找到它的影子。
近年來,隨著多媒體通信的蓬勃發(fā)展,dsp也越來越多的應(yīng)用在多媒體通信中,而在多媒體通信中dsp多用于語音壓縮和圖像處理等方面,而這些都需要巨大的計(jì)算量,在實(shí)時(shí)通信中一些低速dsp難以滿足要求,而使用高速dsp會(huì)大大提高成本,所以對(duì)代碼進(jìn)行優(yōu)化是現(xiàn)在dsp開發(fā)中常用的一種方法。由于dsp的特殊結(jié)構(gòu),編譯器的編譯效率都比較低,難以將dsp計(jì)算能力全部發(fā)揮出來,所以就必須根據(jù)dsp的特殊結(jié)構(gòu)和指令集代碼進(jìn)行手工的匯編優(yōu)化。
本文結(jié)合筆者在ti公司的tms320vc5402 dsp上的對(duì)g.729算法的優(yōu)化經(jīng)驗(yàn),提出一些優(yōu)化的方法和建議,而這些方法也適用其他54系列的dsp。
2 芯片介紹
tms320c54x是ti公司于1996年推出的新一代定點(diǎn)數(shù)字處理器,它具有功耗小、高度并行等優(yōu)點(diǎn),可以滿足電信等眾多領(lǐng)域的實(shí)時(shí)處理要求。54系列有很多不同型號(hào)的芯片,它們的結(jié)構(gòu)都是一樣的,只是在接口和存儲(chǔ)器空間上有些不同。在54系列眾多dsp芯片中 tms320vc5402是使用最廣泛的一種芯片,接下來將以tms320vc5402為例介紹54系列dsp的性能特點(diǎn):
運(yùn)算速度最高達(dá)100mips
具有先進(jìn)的多總線結(jié)構(gòu),三條16 位數(shù)據(jù)存儲(chǔ)器總線和一條程序存儲(chǔ)器總線
40位算術(shù)邏輯單元(alu),包括一個(gè)40位桶形移位器和兩個(gè)40位累加
一個(gè)17bit×17bit乘法器和40位專用加法器,允許16位帶/不帶符號(hào)乘法
8個(gè)輔助寄存器和一個(gè)軟件棧
內(nèi)部采用改進(jìn)的哈佛結(jié)構(gòu),程序空間和數(shù)據(jù)空間分開,允許同時(shí)取指令和取操作數(shù),并且允許在程序和數(shù)據(jù)空間相互傳送數(shù)據(jù)
最大64k×16bit外部數(shù)據(jù)空間,最大1m×16bit外部程序空間,4k×16bit片內(nèi)rom,16k×16bit片內(nèi)ram
內(nèi)置可編程等待狀態(tài)發(fā)生器、鎖相環(huán)(pll)時(shí)鐘發(fā)生器、兩個(gè)多通道緩沖串口、一個(gè)8位并行與外部處理器通信的hpi口、兩個(gè)16位定時(shí)器以及6通道dma控制器
支持單指令循環(huán)和塊循環(huán),采用六級(jí)流水線,將一條指令執(zhí)行所需要的取指、譯碼、取操作數(shù)并執(zhí)行等幾個(gè)步驟同時(shí)完成,是指令周期降到最小適合算法的優(yōu)化
3 代碼優(yōu)化
對(duì)c代碼進(jìn)行手工匯編優(yōu)化有三種方法:1.對(duì)照c代碼寫出匯編代碼,這種方法優(yōu)化的效率很高,但是開發(fā)難度很大特別是當(dāng)代碼量很大,結(jié)構(gòu)很復(fù)雜時(shí)優(yōu)化很容易出錯(cuò);2.先用編譯器產(chǎn)生匯編代碼,然后改寫匯編代碼,這種方法優(yōu)化的效率較低,因?yàn)榭蚣鼙幌薅,但是開發(fā)難度降低了,不容易出錯(cuò)。
由于現(xiàn)在常用的一些音頻、圖像處理算法都是結(jié)構(gòu)很復(fù)雜的程序,所以建議使用第二種優(yōu)化方法。
3.1產(chǎn)生匯編代碼
ti公司為dsp開發(fā)者提供一套編譯開發(fā)平臺(tái)叫ccs (code composer studio),該工具提供了編譯器可以將c語言的程序編譯為dsp的匯編語言程序,然后鏈接生成可以在dsp上執(zhí)行的coff格式的out文件。
而ccs自身也提供優(yōu)化器可對(duì)c代碼進(jìn)行優(yōu)化,并產(chǎn)生匯編語言程序,具體過程如圖1所示。
ccs提供了4級(jí)的文件優(yōu)化方案,分別是o0、o1、o2、o3,以下具體說明。
(1) o0 寄存器級(jí)別
執(zhí)行控制流程簡(jiǎn)化
用寄存器分配變量
執(zhí)行交替循環(huán)
排除未用的代碼
簡(jiǎn)化公式和表述
擴(kuò)大對(duì)內(nèi)連函數(shù)的調(diào)用
(2) o1 局部級(jí)別
執(zhí)行所有o0級(jí)別的優(yōu)化,并且:
執(zhí)行局部常量的傳播
排除未用的賦值
排除局部共用表達(dá)式
(3) o2 函數(shù)級(jí)別
執(zhí)行所有o1級(jí)別的優(yōu)化,并且:
執(zhí)行循環(huán)優(yōu)化
排除全局共用子表達(dá)式
排除全局不用的賦值
執(zhí)行打開循環(huán)
(4) o3 文件級(jí)別
執(zhí)行所有o1級(jí)別的優(yōu)化,并且:
排除未被調(diào)用的函數(shù)
簡(jiǎn)化返回值沒被使用的函數(shù)
讓小函數(shù)變成內(nèi)聯(lián)調(diào)用
保存函數(shù)說明,以便主函數(shù)被優(yōu)化時(shí)知道被調(diào)用 函數(shù)的屬性
識(shí)別文件級(jí)別的變量的特性
在使用o3級(jí)別的優(yōu)化時(shí),還可以使用別的選項(xiàng)執(zhí)行更細(xì)致的優(yōu)化
oln 得到標(biāo)準(zhǔn)庫函數(shù)的文件
onn 創(chuàng)造優(yōu)化信息文件
pm 執(zhí)行程序級(jí)別優(yōu)化,編譯多個(gè)源文件
而我們?cè)谧鰞?yōu)化時(shí),選的是o2級(jí)別的優(yōu)化,因?yàn)槭褂胦2級(jí)別優(yōu)化后產(chǎn)生的匯編文件帶有比較多的注釋信息,比較容易看懂程序,建議對(duì)程序不太熟和對(duì)匯編語言不太熟練的人使用。
3.2手工匯編優(yōu)化
因?yàn)閰R編語言可讀性很差,并且代碼量很大,所以手工優(yōu)化工作量很大,并且容易出錯(cuò)。為了確保優(yōu)化不出錯(cuò),我們就先制
隨著dsp技術(shù)的不斷發(fā)展和完善,數(shù)字信號(hào)處理的應(yīng)用范圍越來越廣泛。工控、計(jì)算機(jī)、通信和消費(fèi)電子產(chǎn)品中,都會(huì)找到它的影子。
近年來,隨著多媒體通信的蓬勃發(fā)展,dsp也越來越多的應(yīng)用在多媒體通信中,而在多媒體通信中dsp多用于語音壓縮和圖像處理等方面,而這些都需要巨大的計(jì)算量,在實(shí)時(shí)通信中一些低速dsp難以滿足要求,而使用高速dsp會(huì)大大提高成本,所以對(duì)代碼進(jìn)行優(yōu)化是現(xiàn)在dsp開發(fā)中常用的一種方法。由于dsp的特殊結(jié)構(gòu),編譯器的編譯效率都比較低,難以將dsp計(jì)算能力全部發(fā)揮出來,所以就必須根據(jù)dsp的特殊結(jié)構(gòu)和指令集代碼進(jìn)行手工的匯編優(yōu)化。
本文結(jié)合筆者在ti公司的tms320vc5402 dsp上的對(duì)g.729算法的優(yōu)化經(jīng)驗(yàn),提出一些優(yōu)化的方法和建議,而這些方法也適用其他54系列的dsp。
2 芯片介紹
tms320c54x是ti公司于1996年推出的新一代定點(diǎn)數(shù)字處理器,它具有功耗小、高度并行等優(yōu)點(diǎn),可以滿足電信等眾多領(lǐng)域的實(shí)時(shí)處理要求。54系列有很多不同型號(hào)的芯片,它們的結(jié)構(gòu)都是一樣的,只是在接口和存儲(chǔ)器空間上有些不同。在54系列眾多dsp芯片中 tms320vc5402是使用最廣泛的一種芯片,接下來將以tms320vc5402為例介紹54系列dsp的性能特點(diǎn):
運(yùn)算速度最高達(dá)100mips
具有先進(jìn)的多總線結(jié)構(gòu),三條16 位數(shù)據(jù)存儲(chǔ)器總線和一條程序存儲(chǔ)器總線
40位算術(shù)邏輯單元(alu),包括一個(gè)40位桶形移位器和兩個(gè)40位累加
一個(gè)17bit×17bit乘法器和40位專用加法器,允許16位帶/不帶符號(hào)乘法
8個(gè)輔助寄存器和一個(gè)軟件棧
內(nèi)部采用改進(jìn)的哈佛結(jié)構(gòu),程序空間和數(shù)據(jù)空間分開,允許同時(shí)取指令和取操作數(shù),并且允許在程序和數(shù)據(jù)空間相互傳送數(shù)據(jù)
最大64k×16bit外部數(shù)據(jù)空間,最大1m×16bit外部程序空間,4k×16bit片內(nèi)rom,16k×16bit片內(nèi)ram
內(nèi)置可編程等待狀態(tài)發(fā)生器、鎖相環(huán)(pll)時(shí)鐘發(fā)生器、兩個(gè)多通道緩沖串口、一個(gè)8位并行與外部處理器通信的hpi口、兩個(gè)16位定時(shí)器以及6通道dma控制器
支持單指令循環(huán)和塊循環(huán),采用六級(jí)流水線,將一條指令執(zhí)行所需要的取指、譯碼、取操作數(shù)并執(zhí)行等幾個(gè)步驟同時(shí)完成,是指令周期降到最小適合算法的優(yōu)化
3 代碼優(yōu)化
對(duì)c代碼進(jìn)行手工匯編優(yōu)化有三種方法:1.對(duì)照c代碼寫出匯編代碼,這種方法優(yōu)化的效率很高,但是開發(fā)難度很大特別是當(dāng)代碼量很大,結(jié)構(gòu)很復(fù)雜時(shí)優(yōu)化很容易出錯(cuò);2.先用編譯器產(chǎn)生匯編代碼,然后改寫匯編代碼,這種方法優(yōu)化的效率較低,因?yàn)榭蚣鼙幌薅,但是開發(fā)難度降低了,不容易出錯(cuò)。
由于現(xiàn)在常用的一些音頻、圖像處理算法都是結(jié)構(gòu)很復(fù)雜的程序,所以建議使用第二種優(yōu)化方法。
3.1產(chǎn)生匯編代碼
ti公司為dsp開發(fā)者提供一套編譯開發(fā)平臺(tái)叫ccs (code composer studio),該工具提供了編譯器可以將c語言的程序編譯為dsp的匯編語言程序,然后鏈接生成可以在dsp上執(zhí)行的coff格式的out文件。
而ccs自身也提供優(yōu)化器可對(duì)c代碼進(jìn)行優(yōu)化,并產(chǎn)生匯編語言程序,具體過程如圖1所示。
ccs提供了4級(jí)的文件優(yōu)化方案,分別是o0、o1、o2、o3,以下具體說明。
(1) o0 寄存器級(jí)別
執(zhí)行控制流程簡(jiǎn)化
用寄存器分配變量
執(zhí)行交替循環(huán)
排除未用的代碼
簡(jiǎn)化公式和表述
擴(kuò)大對(duì)內(nèi)連函數(shù)的調(diào)用
(2) o1 局部級(jí)別
執(zhí)行所有o0級(jí)別的優(yōu)化,并且:
執(zhí)行局部常量的傳播
排除未用的賦值
排除局部共用表達(dá)式
(3) o2 函數(shù)級(jí)別
執(zhí)行所有o1級(jí)別的優(yōu)化,并且:
執(zhí)行循環(huán)優(yōu)化
排除全局共用子表達(dá)式
排除全局不用的賦值
執(zhí)行打開循環(huán)
(4) o3 文件級(jí)別
執(zhí)行所有o1級(jí)別的優(yōu)化,并且:
排除未被調(diào)用的函數(shù)
簡(jiǎn)化返回值沒被使用的函數(shù)
讓小函數(shù)變成內(nèi)聯(lián)調(diào)用
保存函數(shù)說明,以便主函數(shù)被優(yōu)化時(shí)知道被調(diào)用 函數(shù)的屬性
識(shí)別文件級(jí)別的變量的特性
在使用o3級(jí)別的優(yōu)化時(shí),還可以使用別的選項(xiàng)執(zhí)行更細(xì)致的優(yōu)化
oln 得到標(biāo)準(zhǔn)庫函數(shù)的文件
onn 創(chuàng)造優(yōu)化信息文件
pm 執(zhí)行程序級(jí)別優(yōu)化,編譯多個(gè)源文件
而我們?cè)谧鰞?yōu)化時(shí),選的是o2級(jí)別的優(yōu)化,因?yàn)槭褂胦2級(jí)別優(yōu)化后產(chǎn)生的匯編文件帶有比較多的注釋信息,比較容易看懂程序,建議對(duì)程序不太熟和對(duì)匯編語言不太熟練的人使用。
3.2手工匯編優(yōu)化
因?yàn)閰R編語言可讀性很差,并且代碼量很大,所以手工優(yōu)化工作量很大,并且容易出錯(cuò)。為了確保優(yōu)化不出錯(cuò),我們就先制
熱門點(diǎn)擊
- C6000與C2000系列DSP之間串行數(shù)據(jù)
- matlab濾波器設(shè)計(jì)-IIR濾波器的設(shè)計(jì)與
- C代碼在TMS320C54X上的手工匯編優(yōu)化
- TI推出成功突破低功耗挑戰(zhàn)的 DSP 與應(yīng)用
- 雙TSC695F處理器在微小衛(wèi)星電子平臺(tái)中的
- 仿真器WindRiverICE提升多核開發(fā)能
- 低功耗處理器,下一個(gè)兵家必爭(zhēng)之地
- 用定制DSP設(shè)計(jì)MPEG-4無線視頻產(chǎn)品
- 基于DSP的電子節(jié)氣門PID控制
- Octasic開始提供Vocallo多核心網(wǎng)
推薦技術(shù)資料
- 業(yè)余條件下PCM2702
- PGM2702采用SSOP28封裝,引腳小而密,EP3... [詳細(xì)]
- MOSFET 電感單片降壓開關(guān)模式變換器優(yōu)勢(shì)
- SiC MOSFET 和 IG
- 新型 電隔離無芯線性霍爾效應(yīng)電
- 業(yè)界超小絕對(duì)位置編碼器技術(shù)參數(shù)設(shè)計(jì)
- 高帶寬、更高分辨率磁角度傳感技術(shù)應(yīng)用探究
- MagAlpha 角度位置傳感
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究