新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 源碼級和算法級的功耗測試與優化

        源碼級和算法級的功耗測試與優化

        作者: 時間:2010-03-12 來源:網絡 收藏




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

        測試環境的處理器StrongARM110為32位處理器,對8位數和16位數的處理要考慮字節對齊問題,而對32位就不用考慮該問題。

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



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


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

        2.2

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

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

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

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

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

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

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


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 高唐县| 三亚市| 独山县| 马关县| 金阳县| 双流县| 蓬安县| 大理市| 新兴县| 临武县| 江山市| 漾濞| 项城市| 齐河县| 永嘉县| 泽普县| 定远县| 洛扎县| 余姚市| 普定县| 恭城| 瑞安市| 武定县| 银川市| 松江区| 黎川县| 比如县| 阳泉市| 积石山| 旌德县| 丹凤县| 同仁县| 育儿| 乌兰县| 横山县| 江津市| 利津县| 宁城县| 泾川县| 渑池县| 翁牛特旗|