基于TMS320C62X DSP的混合編程研究
.asg B10,ocsr
.asg B11,rw_4
STW .D2 ocsr,*stack--[1] ;被調(diào)用函數(shù)用到了B10~B15,A10
STW .D2 r_w4,*stack--[1] ;~A15的寄存器,則需對(duì)它們保護(hù)
MVC .S2 CSR,ocsr
AND .S2 -2,ocsr,ocsr
MVC .S2 ocsr,CSR ;關(guān)閉某些中斷 ……
loop:
LDW .D2 *tmp_pSrc++[src_width1],r_w1
;讀取第一個(gè)字
LDW .D1 *pSrc++[1],r-w2 ;讀取第二個(gè)字
LDW .D1 *pSrc++[src_width2],r-w3 ;讀取第三個(gè)字
SHRU .S2 r_w1,rshiftB, r-w1
SHL .S1 r_w3,lshiftA, r_w3
SHL .S2X r_w2,rshiftB,r_w4
SHRU .S1 r_w2,rshiftA, r_w2
OR .L2 r_w1,r_w4, r_w1
OR .L1 r_w1,r_w3,r_w2 ;這幾步作了圖a中的操作過程
STW .D2 r_w1,*pDst++[2]
STW .D1 r_w2,*tmpDst++[2] ;存儲(chǔ)取得的兩個(gè)字
B .S2 loop ;延遲跳轉(zhuǎn)到標(biāo)號(hào)loop處,實(shí)現(xiàn)循環(huán) ……
LDW .D2T2 *++stack[1],r_w4
LDW .D2T2 *++stack[1],ocsr ;對(duì)被調(diào)用函數(shù)中自己保護(hù)的寄存器作恢復(fù)處理
MVC .S2 ocsr, CSR ;恢復(fù)中斷環(huán)境
B .S2 B3 ;返回到調(diào)用函數(shù)處
……
在TI CCS上用其庫函數(shù)CLOCK()對(duì)這個(gè)算法的C語言程序和并行匯編程序分別進(jìn)行了性能測試。在純C語言中,運(yùn)動(dòng)矢量對(duì)4的偏移量的余數(shù)為0 時(shí),約為33個(gè)指令周期, 余數(shù)為1時(shí)約為93個(gè)指令周期, 余數(shù)為2 時(shí)約為 51個(gè)指令周期,余數(shù)為3 時(shí)約為 93個(gè)指令周期,平均約耗時(shí) 67個(gè)周期。而將其用并行匯編代碼編寫,其周期數(shù)恒定為33個(gè)指令周期。33個(gè)指令周期的執(zhí)行時(shí)間,對(duì)于這個(gè)函數(shù)基本上是達(dá)到了函數(shù)的最大優(yōu)化。
由此可見,程序的核心算法的代碼用并行匯編程序編寫,而主體的C語言程序則以函數(shù)調(diào)用的形式調(diào)用這些核心算法的并行匯編函數(shù),是提高程序代碼執(zhí)行效率的一種有效方法。
參考文獻(xiàn)
1 TMS320C6000 CPU and Instruction Set Reference Guide. Texas Instruments Incorprated,2000
2 TMS320C600 Programmer’s Guide. Texas Instruments Incorporated, 2001
3 MS320C6000 Optimizing Compiler User’s Guide. Texas Instruments Incorporated,2001
4 任麗香,馬淑芬,李方慧. TMS320C6000系列DSPs的原理與應(yīng)用.北京:電子工業(yè)出版社,2000.7
5 鐘玉琢, 王 琪, 賀玉方.基于對(duì)象的多媒體數(shù)據(jù)壓縮編碼國際標(biāo)準(zhǔn)-MPEG-4及其校驗(yàn)?zāi)P?北京:科學(xué)出版社,2000
評(píng)論