国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

TMS320VC33的匯編語言程序設(shè)計(jì)和優(yōu)化

2009-06-29 05:03
中國高新技術(shù)企業(yè) 2009年10期

成 健

摘要:高性能浮點(diǎn)DSP芯片TMS320VC33以其高速、低功耗、低成本、易于開發(fā)的顯著特點(diǎn),成為需浮點(diǎn)運(yùn)算的便攜式產(chǎn)品應(yīng)用開發(fā)的理想的DSP器件。文章根據(jù)在TMS320VC33應(yīng)用開發(fā)方面的經(jīng)驗(yàn),從硬件結(jié)構(gòu)及其指令系統(tǒng)特點(diǎn)出發(fā),總結(jié)并較為詳細(xì)地闡述了匯編語言程序設(shè)計(jì)的幾種優(yōu)化方法。

關(guān)鍵詞:浮點(diǎn)DSP;需浮點(diǎn)運(yùn)算;TMS320VC33;匯編語言優(yōu)化;匯編語言程序設(shè)計(jì)

中圖分類號(hào):TN913文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-2374(2009)10-0139-02

TMS320VC33是TI公司推出的性價(jià)比很高的浮點(diǎn)DSP芯片,既適應(yīng)于浮點(diǎn)運(yùn)算,又適應(yīng)于控制,同時(shí)還具有速度適中,功耗低,接口方便等優(yōu)點(diǎn)。因此它被廣泛應(yīng)用于通用DSP算法實(shí)現(xiàn),遠(yuǎn)程通信,語音處理,圖像和圖形處理,高速控制等領(lǐng)域。

由于TMS320VC33具有復(fù)雜的硬件結(jié)構(gòu),使用匯編語言開發(fā)軟件過程中,按照傳統(tǒng)的匯編語言編程方式編程會(huì)導(dǎo)致代碼效率比較低, 執(zhí)行速度比較慢。為了充分發(fā)揮TMS320VC33的性能, 匯編語言程序設(shè)計(jì)的最優(yōu)化成為產(chǎn)品開發(fā)人員的終極目標(biāo)。作者以多年來從事TMS320VC33應(yīng)用的產(chǎn)品軟硬件設(shè)計(jì)的經(jīng)驗(yàn),總結(jié)了匯編語言程序設(shè)計(jì)的幾種優(yōu)化方法。

一、TMS320VC33的硬件結(jié)構(gòu)及軟件資源

(一)TMS320VC33的硬件結(jié)構(gòu)

DSP的硬件結(jié)構(gòu)特點(diǎn)決定了它在執(zhí)行指令時(shí)的特殊性。因此對DSP硬件結(jié)構(gòu)的了解是理解DSP編程優(yōu)化的基礎(chǔ)。

TMS320VC33是32位的高性能數(shù)字信號(hào)處理器。其總線采用哈佛結(jié)構(gòu),允許數(shù)據(jù)在程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器之間傳輸。其內(nèi)部包含了兩塊2K×32位和兩塊16KX32位的快速RAM塊。獨(dú)立的程序總線,數(shù)據(jù)總線和DMA總線使得取指、讀寫數(shù)據(jù)和DMA操作可以并行進(jìn)行。64X32位的高速緩沖存儲(chǔ)器(以下簡稱Cache)用來存儲(chǔ)需要經(jīng)常使用的語言塊,這可以大大減少片外訪問的次數(shù),從而提高程序的運(yùn)行速度。由于主總線的地址線是24位,因此TMS320VC33可以訪問多達(dá)16M的存儲(chǔ)器空間,程序、數(shù)據(jù)1/0空間都包含在TMS320VC33這個(gè)16M字的空間中。

TMS32OVC33提供28個(gè)寄存器,這些寄存器可以由乘法器和ALU操作,可以用作通用的寄存器。但是,他們也有一些特殊的功能,如八個(gè)擴(kuò)展精度的寄存器(RO~R7),可當(dāng)累加器使用,特別適合用于存放擴(kuò)展精度的浮點(diǎn)結(jié)果。八個(gè)輔助寄存器(ARO~AR7)支持一系列的間接尋址方式,并且可以用作通用的32位的整數(shù)和邏輯寄存器。其它的寄存器提供一些系統(tǒng)功能,如尋址、堆棧管理、處理器狀態(tài)、中斷和塊重復(fù)等。

