淺析嵌入式程序設(shè)計中的優(yōu)化問題_第1頁
淺析嵌入式程序設(shè)計中的優(yōu)化問題_第2頁
淺析嵌入式程序設(shè)計中的優(yōu)化問題_第3頁
淺析嵌入式程序設(shè)計中的優(yōu)化問題_第4頁
淺析嵌入式程序設(shè)計中的優(yōu)化問題_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、    淺析嵌入式程序設(shè)計中的優(yōu)化問題    崔曉康+高潤秋+王芮+袁明芊+仵松頎【摘 要】隨著人們對嵌入式應(yīng)用性能需求的提高,嵌入式程序的運行效率逐漸得到關(guān)注。本文根據(jù)嵌入式系統(tǒng)的特點與應(yīng)用環(huán)境,從四個方面提出了基于c語言的嵌入式程序設(shè)計優(yōu)化方法,提高了嵌入式程序的性能,對嵌入式程序設(shè)計開發(fā)人員具有借鑒價值?!娟P(guān)鍵詞】嵌入式系統(tǒng);程序設(shè)計優(yōu)化;性能隨著經(jīng)濟和技術(shù)的發(fā)展,嵌入式系統(tǒng)得到了快速的發(fā)展,低功耗、低成本、低體積,而且高性價比。這些優(yōu)點使得其得到了廣泛應(yīng)用,大到航天領(lǐng)域,小到智能終端領(lǐng)域。盡管嵌入式系統(tǒng)發(fā)展迅速,但嵌入式微處理器相對于桌面級的處理

2、器而言存在一定的差距。這就使得嵌入式系統(tǒng)對運行在嵌入式微處理器上的程序有相對苛刻的要求,特別是運行時間和空間方面的要求。因此,對運行在嵌入式系統(tǒng)中的程序進行優(yōu)化,可大大降低嵌入式系統(tǒng)的功耗,從而提高運行時間,而且可以提高程序的運行效率,滿足嵌入式程序?qū)π阅芊矫娴男枨?。本文將就如何對嵌入式程序進行優(yōu)化展開討論。一、嵌入式系統(tǒng)嵌入式系統(tǒng)即控制、監(jiān)視或者輔助裝置、機器和設(shè)備運行的裝置。根據(jù)該定義可知,嵌入式系統(tǒng)是硬件和軟件的綜合體,而且包含機械等裝置。嵌入式系統(tǒng)以微處理器及軟件為核心部件,具有方便、靈活地嵌入到其他應(yīng)用系統(tǒng)的特征,本身也是可執(zhí)行的獨立系統(tǒng)。以微處理器類型劃分的化,嵌入式系統(tǒng)可以分為以

3、單片機為核心的嵌入式單片機系統(tǒng)、以工業(yè)計算機板為核心的嵌入式計算機系統(tǒng)、以dsp為核心的嵌入式數(shù)字信號處理器系統(tǒng)和以fpga及軟cpu為核心的嵌入式sopc系統(tǒng)等。嵌入式程序是嵌入式系統(tǒng)軟件的組成,包括系統(tǒng)程序和應(yīng)用程序。系統(tǒng)程序運行在操作系統(tǒng)核心態(tài),應(yīng)用程序運行在用戶態(tài)。近年來,為了更加高效地開發(fā)嵌入式程序,廣泛采用c語言來進行開發(fā)。本文將就c語言設(shè)計的程序如何進行優(yōu)化進行論述。二、嵌入式程序設(shè)計優(yōu)化程序優(yōu)化是指在不改變程序功能的情況下,對程序的結(jié)構(gòu)、代碼、算法等進行裁剪、變換、替代等,使得修改后的程序擁有比源程序更優(yōu)的性能。更優(yōu)的性能包括兩方面的涵義,一是代碼量更少、更精簡;二是程序運行速

4、度更快,性能開銷更低。運行速度優(yōu)化是通過對程序的結(jié)構(gòu)、算法等進行修改,采用更加高效的結(jié)構(gòu)和算法來實現(xiàn)同一功能,從而使得程序的運行時間得到所短。代碼優(yōu)化指的是在對應(yīng)用程序功能不影響的情況下,對冗余代碼進行刪除、部門程序語句進行替換等實現(xiàn)代碼量的減少。事實上,這兩者是一對矛盾體,為了使得程序運行速度更快,往往需要添加額外的優(yōu)化代碼。但隨著存儲技術(shù)的發(fā)展,ram、rom等不在稱為限制程序大小的因素。所以,本文只討論嵌入式程序運行速度優(yōu)化問題。1.嵌入式程序設(shè)計優(yōu)化原則嵌入式程序設(shè)計優(yōu)化主要遵循的原則包括:(1)等價性原則,優(yōu)化前后程序的功能是等價的,不能因為代碼的變化改變程序的功能;(2)有效性原則

