• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      淺析嵌入式程序設(shè)計(jì)中的優(yōu)化問(wèn)題

      2017-10-18 10:35:12崔曉康高潤(rùn)秋王芮袁明芊仵松頎
      智富時(shí)代 2017年8期
      關(guān)鍵詞:嵌入式系統(tǒng)性能

      崔曉康+高潤(rùn)秋+王芮+袁明芊+仵松頎

      【摘 要】隨著人們對(duì)嵌入式應(yīng)用性能需求的提高,嵌入式程序的運(yùn)行效率逐漸得到關(guān)注。本文根據(jù)嵌入式系統(tǒng)的特點(diǎn)與應(yīng)用環(huán)境,從四個(gè)方面提出了基于C語(yǔ)言的嵌入式程序設(shè)計(jì)優(yōu)化方法,提高了嵌入式程序的性能,對(duì)嵌入式程序設(shè)計(jì)開(kāi)發(fā)人員具有借鑒價(jià)值。

      【關(guān)鍵詞】嵌入式系統(tǒng);程序設(shè)計(jì)優(yōu)化;性能

      隨著經(jīng)濟(jì)和技術(shù)的發(fā)展,嵌入式系統(tǒng)得到了快速的發(fā)展,低功耗、低成本、低體積,而且高性?xún)r(jià)比。這些優(yōu)點(diǎn)使得其得到了廣泛應(yīng)用,大到航天領(lǐng)域,小到智能終端領(lǐng)域。盡管嵌入式系統(tǒng)發(fā)展迅速,但嵌入式微處理器相對(duì)于桌面級(jí)的處理器而言存在一定的差距。這就使得嵌入式系統(tǒng)對(duì)運(yùn)行在嵌入式微處理器上的程序有相對(duì)苛刻的要求,特別是運(yùn)行時(shí)間和空間方面的要求。因此,對(duì)運(yùn)行在嵌入式系統(tǒng)中的程序進(jìn)行優(yōu)化,可大大降低嵌入式系統(tǒng)的功耗,從而提高運(yùn)行時(shí)間,而且可以提高程序的運(yùn)行效率,滿(mǎn)足嵌入式程序?qū)π阅芊矫娴男枨?。本文將就如何?duì)嵌入式程序進(jìn)行優(yōu)化展開(kāi)討論。

      一、嵌入式系統(tǒng)

      嵌入式系統(tǒng)即控制、監(jiān)視或者輔助裝置、機(jī)器和設(shè)備運(yùn)行的裝置。根據(jù)該定義可知,嵌入式系統(tǒng)是硬件和軟件的綜合體,而且包含機(jī)械等裝置。

      嵌入式系統(tǒng)以微處理器及軟件為核心部件,具有方便、靈活地嵌入到其他應(yīng)用系統(tǒng)的特征,本身也是可執(zhí)行的獨(dú)立系統(tǒng)。

      以微處理器類(lèi)型劃分的化,嵌入式系統(tǒng)可以分為以單片機(jī)為核心的嵌入式單片機(jī)系統(tǒng)、以工業(yè)計(jì)算機(jī)板為核心的嵌入式計(jì)算機(jī)系統(tǒng)、以DSP為核心的嵌入式數(shù)字信號(hào)處理器系統(tǒng)和以FPGA及軟CPU為核心的嵌入式SOPC系統(tǒng)等。

      嵌入式程序是嵌入式系統(tǒng)軟件的組成,包括系統(tǒng)程序和應(yīng)用程序。系統(tǒng)程序運(yùn)行在操作系統(tǒng)核心態(tài),應(yīng)用程序運(yùn)行在用戶(hù)態(tài)。近年來(lái),為了更加高效地開(kāi)發(fā)嵌入式程序,廣泛采用C語(yǔ)言來(lái)進(jìn)行開(kāi)發(fā)。本文將就C語(yǔ)言設(shè)計(jì)的程序如何進(jìn)行優(yōu)化進(jìn)行論述。

      二、嵌入式程序設(shè)計(jì)優(yōu)化

      程序優(yōu)化是指在不改變程序功能的情況下,對(duì)程序的結(jié)構(gòu)、代碼、算法等進(jìn)行裁剪、變換、替代等,使得修改后的程序擁有比源程序更優(yōu)的性能。更優(yōu)的性能包括兩方面的涵義,一是代碼量更少、更精簡(jiǎn);二是程序運(yùn)行速度更快,性能開(kāi)銷(xiāo)更低。

      運(yùn)行速度優(yōu)化是通過(guò)對(duì)程序的結(jié)構(gòu)、算法等進(jìn)行修改,采用更加高效的結(jié)構(gòu)和算法來(lái)實(shí)現(xiàn)同一功能,從而使得程序的運(yùn)行時(shí)間得到所短。代碼優(yōu)化指的是在對(duì)應(yīng)用程序功能不影響的情況下,對(duì)冗余代碼進(jìn)行刪除、部門(mén)程序語(yǔ)句進(jìn)行替換等實(shí)現(xiàn)代碼量的減少。

      事實(shí)上,這兩者是一對(duì)矛盾體,為了使得程序運(yùn)行速度更快,往往需要添加額外的優(yōu)化代碼。但隨著存儲(chǔ)技術(shù)的發(fā)展,RAM、ROM等不在稱(chēng)為限制程序大小的因素。所以,本文只討論嵌入式程序運(yùn)行速度優(yōu)化問(wèn)題。

      1.嵌入式程序設(shè)計(jì)優(yōu)化原則

      嵌入式程序設(shè)計(jì)優(yōu)化主要遵循的原則包括:

      (1)等價(jià)性原則,優(yōu)化前后程序的功能是等價(jià)的,不能因?yàn)榇a的變化改變程序的功能;

      (2)有效性原則,即優(yōu)化后的程序需要達(dá)到預(yù)期目的,要么使得程序的運(yùn)行速度更快,要么使得程序的代碼量更少;

      (3)經(jīng)濟(jì)性原則,即對(duì)程序優(yōu)化投入的人力物力要滿(mǎn)足以盡量小的代碼獲得盡量高的收益,即更佳的優(yōu)化效果。[1]

      2.通用優(yōu)化方法

      通用的優(yōu)化方法主要從語(yǔ)言角度出發(fā)對(duì)程序進(jìn)行優(yōu)化,即對(duì)C程序在嵌入式系統(tǒng)上的優(yōu)化。

      (1)循環(huán)優(yōu)化

      循環(huán)是C語(yǔ)言中常用的一種結(jié)構(gòu)。合理的使用循環(huán)能夠使得程序功能很強(qiáng)大,但是循環(huán)帶來(lái)的開(kāi)銷(xiāo)是很高的。本文對(duì)循環(huán)的優(yōu)化主要采用三種策略。一是使用遞減循環(huán)。變循環(huán)變量遞加為遞減,可以減少循環(huán)終止條件測(cè)試的開(kāi)銷(xiāo),特別是在嵌套循環(huán)的情況下,可以取得更好的效果。二是優(yōu)化循環(huán)退出條件。如果循環(huán)不能夠及時(shí)退出,將有可能使得程序多執(zhí)行多次循環(huán)甚至造成死循環(huán)。三是對(duì)相關(guān)循環(huán)進(jìn)行合并,減少循環(huán)的個(gè)數(shù)。將相鄰的循環(huán)進(jìn)行合并,合并原則是不會(huì)出現(xiàn)變量相關(guān)。

      (2)函數(shù)優(yōu)化

      函數(shù)是C程序中最主要的組成,一個(gè)程序中包含若干個(gè)函數(shù)。函數(shù)優(yōu)化從三個(gè)方面考慮。一是使用內(nèi)聯(lián)函數(shù),減少遞歸函數(shù)的使用。遞歸雖然使得程序更加簡(jiǎn)潔,但是遞歸需要花費(fèi)更多的時(shí)間進(jìn)行函數(shù)調(diào)用,而且函數(shù)調(diào)用時(shí)使用堆棧而不是寄存器也使得程序開(kāi)銷(xiāo)更大。二是函數(shù)參數(shù)的優(yōu)化設(shè)計(jì)。這一點(diǎn)是與硬件體系相關(guān)的。以ARM為例,函數(shù)參數(shù)傳遞先通過(guò)寄存器實(shí)現(xiàn),然后再通過(guò)堆棧。但是寄存器資源有限,一般為4個(gè)。所以在進(jìn)行函數(shù)設(shè)計(jì)時(shí)應(yīng)盡量讓函數(shù)參數(shù)小于等于4。三是使用函數(shù)值表。通過(guò)函數(shù)值表,可以減少某些耗時(shí)的數(shù)學(xué)函數(shù)帶來(lái)的時(shí)間開(kāi)銷(xiāo)。

      (3)變量?jī)?yōu)化

      變量?jī)?yōu)化主要考慮到全局變量和局部變量[2]。一般減少全局變量的使用,多使用局部變量。除了性能上的考慮,全局變量對(duì)程序自身的安全也存在威脅。過(guò)多的全局變量還會(huì)帶來(lái)過(guò)度的存儲(chǔ)空間開(kāi)銷(xiāo)。

      (4)內(nèi)聯(lián)匯編的使用

      內(nèi)聯(lián)匯編是指在C/C++代碼中嵌入的匯編代碼,與全部是匯編的匯編源文件不同,它們被嵌入到C/C++的大環(huán)境中。由于內(nèi)聯(lián)匯編以匯編代碼實(shí)現(xiàn),比C代碼效率高。因此,適當(dāng)?shù)氖褂脙?nèi)聯(lián)匯編,對(duì)程序的運(yùn)行速度提高具有一定的促進(jìn)作用。

      3.基于硬件的優(yōu)化方法

      該方法主要使用硬件資源來(lái)對(duì)程序進(jìn)行優(yōu)化。一是使用寄存器變量[3]。寄存器的存取速度遠(yuǎn)高于內(nèi)存的存取速度。對(duì)一些經(jīng)常使用的變量,可以通過(guò)分配指定寄存器作為其存儲(chǔ)單元的方法,在一定程度上提高程序運(yùn)行效率。另外,對(duì)程序優(yōu)化時(shí)候可以考慮CPU的流水線(xiàn)處理,兩者相互結(jié)合效果更好。

      4.基于指令集的優(yōu)化方法

      指令集優(yōu)化指的是從嵌入式系統(tǒng)支持的指令集角度入手,根據(jù)指令集的優(yōu)缺點(diǎn)進(jìn)行優(yōu)化。一是對(duì)不包含的指令進(jìn)行優(yōu)化。比如除法指令,ARM結(jié)構(gòu)下的指令集并沒(méi)有。進(jìn)行除法運(yùn)算時(shí)通過(guò)調(diào)用庫(kù)函數(shù)來(lái)實(shí)現(xiàn),而庫(kù)函數(shù)實(shí)現(xiàn)的除法效率低下。因此,對(duì)除法進(jìn)行優(yōu)化,改成使用乘法指令來(lái)實(shí)現(xiàn)。二是條件發(fā)的合理使用。ARM指令包含有一個(gè)條件碼,在條件碼滿(mǎn)足一定條件下執(zhí)行某種功能。如果要實(shí)現(xiàn)的功能與條件碼相關(guān),那么利用該條件碼可以使得判斷更迅速。

      5.基于編譯器的優(yōu)化方法

      編譯器優(yōu)化主要用來(lái)對(duì)代碼進(jìn)行語(yǔ)法檢查、語(yǔ)句優(yōu)化以及安全性方面的檢查。但高級(jí)的編譯器可以對(duì)程序的運(yùn)行效率進(jìn)行優(yōu)化。比如程序中有一個(gè)常量乘法運(yùn)算,那么在編譯之后程序運(yùn)行之前該乘法運(yùn)算的結(jié)果已經(jīng)得出。另外,編譯器會(huì)對(duì)循環(huán)做優(yōu)化,通過(guò)循環(huán)展開(kāi),減少比不要的循環(huán);還可以將一些尾遞歸轉(zhuǎn)換為循環(huán)實(shí)現(xiàn),提高效率。

      三、結(jié)束語(yǔ)

      嵌入式系統(tǒng)的廣泛使用使得運(yùn)行之上的程序性能要求更高。本文討論了嵌入式程序設(shè)計(jì)優(yōu)化問(wèn)題。從通用方法、硬件優(yōu)化、編譯器優(yōu)化、指令集優(yōu)化等方法進(jìn)行了探討,提出了一些相關(guān)優(yōu)化策略,對(duì)提高程序的運(yùn)行效率具有促進(jìn)作用。

      【參考文獻(xiàn)】

      [1] 王磊, 李鑫. 淺析嵌入式程序的優(yōu)化[J]. 電腦知識(shí)與技術(shù): 學(xué)術(shù)交流, 2012, 8(1): 192-193.

      [2] 劉鋒, 張曉林. 淺析嵌入式程序設(shè)計(jì)中的優(yōu)化問(wèn)題[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2006 (12): 66-68.

      [3] 劉侃, 張永泰, 劉洛琨. ARM 程序設(shè)計(jì)優(yōu)化策略與技術(shù)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2004 (4): 70-72.

      猜你喜歡
      嵌入式系統(tǒng)性能
      提供將近80 Gbps的帶寬性能 DisplayPort 2.0正式發(fā)布
      辦公自動(dòng)化系統(tǒng)的設(shè)計(jì)
      嵌入式系統(tǒng)在醫(yī)療器械中的應(yīng)用分析
      基于物聯(lián)網(wǎng)項(xiàng)目驅(qū)動(dòng)的嵌入式系統(tǒng)教學(xué)改革的研究與實(shí)踐
      嵌入式系統(tǒng)課程“中斷、異常與事件”教學(xué)實(shí)踐及啟示
      面向?qū)嵺`創(chuàng)新人才培養(yǎng)的嵌入式系統(tǒng)教學(xué)研究
      在DiskOnChip上構(gòu)建VxWorks系統(tǒng)開(kāi)發(fā)環(huán)境
      PP—g—GMA的制備及其增容PP/PA6共混物的性能
      Al-Se雙元置換的基于LGPS的thio-LISICON的制備與性能表征
      580 MPa 級(jí)熱軋高擴(kuò)孔鋼的組織與性能
      上海金屬(2015年1期)2015-11-28 06:01:09
      新津县| 衡山县| 裕民县| 通渭县| 来宾市| 托里县| 太仆寺旗| 柳林县| 吉水县| 黑山县| 鸡东县| 南丰县| 鹰潭市| 阆中市| 佛冈县| 麻城市| 武汉市| 诏安县| 三门县| 洞头县| 深州市| 顺平县| 景东| 黔西县| 淮阳县| 夏津县| 肃宁县| 平安县| 英山县| 富裕县| 吴忠市| 庆云县| 沙坪坝区| 湘潭县| 棋牌| 衡阳县| 佛坪县| 杭州市| 惠水县| 交口县| 抚顺市|