TMS320VC33的外設(shè)是通過存儲(chǔ)器映射的寄存器對外設(shè)總線進(jìn)行控制,外設(shè)總線由32位數(shù)據(jù)總線和24位地址總線組成,允許與外設(shè)直接通信。TMS320VC33的外設(shè)包括兩個(gè)可支持8/16/32位數(shù)據(jù)交換的串行口和兩個(gè)32位定時(shí)器。

(二)TMS320VC33的軟件資源

TMS320VC33的匯編語言指令集特別適合于數(shù)字信號(hào)處理。所有指令占一個(gè)機(jī)器字長,大部分指令是單周期的。指令集可以分為以下幾類:數(shù)據(jù)裝載和存儲(chǔ)指令、兩操作數(shù)算術(shù)/邏輯類、三操作數(shù)算術(shù)/邏輯類、程序控制類、低功耗控制類、互鎖操作類及并行操作類。TMS32OVC33提供相當(dāng)靈活的程序控制。軟件的程序控制包括重復(fù)、跳轉(zhuǎn)、調(diào)用、陷阱及返回等。流水線操作是TMS320VC33具有的高性能的特性之一,五個(gè)功能單元控制TMS320VC33的操作,取指、讀操作數(shù)、執(zhí)行、和DMA。流水線操作就是一個(gè)基本指令的取指、譯碼、讀操作數(shù)和執(zhí)行的并行操作。此外,TMS320VC33支持多種不同的尋址方式。特別是一些特殊的尋址方式更是為了數(shù)字信號(hào)處理而專門設(shè)計(jì)的。

二、匯編語言程序設(shè)計(jì)的優(yōu)化方法

DSP的軟硬件資源為高性能提供了必要條件。在使用匯編語言編寫程序時(shí),如何充分利用這些硬件資源及開發(fā)工具,對程序進(jìn)行優(yōu)化,使應(yīng)用達(dá)到最優(yōu)性能,是每個(gè)編程人員應(yīng)關(guān)注的問題。下面是總結(jié)的幾種程序優(yōu)化方法:

(一)利用延遲跳轉(zhuǎn)

跳轉(zhuǎn)分有條件和無條件跳轉(zhuǎn),無論哪種方式都要執(zhí)行4個(gè)指令周期。TMS320VC33提供的延遲跳轉(zhuǎn)指令可在一個(gè)周期內(nèi)完成,而指令后的三條指令都照常執(zhí)行,若少于三條指令,可加NOP指令。這樣可以節(jié)省機(jī)器時(shí)間。

(二)利用單指令重復(fù)或塊重復(fù)

在這種情況下,可實(shí)現(xiàn)無開銷循環(huán)。但要注意,在需要中斷的場合,要用塊重復(fù)指令,而不能用單循環(huán)指令。

(三)利用并行指令

TMS320VC33具有一系列并行指令,如乘加、存取、取存、二次取、二次存等,利用并行指令可增加在單個(gè)周期內(nèi)執(zhí)行的操作次數(shù),但要比普通的指令多許多限制,如乘法指令,其目的寄存器只能為R0和R1,而加法指令,其目的寄存器只能為R2和R3。因而在高密度運(yùn)算中,會(huì)出現(xiàn)寄存器擁擠現(xiàn)象,造成系統(tǒng)效率下降。當(dāng)多條并行指令一起執(zhí)行時(shí),往往由于前面的結(jié)果在后續(xù)的寄存器中還要用到,因而必須保留,但后續(xù)指令就會(huì)因無空閑的目的寄存器而不能采用并行執(zhí)行,在這種情況下,可以將寄存器內(nèi)容暫存于片內(nèi)存儲(chǔ)器中,然后在利用取數(shù)指令將暫存的數(shù)據(jù)從存儲(chǔ)器取回寄存器。另外應(yīng)注意TMS320VC33不存在任何能與堆棧操作并行的指令,故不采用壓棧方法來保存寄存器數(shù)據(jù)。

(四)充分利用Cache

當(dāng)TMS320VC33需要從外部存儲(chǔ)器的某一地址處取指令字時(shí),首先檢查Cache中是否已經(jīng)存放有該地址處的指令,所以可以將指令存儲(chǔ)在TMS320VC33提供的64X32位的Cache中,從而達(dá)到節(jié)省取指時(shí)間,加快程序運(yùn)行的速度的目的。因此在編程時(shí)確保在程序初始化時(shí)Cache己使能。

(五)利用內(nèi)部RAM