5、,即優(yōu)化后的程序需要達到預(yù)期目的,要么使得程序的運行速度更快,要么使得程序的代碼量更少;(3)經(jīng)濟性原則,即對程序優(yōu)化投入的人力物力要滿足以盡量小的代碼獲得盡量高的收益,即更佳的優(yōu)化效果。12.通用優(yōu)化方法通用的優(yōu)化方法主要從語言角度出發(fā)對程序進行優(yōu)化,即對c程序在嵌入式系統(tǒng)上的優(yōu)化。(1)循環(huán)優(yōu)化循環(huán)是c語言中常用的一種結(jié)構(gòu)。合理的使用循環(huán)能夠使得程序功能很強大,但是循環(huán)帶來的開銷是很高的。本文對循環(huán)的優(yōu)化主要采用三種策略。一是使用遞減循環(huán)。變循環(huán)變量遞加為遞減,可以減少循環(huán)終止條件測試的開銷,特別是在嵌套循環(huán)的情況下,可以取得更好的效果。二是優(yōu)化循環(huán)退出條件。如果循環(huán)不能夠及時退出,將有可

6、能使得程序多執(zhí)行多次循環(huán)甚至造成死循環(huán)。三是對相關(guān)循環(huán)進行合并,減少循環(huán)的個數(shù)。將相鄰的循環(huán)進行合并,合并原則是不會出現(xiàn)變量相關(guān)。(2)函數(shù)優(yōu)化函數(shù)是c程序中最主要的組成,一個程序中包含若干個函數(shù)。函數(shù)優(yōu)化從三個方面考慮。一是使用內(nèi)聯(lián)函數(shù),減少遞歸函數(shù)的使用。遞歸雖然使得程序更加簡潔,但是遞歸需要花費更多的時間進行函數(shù)調(diào)用,而且函數(shù)調(diào)用時使用堆棧而不是寄存器也使得程序開銷更大。二是函數(shù)參數(shù)的優(yōu)化設(shè)計。這一點是與硬件體系相關(guān)的。以arm為例,函數(shù)參數(shù)傳遞先通過寄存器實現(xiàn),然后再通過堆棧。但是寄存器資源有限,一般為4個。所以在進行函數(shù)設(shè)計時應(yīng)盡量讓函數(shù)參數(shù)小于等于4。三是使用函數(shù)值表。通過函數(shù)值表

7、,可以減少某些耗時的數(shù)學(xué)函數(shù)帶來的時間開銷。(3)變量優(yōu)化變量優(yōu)化主要考慮到全局變量和局部變量2。一般減少全局變量的使用,多使用局部變量。除了性能上的考慮,全局變量對程序自身的安全也存在威脅。過多的全局變量還會帶來過度的存儲空間開銷。(4)內(nèi)聯(lián)匯編的使用內(nèi)聯(lián)匯編是指在c/c+代碼中嵌入的匯編代碼,與全部是匯編的匯編源文件不同,它們被嵌入到c/c+的大環(huán)境中。由于內(nèi)聯(lián)匯編以匯編代碼實現(xiàn),比c代碼效率高。因此,適當(dāng)?shù)氖褂脙?nèi)聯(lián)匯編,對程序的運行速度提高具有一定的促進作用。3.基于硬件的優(yōu)化方法該方法主要使用硬件資源來對程序進行優(yōu)化。一是使用寄存器變量3。寄存器的存取速度遠高于內(nèi)存的存取速度。對一些經(jīng)

8、常使用的變量,可以通過分配指定寄存器作為其存儲單元的方法,在一定程度上提高程序運行效率。另外,對程序優(yōu)化時候可以考慮cpu的流水線處理,兩者相互結(jié)合效果更好。4.基于指令集的優(yōu)化方法指令集優(yōu)化指的是從嵌入式系統(tǒng)支持的指令集角度入手,根據(jù)指令集的優(yōu)缺點進行優(yōu)化。一是對不包含的指令進行優(yōu)化。比如除法指令,arm結(jié)構(gòu)下的指令集并沒有。進行除法運算時通過調(diào)用庫函數(shù)來實現(xiàn),而庫函數(shù)實現(xiàn)的除法效率低下。因此,對除法進行優(yōu)化,改成使用乘法指令來實現(xiàn)。二是條件發(fā)的合理使用。arm指令包含有一個條件碼,在條件碼滿足一定條件下執(zhí)行某種功能。如果要實現(xiàn)的功能與條件碼相關(guān),那么利用該條件碼可以使得判斷更迅速。5.基于

9、編譯器的優(yōu)化方法編譯器優(yōu)化主要用來對代碼進行語法檢查、語句優(yōu)化以及安全性方面的檢查。但高級的編譯器可以對程序的運行效率進行優(yōu)化。比如程序中有一個常量乘法運算,那么在編譯之后程序運行之前該乘法運算的結(jié)果已經(jīng)得出。另外,編譯器會對循環(huán)做優(yōu)化,通過循環(huán)展開,減少比不要的循環(huán);還可以將一些尾遞歸轉(zhuǎn)換為循環(huán)實現(xiàn),提高效率。三、結(jié)束語嵌入式系統(tǒng)的廣泛使用使得運行之上的程序性能要求更高。本文討論了嵌入式程序設(shè)計優(yōu)化問題。從通用方法、硬件優(yōu)化、編譯器優(yōu)化、指令集優(yōu)化等方法進行了探討,提出了一些相關(guān)優(yōu)化策略,對提高程序的運行效率具有促進作用?!緟⒖嘉墨I】1 王磊, 李鑫. 淺析嵌入式程序的優(yōu)化j. 電腦知識與技術(shù): 學(xué)術(shù)交流, 2012, 8(1):

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論