《電子技術(shù)應用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應用 > 源碼級和算法級的功耗測試與優(yōu)化
源碼級和算法級的功耗測試與優(yōu)化
中電網(wǎng)
廖海艷 范明明
摘要: 軟件設(shè)計中,代碼優(yōu)化是一件非常有意義的事情。優(yōu)化的本質(zhì)是對代碼進行等價變換,使變換前后的代碼運行結(jié)果相同,但變換后的代碼比變換前的代碼具有更多優(yōu)越性能。傳統(tǒng)的觀點要求變換后的代碼運行速度較快或占用較少運行資源,或二者兼?zhèn)洹kS著嵌人式系統(tǒng)的快速發(fā)展,軟件功耗問題顯得越來越重要,應該將“省電”作為軟件優(yōu)化的一項技術(shù)指標,這樣對軟件優(yōu)化的評價體系才算完整。值得注意的是,大多數(shù)情況下性能和功耗并不矛盾,減少程序執(zhí)行時間同樣會使程序功耗減少。
關(guān)鍵詞: 源碼級 算法 測試
Abstract:
Key words :

軟件設(shè)計中,代碼優(yōu)化是一件非常有意義的事情。優(yōu)化的本質(zhì)是對代碼進行等價變換,使變換前后的代碼運行結(jié)果相同,但變換后的代碼比變換前的代碼具有更多優(yōu)越性能。傳統(tǒng)的觀點要求變換后的代碼運行速度較快或占用較少運行資源,或二者兼?zhèn)洹kS著嵌人式系統(tǒng)的快速發(fā)展,軟件功耗問題顯得越來越重要,應該將“省電”作為軟件優(yōu)化的一項技術(shù)指標,這樣對軟件優(yōu)化的評價體系才算完整。值得注意的是,大多數(shù)情況下性能和功耗并不矛盾,減少程序執(zhí)行時間同樣會使程序功耗減少。

在功耗優(yōu)化這個問題上,研究者普遍比較關(guān)注硬件功耗優(yōu)化,應用各種技術(shù)想方設(shè)法改進硬件的功耗,比如在芯片制造工藝上采用更精細的納米技術(shù),不斷降低芯片驅(qū)動電壓,不斷改變片內(nèi)系統(tǒng)結(jié)構(gòu)等。事實上,整個系統(tǒng)的運行管理是由軟件體現(xiàn)的。在硬件基礎(chǔ)一定的情況下,只有將軟件系統(tǒng)對能量的損耗降至最小,才能使整個系統(tǒng)工作于最佳狀態(tài)。面向功耗的軟件優(yōu)化方法是當前嵌入式系統(tǒng)低功耗研究領(lǐng)域的熱點。掌握軟件運行時的能量消耗特征、準確獲取能量消耗數(shù)據(jù)信息,是面向低功耗的軟件優(yōu)化研究的前提。經(jīng)過多年的努力,許多學者也提出了關(guān)于如何減少軟件功耗的方法。研究表明,軟件優(yōu)化對降低功耗會有數(shù)量級的貢獻。針對同一任務(wù),所選擇的算法不同或采用不同的實現(xiàn)方式,不僅性能有差別,能耗也大不一樣。因此在進行系統(tǒng)優(yōu)化設(shè)計時,除了代碼的規(guī)模和執(zhí)行性能之外,功耗也是一個需要認真考慮的問題。

1軟件功耗優(yōu)化方法

常用的軟件功耗優(yōu)化方法大致可分為以下4類:

(1)軟件體系結(jié)構(gòu)級

不存在沒有體系結(jié)構(gòu)的軟件。通常考慮軟件體系結(jié)構(gòu)都是注重軟件的可修改性、可重用性和可靠性等問題,軟件體系結(jié)構(gòu)的好壞直接關(guān)系到軟件性能的好壞。而且前,關(guān)于軟件體系結(jié)構(gòu)對軟件功耗影響這方面的研究較少,用不同軟件體系結(jié)構(gòu)開發(fā)出的軟件功耗會有差異,怎樣選擇合適的軟件體系結(jié)構(gòu)使軟件功耗最小化,將成為軟件低功耗優(yōu)化的重要研究方向。

(2)源程序級