TMS32OVC33內(nèi)部提供了34K的內(nèi)部RAM,這些RAM的存取速度特別快。在單個(gè)指令周期內(nèi),可從內(nèi)部RAM中取出兩個(gè)操作數(shù)。如果采用并行使用DMA和CPU來將數(shù)據(jù)傳送到內(nèi)部RAM,則可使性能達(dá)到最佳。

(六)用比較快的尋址方式

使用比較快的尋址方式會(huì)大大減少指令周期。例如,如果數(shù)據(jù)是順序存放時(shí)則采用寄存器尋址方式,操作完后自加1而指向下一數(shù)據(jù).可以減少很多指令周期。使用循環(huán)尋址可以大大方便實(shí)現(xiàn)數(shù)字濾波器中的卷積運(yùn)算。

(七)避免流水沖突

流水線操作是TMS32OVC33實(shí)現(xiàn)高速運(yùn)算的重要手段,如使用不當(dāng)會(huì)引起程序執(zhí)行時(shí)間的增加。TMS32OVC33 一條指令的執(zhí)行包括取指、譯碼、讀、執(zhí)行四個(gè)時(shí)鐘周期,由于上述四個(gè)步驟在不同的單元實(shí)現(xiàn)并行操作,從而實(shí)現(xiàn)單指令周期。當(dāng)程序發(fā)生流水線沖突時(shí),一條指令執(zhí)行將占用四個(gè)時(shí)鐘周期,大大消弱了CPU 的數(shù)據(jù)吞吐能力。流水線沖突可歸為三類:分支沖突、寄存器沖突和存儲(chǔ)器沖突。分支沖突發(fā)生于標(biāo)準(zhǔn)分支BR、CALL、IDLE、RPTB、RPTS、RETI、RETS等指令以及中斷和復(fù)位。寄存器沖突包含了用于尋址目的寄存器的讀和寫,發(fā)生于相應(yīng)的寄存器沒有準(zhǔn)備好或已被使用,從而使CPU處于等待狀態(tài)。存儲(chǔ)器沖突最為常見。當(dāng)兩個(gè)CPU數(shù)據(jù)訪問內(nèi)部RAM塊,同時(shí)又要從同一塊取程序;或當(dāng)一個(gè)外部端口啟動(dòng)CPU數(shù)據(jù)訪問,同時(shí)必須從同一端口取程序時(shí)都會(huì)發(fā)生存儲(chǔ)器沖突。調(diào)試的方法是使用模擬器或者仿真器的跟蹤功能,查看程序執(zhí)行時(shí)各個(gè)寄存器的變量的值的變化。

三、結(jié)語

TMS320VC33匯編語言的優(yōu)化是一個(gè)資源充分利用、結(jié)構(gòu)不斷趨于合理的過程。在此過程中,應(yīng)最大程度地發(fā)揮TMS320VC33效能,最大限度地利用其資源。本文介紹的對TMS320VC33匯編語言編程的優(yōu)化方法,使用后能夠有效降低在TMS320VC33上運(yùn)行軟件的內(nèi)存占用和系統(tǒng)開銷,在軟件開發(fā)中非常有實(shí)際意義。對TMS320C3x系列DSP同樣適用,可以為從事TI及其他公司各系列DSP芯片的開發(fā)和應(yīng)用打下良好的基礎(chǔ)。

參考文獻(xiàn)

[1]黨瑞榮,謝雁,李利品,等. TMS320C3xDSP原理與應(yīng)用[M].西安:陜西科學(xué)技術(shù)出版社,2006.

[2]杜普選,馬慶龍,等. 實(shí)時(shí)DSP技術(shù)及浮點(diǎn)處理器的應(yīng)用[M]. 北京:清華大學(xué)出版社,北方交通大學(xué)出版社,2007.

作者簡介:成健,江南機(jī)電設(shè)計(jì)研究所助理工程師,研究方向:DSP軟件開發(fā)及應(yīng)用。

彰化市| 钟祥市| 汉沽区| 铁力市| 兴城市| 剑川县| 霍邱县| 晋城| 孝昌县| 五峰| 普安县| 张家口市| 滕州市| 芦山县| 河津市| 大冶市| 武隆县| 五家渠市| 洞头县| 建始县| 黔江区| 江源县| 和顺县| 阿勒泰市| 岚皋县| 云安县| 如皋市| 怀宁县| 前郭尔| 孝感市| 宝应县| 泾川县| 邵阳市| 定州市| 梅州市| 南投县| 珠海市| 靖州| 霍州市| 阿拉善右旗| 铁岭市|