C6x的Debug工具提供了一個profile界麵。在圖9中,包括了幾個重要的窗口,左上角的窗口是顯示出我們寫的C語言,可以讓我們知道現在做到了哪一步。右上角的窗口顯示的是C6x所(suo)編(bian)譯(yi)出(chu)來(lai)的(de)彙(hui)編(bian)語(yu)言(yan),同(tong)樣(yang)的(de)我(wo)們(men)也(ye)可(ke)以(yi)知(zhi)道(dao)現(xian)在(zai)做(zuo)到(dao)了(le)哪(na)一(yi)步(bu)。左(zuo)下(xia)角(jiao)的(de)窗(chuang)口(kou)是(shi)命(ming)令(ling)列(lie),是(shi)讓(rang)我(wo)們(men)下(xia)指(zhi)令(ling)以(yi)及(ji)顯(xian)示(shi)訊(xun)息(xi)的(de)窗(chuang)口(kou)。而(er)中(zhong)間(jian)的(de)profile窗口就是在profile模式下最重要的窗口,它顯示出的項目如下表:
表5:profile的各項參數[8]
字段 意義
Count 被呼叫的次數
Inclusive 包含子程序的總執行clock數
Incl-Max 包含子程序的執行一次最大clock數Exclusive 不包含子程序的總執行clock數Excl-Max 不包含子程序的執行一次最大clock數利用這個profile模式我們可以用來分析程序中每個函數被呼叫的次數、執行的時脈數等等。用這個分析的結果,程序員就可以知道哪個函數所花費的時脈最多,是可以再改進的,而針對它來作最佳化。

彙編代碼級的優化可能會遇到的問題彙總
在經過C代碼的優化之後,還不能滿足性能上的要求,則可以通過profile clock工具找出效率很低的部分,使用線性彙編重新改寫。再通過彙編優化器編譯,彙編優化器從輸入的線性彙編代碼中,完成以下功能:
● 尋找可以平行執行的CPU指令。
● 在軟件流水線期間,處理流水線標號。
● 分配寄存器的用法。
● 分配功能單元。
TI提供的彙編優化器可以得到很高的效率,一般可以滿足性能上的要求。
優化中的問題
在彙編代碼級的優化過程中,總是要對程序進行一定的改動的情況,這樣經常會出現一些問題。問題彙總如下:
1)優化結果的驗證
優you化hua過guo的de程cheng序xu往wang往wang不bu知zhi道dao是shi否fou運yun行xing正zheng確que,這zhe時shi就jiu需xu要yao程cheng序xu員yuan來lai加jia以yi驗yan證zheng。驗yan證zheng時shi一yi般ban采cai用yong的de辦ban法fa就jiu是shi通tong過guo測ce試shi序xu列lie來lai驗yan證zheng。測ce試shi序xu列lie指zhi的de是shi對dui於yu不bu同tong的de算suan法fa所suo取qu的de一yi組zu特te殊shu的de數shu據ju,這zhe些xie數shu據ju可ke以yi準zhun確que的de反fan映ying算suan法fa的de特te性xing。
測試序列中每組數據包括:輸(shu)入(ru)數(shu)據(ju)和(he)輸(shu)出(chu)數(shu)據(ju),通(tong)過(guo)對(dui)輸(shu)入(ru)數(shu)據(ju)的(de)運(yun)算(suan),把(ba)結(jie)果(guo)與(yu)輸(shu)出(chu)數(shu)據(ju)進(jin)行(xing)比(bi)較(jiao),判(pan)斷(duan)程(cheng)序(xu)的(de)正(zheng)確(que)性(xing)。一(yi)些(xie)常(chang)見(jian)的(de)算(suan)法(fa),一(yi)般(ban)都(dou)提(ti)供(gong)了(le)測(ce)試(shi)序(xu)列(lie)。還(hai)有(you)一(yi)些(xie),沒(mei)有(you)測(ce)試(shi)序(xu)列(lie)。這(zhe)時(shi)就(jiu)需(xu)要(yao)根(gen)據(ju)算(suan)法(fa)的(de)特(te)點(dian),自(zi)己(ji)構(gou)造(zao)測(ce)試(shi)序(xu)列(lie),進(jin)行(xing)驗(yan)證(zheng)。構(gou)造(zao)的(de)時(shi)候(hou),注(zhu)意(yi)序(xu)列(lie)最(zui)好(hao)有(you)幾(ji)組(zu),數(shu)據(ju)最(zui)好(hao)有(you)一(yi)定(ding)的(de)長(chang)度(du),這(zhe)樣(yang)驗(yan)證(zheng)的(de)更(geng)準(zhun)確(que)。
2)內存泄漏的問題
C64X係列DSP的內部存儲空間有1MB,其中程序和數據還有CPU的de二er級ji緩huan存cun將jiang共gong享xiang這zhe片pian空kong間jian,因yin此ci當dang程cheng序xu的de運yun行xing不bu正zheng常chang時shi,很hen有you可ke能neng就jiu是shi內nei存cun泄xie漏lou造zao成cheng的de。因yin此ci,在zai程cheng序xu設she計ji中zhong,應ying盡jin量liang不bu用yong指zhi針zhen,同tong時shi注zhu意yi進jin行xing邊bian界jie檢jian測ce。
程序設計的一些方法
程序設計時,一切應以滿足實際的要求為目標。在實際的設計中,除了優化能夠提高性能以外,還可以采取其他的辦法,利用DSP的特性,提高程序的運行性能,滿足實際的設計要求。
1、把程序和經常要用的數據放入片內RAM
片內RAM與CPU——工作在同一時鍾頻率,比片外RAM性能高得多。因此把程序放在片內可以大大提高運行的速度。同時對於一些經常要用到的數據,放入片內,也會節省處理時間。
2、通過DMA技術搬移數據
對於C64X芯片,其片內RAM有1MB,但是對於一些大型的圖像處理算法而言,仍可能是不夠的,因此經常通過DMA技術,把需要用到的數據搬入片內,把不需要的搬到片外,可以大大的提高程序的運行速度。
3、CACHE的使用
增大CACHE,可以明顯的提高性能。但是C64X係列DSP中程序和數據還有CACHE共享片內RAM,因此增大CACHE,就減小了實際的片內可用空間,設計中需要注意。












