基于TI C6000系列DSP的C/C++程序優(yōu)化技術(shù)
摘 要:在現(xiàn)代DSP的開發(fā)中,越來越多地采用C/c++作為開發(fā)語言,而C/C++程序的優(yōu)化成為DSP’軟件開發(fā)的重要環(huán)節(jié)。在此介紹TI C6000的軟件開發(fā)流程,重點(diǎn)討論C6000系列的C/C++程序優(yōu)化技術(shù),包括優(yōu)化流程,C/C++代碼優(yōu)化方法,編寫線形匯編代碼優(yōu)化方法等。為DSP的C/C++軟件開發(fā)提供了全面的程序優(yōu)化技術(shù)和方法,對實(shí)際系統(tǒng)的開發(fā)具有重要的現(xiàn)實(shí)意義。
關(guān)鍵詞:C6000;程序優(yōu)化;軟件流水;線性匯編
0 引 言
目前在DSP平臺上編程多使用匯編語言與C語言,為了追求代碼的高效,過去一般用匯編語言來編制。DSP程序匯編語言簡潔高效,能夠直接操作DSP的內(nèi)部寄存器、存儲(chǔ)空間、外設(shè),但可讀性、可修改性、可移植性較差;隨著DSP應(yīng)用范圍不斷延伸,應(yīng)用的日趨復(fù)雜,匯編語言程序在可讀性、可修改性、可移植性和可重用性的缺點(diǎn)日益突出,軟件需求與軟件生產(chǎn)力之間的矛盾日益嚴(yán)重。引入高級語言(如C語言,C++,Java),可以解決該矛盾。在高級語言中,C語言是一種較為高效的高級語言,在可讀性、可移植性等方面優(yōu)于匯編指令。各個(gè)DSP芯片公司都相繼推出了相應(yīng)的C語言編譯器。
但由于DSF結(jié)構(gòu)的特殊性,使得該平臺上的C語言編譯器無法充分發(fā)揮DSP器件的性能優(yōu)勢。同樣功能的C語言程序,效率往往只有直接書寫的匯編程序的幾分之一甚至幾十分之一,因此有必要根據(jù)DSP的特性對C語言編寫的程序進(jìn)行進(jìn)一步的優(yōu)化。
l TMS320C6000處理器介紹
TMS320C6000是TMS320系列產(chǎn)品中的新一代高性能DSP芯片,共分為兩大系列。其中定點(diǎn)系列為TMS320C62xx和TMS320C64xx;浮點(diǎn)系列為TMS320C67xx。由于TMS320C6000的開發(fā)主要面向數(shù)據(jù)密集型算法,它有著豐富的內(nèi)部資源和強(qiáng)大的運(yùn)算能力,所以被廣泛地應(yīng)用于數(shù)字通信和圖像處理等領(lǐng)域。
C6000系列CPU中的8個(gè)功能單元可以并行操作,并且其中兩個(gè)功能單元為硬件乘法運(yùn)算單元,大大地提高了乘法速度。DSP采用具有獨(dú)立程序總線和數(shù)據(jù)總線的哈佛總線結(jié)構(gòu),僅片內(nèi)程序總線寬度就可達(dá)到256位,即每周期可并行執(zhí)行8條32位指令;片內(nèi)兩套數(shù)據(jù)總線的寬度分別為32位;此外,DSP還有一套32位DMA專用總線用于傳輸。靈活的總線結(jié)構(gòu)使得數(shù)據(jù)瓶頸對系統(tǒng)性能的限制大大緩解。C6000的通用寄存器組能支持32位和40位定點(diǎn)數(shù)據(jù)操作,另外C67xx和C64xx還分別支持64位雙精度數(shù)據(jù)和64位雙字定點(diǎn)數(shù)據(jù)操作。除了多功能單元外,流水技術(shù)是提高DSP程序執(zhí)行效率的另一主要手段。由于TMS320C6000的特殊結(jié)構(gòu),功能單元同時(shí)執(zhí)行的各種操作可由VLlW長指令分配模塊來同步執(zhí)行,使8條并行指令同時(shí)通過流水線的每個(gè)節(jié)拍,極大地提高了機(jī)器的吞吐量。
2 C6000軟件開發(fā)流程
圖1為C6000的軟件開發(fā)流程圖。圖中陰影部分是開發(fā)C代碼的常規(guī)流程,其他部分用于輔助和加速開發(fā)討程.
C/C++源文件首先經(jīng)過C/C++編譯器(C/C++cornpiler)轉(zhuǎn)換為C6000匯編源代碼。編譯器、優(yōu)化器(optimizer)和交疊工具是C/C++編譯器的組成部分。編譯器使用戶能一步完成編譯、匯編和連接;優(yōu)化器調(diào)整合修改代碼以提高C程序的效率;交疊工具把C/C++語句和對應(yīng)的匯編語句交疊列出。
評論