C語言的源程序級功耗優(yōu)化指的是實現(xiàn)同一功能的不同語句間的選擇。比如,同樣實現(xiàn)循環(huán)功能,有多種選擇(for、while、goto等)。這些語句的功耗會有差異,為了實現(xiàn)低功耗的軟件,應采用功耗最低的語句來完成相同的功能。這就需要對所有語句的功耗進行測試與研究。同時,對C語言不同數(shù)據(jù)類型操作的功耗進行分析。比如,同樣表示數(shù)目,可以用8位int型、16位int型和32位int型。再者,對不同變量的存儲類型功耗也要進行分析,如寄存器變量、靜態(tài)變量、自動變量等。總之,在源碼級對軟件功耗進行優(yōu)化是一個重要的研究方向。

(3)算法級

算法是為解決某個特定問題而定義的無二義性的操作序列,算法復雜性分析就是對算法運行時所消耗的計算機資源作量化的分析和預測。以往,程序設(shè)計者關(guān)心的資源主要是運行時間和存儲空間。由于能量消耗已成為軟件設(shè)計中的關(guān)鍵約束條件,因此本文將能耗作為一項重要資源,對算法運行時所消耗的能量進行分析和比較。

(4)編譯級

對于某個硬件來說,執(zhí)行程序所產(chǎn)生的功耗取決于它的機器代碼,而機器代碼是從源代碼編譯而來的,這就說明編譯過程也影響了硬件的功耗。既然編譯器可以很大程度上控制硬件的運行軌跡,除了性能這一傳統(tǒng)的優(yōu)化目標之外,編譯器也可以通過適當?shù)恼{(diào)度優(yōu)化,使得硬件執(zhí)行某一個程序時的功耗變小。國際上對于低功耗編譯的歷史并不長,是從20世紀90年代初才開始研究的,這方面的文章最早出現(xiàn)于文獻[4-5],Tiwari等人在這些文章中提出了對軟件進行功耗分析的一些基本概念,建立了基本的指令級功耗模型,以486DX為例初步探討了低功耗編譯技術(shù)。

本文主要從源程序級和算法級這兩個方面對軟件功耗特征進行測試與分析,并根據(jù)分析結(jié)果對μC/OS-II進行源碼級的功耗優(yōu)化。

2源碼級和算法級的功耗測試

測試環(huán)境是T.K.Tan等人研發(fā)的EMSIM,它是一個基于指令級的嵌入式軟件功耗模擬器,其主要的功耗估算思想是累計函數(shù)中所有單條指令的功耗作為該函數(shù)的總功耗。嵌入式硬件平臺是ARM公司的StrongARM110。EMSIM測試功耗的單位為函數(shù),即它只能測試某個函數(shù)的功耗。在本文的測試中,將要測試的語句放入函數(shù)中,測得整個函數(shù)的功耗,記為E1,然后測試同樣參數(shù)及返回值的空語句函數(shù)的功耗,記為E2,最后計算得到語句的功耗為:E=E1-E2。

2.1源碼級的功耗測試

本小節(jié)對C語言的源碼級功耗進行測試,測試過程分為以下幾步:

①對每種數(shù)據(jù)類型的不同操作的功耗進行測試。要測試8位整型、16位整型、32位整型以及32位浮點型和64位浮點型的基本操作功耗。基本操作有:加、減、乘、除、取余、賦值、移位、與、或、非。此處測試的結(jié)果與處理器的位數(shù)有關(guān),StrongARM110為32位精簡指令集系統(tǒng),在此基礎(chǔ)上測試的結(jié)果如表1所列。

 

從表1可知,對于相同數(shù)據(jù)類型,加、減、乘、除和取余操作的功耗一樣,與、或、非操作的功耗一樣,而移位功耗最低。對于不同數(shù)據(jù)類型來說,32位數(shù)比16位數(shù)的操作功耗低,16位數(shù)比8位數(shù)的操作功耗低。32位浮點數(shù)與32位整形數(shù)的操作功耗一樣。在所有數(shù)據(jù)類型中64位浮點數(shù)的操作功耗最高。

測試環(huán)境的處理器StrongARM110為32位處理器,對8位數(shù)和16位數(shù)的處理要考慮字節(jié)對齊問題,而對32位就不用考慮該問題。

②對函數(shù)、內(nèi)聯(lián)函數(shù)和宏定義的功耗進行測試。如表2所列,內(nèi)聯(lián)函數(shù)和宏定義的功耗比一般函數(shù)的功耗低,CPU周期數(shù)及指令數(shù)也小。

 

③對相同功能不同實現(xiàn)語句的功耗進行測試。主要針對循環(huán)語句、選擇語句(二元和多元)、乘法、移位、除法、移位進行測試,測試結(jié)果如表3所列。


 

從表3可知,同樣實現(xiàn)循環(huán)功能,for循環(huán)的功耗比while、goto的要大,goto語句的功耗明顯最低;二元選擇運算中三目運算比if語句的功耗低,但是只能在單條賦值語句中使用三目運算,在復雜的多條語句的情況下,兩者功耗一樣;多元選擇運算中,switch語句比if…elseif…語句功耗低;寄存器變量的操作比自動變量的操作功耗低近50%,因為處理器從寄存器里直接讀取變量省去了反復從內(nèi)存讀取變量的過程,從而達到降低功耗的目的。

2.2算法級功耗測試

算法級功耗測試是比源碼級功耗測試更高一層次的測試,不同的算法針對同一問題的考慮方面不同,如可靠性、易用性、時間復雜度、空間復雜度、功耗等。以往對軟件算法的研究著重在性能上面,本文把功耗作為主要考慮對象,研究算法對功耗的影響。為了便于討論,本文提出一具體問題,針對該問題提出5種不同的算法,然后分析這些算法對軟件功耗的影響。

問題描述:對于1字節(jié)的變量v,求其二進制表示中1的個數(shù)。

算法1:用除法和取余實現(xiàn)。對于二進制操作,除以2,原來的數(shù)將會減少1個0,如果在除的過程中有余,就表示當前位置為1。

算法2:使用與&(即移位>>)操作。&操作,把8位數(shù)字v與00000001進行與操作,如果結(jié)果為1,表示當前8位的最后1位為1,否則為0,然后再將v右移1位,循環(huán)進行。

算法3:使用與&操作,僅考慮v中1的個數(shù)。

算法4:使用分支操作,直接把0~255的情況都羅列出來,使用switch…case…,即可得到答案。

算法5:使用查表法,將0~255中1的個數(shù)直接存儲在數(shù)組Array中,v作為數(shù)組的下標,則Array[v]就是v中1的個數(shù)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲视频在线观看三级| 亚洲一区二区日本| 欧美日韩一区二区三区免费看| 性刺激综合网| 一本大道久久a久久精二百| 欧美中文字幕精品| 亚洲一区二区三区高清不卡| 亚洲国产天堂久久综合网| 国产日产精品一区二区三区四区的观看方式 | 亚洲国产精品久久人人爱蜜臀| 国产精品一区二区三区成人| 欧美日韩午夜精品| 欧美v亚洲v综合ⅴ国产v| 久久国产日本精品| 欧美一区二区三区久久精品茉莉花| 日韩一区二区高清| 亚洲国产婷婷香蕉久久久久久| 亚洲欧美一区二区三区极速播放| 亚洲六月丁香色婷婷综合久久| 好吊妞**欧美| 国产视频在线观看一区二区| 国产精品看片你懂得| 欧美视频在线播放| 欧美日韩黄色大片| 久久国产手机看片| 久久激情视频免费观看| 性欧美超级视频| 亚洲男人的天堂在线观看| 中文精品在线| 国产精品99久久久久久白浆小说| 99视频在线观看一区三区| 亚洲免费高清视频| 99精品热6080yy久久 | 亚洲在线一区二区| 亚洲亚洲精品三区日韩精品在线视频| 99精品久久免费看蜜臀剧情介绍| 亚洲精品久久久久中文字幕欢迎你| 亚洲国产精品va在线看黑人动漫| 欧美伊人久久久久久午夜久久久久| 亚洲国产另类 国产精品国产免费| 午夜精品一区二区三区在线| 亚洲欧美精品中文字幕在线| 香蕉乱码成人久久天堂爱免费| 欧美亚洲在线视频| 亚洲国产精品欧美一二99| 最新国产成人av网站网址麻豆| 亚洲日本免费电影| 日韩视频一区二区三区| 中国成人亚色综合网站| 亚洲午夜在线观看视频在线| 亚洲欧美日韩成人| 欧美一级久久久| 久久久亚洲成人| 久久综合一区| 欧美极品aⅴ影院| 欧美网站在线| 国产精品自拍三区| 国产在线精品一区二区夜色| 一区二区三区在线免费视频| 亚洲国产欧美在线| 夜夜嗨av色综合久久久综合网 | 国产欧美69| 欧美午夜久久| 国产精品视频一二三| 国产精品久久久久9999| 国产午夜精品福利 | 欧美日韩一区在线观看视频| 欧美日韩一区二区欧美激情 | 欧美成人a视频| 欧美日韩三区| 国产日韩欧美在线播放不卡| 尤物精品在线| 99v久久综合狠狠综合久久| 亚洲视频一区二区| 小处雏高清一区二区三区| 亚洲国产经典视频| 亚洲婷婷综合久久一本伊一区| 欧美在线高清视频| 欧美激情小视频| 国产精品一区二区在线观看| 伊人天天综合| 亚洲视频一区在线观看| 久久精品视频在线看| 一个人看的www久久| 午夜精品一区二区三区在线| 久久本道综合色狠狠五月| 欧美电影在线观看| 国产精品日本一区二区| 在线观看日韩专区| 亚洲先锋成人| 亚洲激情校园春色| 午夜影视日本亚洲欧洲精品| 欧美a级一区| 国产精品午夜视频| 亚洲第一页自拍| 亚洲欧美日韩成人| 亚洲精选视频在线| 久久久精品国产免费观看同学| 欧美日韩国产一级| 国内一区二区在线视频观看| 亚洲大片一区二区三区| 亚洲欧美日本日韩| 亚洲三级免费观看| 久久精品日产第一区二区| 免费一区视频| 国产亚洲毛片在线| 99在线精品视频| 亚洲国产日韩美| 欧美在线一二三四区| 欧美日韩在线免费| 91久久久一线二线三线品牌| 欧美专区中文字幕| 亚洲日韩欧美视频一区| 久久精品欧美| 国产精品美女久久久久久久| 亚洲精品护士| 亚洲激情在线视频| 久久久久国产精品www| 国产精品久在线观看| 日韩视频免费观看高清在线视频| 亚洲电影下载| 欧美综合国产| 欧美日韩国产一中文字不卡| 激情成人av在线| aa级大片欧美| 亚洲乱码久久| 欧美电影电视剧在线观看| 国内自拍视频一区二区三区| 亚洲精品自在久久| 亚洲国产91精品在线观看| 久久本道综合色狠狠五月| 欧美午夜在线一二页| 亚洲人成绝费网站色www| 亚洲第一页在线| 久久免费少妇高潮久久精品99| 国产精品毛片大码女人| 一本色道久久综合| 亚洲午夜羞羞片| 欧美日韩一区二区国产| 亚洲精品综合| 一区二区三区精品视频在线观看| 免费日本视频一区| 在线观看视频一区二区欧美日韩 | 午夜久久一区| 欧美一区二区三区喷汁尤物| 国产精品久久久久久妇女6080 | 亚洲二区视频在线| 亚洲国产欧美一区| 免费在线播放第一区高清av| 亚洲大片一区二区三区| 亚洲日本va午夜在线电影| 久久综合九色99| 1024国产精品| 亚洲精选视频免费看| 欧美激情区在线播放| 亚洲日本va午夜在线影院| 亚洲乱码国产乱码精品精天堂| 欧美国产一区二区| 亚洲精品免费在线播放| 99天天综合性| 欧美成人中文字幕| 欧美性感一类影片在线播放 | 亚洲综合成人在线| 久久国产成人| 伊人成年综合电影网| 91久久线看在观草草青青| 欧美激情一区二区三区成人| 亚洲人人精品| 亚洲欧美久久| 欧美日韩在线观看视频| 亚洲图片你懂的| 久久成人免费网| 尤物yw午夜国产精品视频明星| 亚洲精品三级| 欧美日韩免费观看一区=区三区| 一本色道久久综合精品竹菊| 午夜宅男久久久| 国产综合色产在线精品| 欧美一区二区三区在线视频| 久久影音先锋| 亚洲美女在线国产| 午夜精品久久久久久久99黑人| 国产日韩一区二区三区在线| 亚洲区在线播放| 欧美日韩亚洲一区| 亚洲男女自偷自拍| 麻豆精品在线播放| 99在线视频精品| 久久精品国产成人| 亚洲天堂偷拍| 在线亚洲激情| 国语自产在线不卡| 亚洲视频免费在线| 在线欧美日韩国产| 久久精品国产99| 亚洲一区久久久| 欧美精品一区二区三区四区| 久久成人一区二区| 国产伦精品一区二区三区| 99国产精品久久久久久久久久 |