常用的降低軟件功耗的方法
發(fā)布時(shí)間:2012/2/18 19:30:03 訪問(wèn)次數(shù):1306
采用高效率的算法可以有效地降低功耗,一些常用的方法如下:JJF1E1614C030R100
(1)用查表的方法代替實(shí)時(shí)的計(jì)算,盡量減少CPU的運(yùn)算量。特別是在沒(méi)有硬件浮點(diǎn)處理單元的MCU進(jìn)行浮點(diǎn)處理時(shí),直接用MCU進(jìn)行浮點(diǎn)處理將會(huì)消耗大量的時(shí)間。將一些運(yùn)算的結(jié)果預(yù)先算好,放在Flash存儲(chǔ)器中,用查表的方法替代實(shí)時(shí)的計(jì)算,減少CPU的運(yùn)算工作量,可以有效地降低CPU的功耗。很多微處理器都有快速有效的查表指令和尋址方式,用于優(yōu)化查表算法。這種處理萬(wàn)法在離散余弦變換和A/D數(shù)據(jù)采集中能夠帶來(lái)可觀的效率提升。
(2)對(duì)于不可避免的實(shí)時(shí)計(jì)算,應(yīng)注意計(jì)算的精度,算到精度夠了就應(yīng)立即結(jié)束,避免“過(guò)度”的計(jì)算。在精度允許的情況下,使用簡(jiǎn)單函數(shù)代替復(fù)雜函數(shù)作近似運(yùn)算,也是減少功耗的有效方法。
(3)盡量使用短的數(shù)據(jù)類型,如盡量使用字符型的8位數(shù)據(jù)替代16位的整型數(shù)據(jù)。
(4)盡量使用分?jǐn)?shù)運(yùn)算而避免浮點(diǎn)數(shù)運(yùn)算等。
(5)用移位運(yùn)算代替乘除法運(yùn)算。采用MCU計(jì)算乘除法也是非常耗時(shí)的,如果采用左移和右移的辦法來(lái)實(shí)現(xiàn)乘除法運(yùn)算,將會(huì)減少運(yùn)算時(shí)間。注意,除法的移位計(jì)算只能針對(duì)除數(shù)比較特殊的情況。
(6)采用快速算法。在搜索算法中,使用二分搜索算法和分段查找算法的效率是不同的。從理論上可以估算,在1024個(gè)測(cè)量值的查找中,二分搜索最壞情況下10次可以查找到結(jié)果,順序搜索最壞可能需要1024次。這在測(cè)量數(shù)值更多的情況下更為突出,一個(gè)高效率的查找算法有助于減小程序運(yùn)行功耗。
(7)數(shù)字信號(hào)處理中的運(yùn)算,采用FFT和快速卷積等,可以節(jié)省大量運(yùn)算時(shí)間。
(8) -個(gè)程序使用中斷方式還是查詢方式,對(duì)于很多應(yīng)用來(lái)說(shuō)并不那么重要,但在軟件低功耗設(shè)計(jì)特性上卻相差甚遠(yuǎn)。例如,ADC在采榘少量的數(shù)據(jù)時(shí),MCU讀取A/D轉(zhuǎn)換數(shù)據(jù)可以采用查詢方式或中斷方式。查詢方式和中斷方式的低功耗特性相差甚遠(yuǎn)。使用中斷方式,MCU可以什么都不做,甚至可以進(jìn)入待機(jī)或停止模式。而采用查詢方式,MCU必須不停地讀取I/O端口寄存器,需要消耗很多額外的功耗。
(9)采用定時(shí)器。在程序中可以采用軟件延時(shí)。但是,如果系統(tǒng)的定時(shí)器資源充裕,在需要定時(shí)的場(chǎng)合,最好采用硬件定時(shí)器,當(dāng)定時(shí)器到了定時(shí)時(shí)間后,向MCU發(fā)出中斷請(qǐng)求信號(hào),這樣可以減少M(fèi)CU的工作時(shí)間,進(jìn)而可以降低功耗。
(10)用宏代替子程序。在程序執(zhí)行的過(guò)程中,讀RAM需要比讀Flash更大的功耗。宏是在編譯器預(yù)處理階段進(jìn)行替代,而在子程序的調(diào)用中MCU需要進(jìn)行現(xiàn)場(chǎng)保護(hù)。
(1)用查表的方法代替實(shí)時(shí)的計(jì)算,盡量減少CPU的運(yùn)算量。特別是在沒(méi)有硬件浮點(diǎn)處理單元的MCU進(jìn)行浮點(diǎn)處理時(shí),直接用MCU進(jìn)行浮點(diǎn)處理將會(huì)消耗大量的時(shí)間。將一些運(yùn)算的結(jié)果預(yù)先算好,放在Flash存儲(chǔ)器中,用查表的方法替代實(shí)時(shí)的計(jì)算,減少CPU的運(yùn)算工作量,可以有效地降低CPU的功耗。很多微處理器都有快速有效的查表指令和尋址方式,用于優(yōu)化查表算法。這種處理萬(wàn)法在離散余弦變換和A/D數(shù)據(jù)采集中能夠帶來(lái)可觀的效率提升。
(2)對(duì)于不可避免的實(shí)時(shí)計(jì)算,應(yīng)注意計(jì)算的精度,算到精度夠了就應(yīng)立即結(jié)束,避免“過(guò)度”的計(jì)算。在精度允許的情況下,使用簡(jiǎn)單函數(shù)代替復(fù)雜函數(shù)作近似運(yùn)算,也是減少功耗的有效方法。
(3)盡量使用短的數(shù)據(jù)類型,如盡量使用字符型的8位數(shù)據(jù)替代16位的整型數(shù)據(jù)。
(4)盡量使用分?jǐn)?shù)運(yùn)算而避免浮點(diǎn)數(shù)運(yùn)算等。
(5)用移位運(yùn)算代替乘除法運(yùn)算。采用MCU計(jì)算乘除法也是非常耗時(shí)的,如果采用左移和右移的辦法來(lái)實(shí)現(xiàn)乘除法運(yùn)算,將會(huì)減少運(yùn)算時(shí)間。注意,除法的移位計(jì)算只能針對(duì)除數(shù)比較特殊的情況。
(6)采用快速算法。在搜索算法中,使用二分搜索算法和分段查找算法的效率是不同的。從理論上可以估算,在1024個(gè)測(cè)量值的查找中,二分搜索最壞情況下10次可以查找到結(jié)果,順序搜索最壞可能需要1024次。這在測(cè)量數(shù)值更多的情況下更為突出,一個(gè)高效率的查找算法有助于減小程序運(yùn)行功耗。
(7)數(shù)字信號(hào)處理中的運(yùn)算,采用FFT和快速卷積等,可以節(jié)省大量運(yùn)算時(shí)間。
(8) -個(gè)程序使用中斷方式還是查詢方式,對(duì)于很多應(yīng)用來(lái)說(shuō)并不那么重要,但在軟件低功耗設(shè)計(jì)特性上卻相差甚遠(yuǎn)。例如,ADC在采榘少量的數(shù)據(jù)時(shí),MCU讀取A/D轉(zhuǎn)換數(shù)據(jù)可以采用查詢方式或中斷方式。查詢方式和中斷方式的低功耗特性相差甚遠(yuǎn)。使用中斷方式,MCU可以什么都不做,甚至可以進(jìn)入待機(jī)或停止模式。而采用查詢方式,MCU必須不停地讀取I/O端口寄存器,需要消耗很多額外的功耗。
(9)采用定時(shí)器。在程序中可以采用軟件延時(shí)。但是,如果系統(tǒng)的定時(shí)器資源充裕,在需要定時(shí)的場(chǎng)合,最好采用硬件定時(shí)器,當(dāng)定時(shí)器到了定時(shí)時(shí)間后,向MCU發(fā)出中斷請(qǐng)求信號(hào),這樣可以減少M(fèi)CU的工作時(shí)間,進(jìn)而可以降低功耗。
(10)用宏代替子程序。在程序執(zhí)行的過(guò)程中,讀RAM需要比讀Flash更大的功耗。宏是在編譯器預(yù)處理階段進(jìn)行替代,而在子程序的調(diào)用中MCU需要進(jìn)行現(xiàn)場(chǎng)保護(hù)。
采用高效率的算法可以有效地降低功耗,一些常用的方法如下:JJF1E1614C030R100
(1)用查表的方法代替實(shí)時(shí)的計(jì)算,盡量減少CPU的運(yùn)算量。特別是在沒(méi)有硬件浮點(diǎn)處理單元的MCU進(jìn)行浮點(diǎn)處理時(shí),直接用MCU進(jìn)行浮點(diǎn)處理將會(huì)消耗大量的時(shí)間。將一些運(yùn)算的結(jié)果預(yù)先算好,放在Flash存儲(chǔ)器中,用查表的方法替代實(shí)時(shí)的計(jì)算,減少CPU的運(yùn)算工作量,可以有效地降低CPU的功耗。很多微處理器都有快速有效的查表指令和尋址方式,用于優(yōu)化查表算法。這種處理萬(wàn)法在離散余弦變換和A/D數(shù)據(jù)采集中能夠帶來(lái)可觀的效率提升。
(2)對(duì)于不可避免的實(shí)時(shí)計(jì)算,應(yīng)注意計(jì)算的精度,算到精度夠了就應(yīng)立即結(jié)束,避免“過(guò)度”的計(jì)算。在精度允許的情況下,使用簡(jiǎn)單函數(shù)代替復(fù)雜函數(shù)作近似運(yùn)算,也是減少功耗的有效方法。
(3)盡量使用短的數(shù)據(jù)類型,如盡量使用字符型的8位數(shù)據(jù)替代16位的整型數(shù)據(jù)。
(4)盡量使用分?jǐn)?shù)運(yùn)算而避免浮點(diǎn)數(shù)運(yùn)算等。
(5)用移位運(yùn)算代替乘除法運(yùn)算。采用MCU計(jì)算乘除法也是非常耗時(shí)的,如果采用左移和右移的辦法來(lái)實(shí)現(xiàn)乘除法運(yùn)算,將會(huì)減少運(yùn)算時(shí)間。注意,除法的移位計(jì)算只能針對(duì)除數(shù)比較特殊的情況。
(6)采用快速算法。在搜索算法中,使用二分搜索算法和分段查找算法的效率是不同的。從理論上可以估算,在1024個(gè)測(cè)量值的查找中,二分搜索最壞情況下10次可以查找到結(jié)果,順序搜索最壞可能需要1024次。這在測(cè)量數(shù)值更多的情況下更為突出,一個(gè)高效率的查找算法有助于減小程序運(yùn)行功耗。
(7)數(shù)字信號(hào)處理中的運(yùn)算,采用FFT和快速卷積等,可以節(jié)省大量運(yùn)算時(shí)間。
(8) -個(gè)程序使用中斷方式還是查詢方式,對(duì)于很多應(yīng)用來(lái)說(shuō)并不那么重要,但在軟件低功耗設(shè)計(jì)特性上卻相差甚遠(yuǎn)。例如,ADC在采榘少量的數(shù)據(jù)時(shí),MCU讀取A/D轉(zhuǎn)換數(shù)據(jù)可以采用查詢方式或中斷方式。查詢方式和中斷方式的低功耗特性相差甚遠(yuǎn)。使用中斷方式,MCU可以什么都不做,甚至可以進(jìn)入待機(jī)或停止模式。而采用查詢方式,MCU必須不停地讀取I/O端口寄存器,需要消耗很多額外的功耗。
(9)采用定時(shí)器。在程序中可以采用軟件延時(shí)。但是,如果系統(tǒng)的定時(shí)器資源充裕,在需要定時(shí)的場(chǎng)合,最好采用硬件定時(shí)器,當(dāng)定時(shí)器到了定時(shí)時(shí)間后,向MCU發(fā)出中斷請(qǐng)求信號(hào),這樣可以減少M(fèi)CU的工作時(shí)間,進(jìn)而可以降低功耗。
(10)用宏代替子程序。在程序執(zhí)行的過(guò)程中,讀RAM需要比讀Flash更大的功耗。宏是在編譯器預(yù)處理階段進(jìn)行替代,而在子程序的調(diào)用中MCU需要進(jìn)行現(xiàn)場(chǎng)保護(hù)。
(1)用查表的方法代替實(shí)時(shí)的計(jì)算,盡量減少CPU的運(yùn)算量。特別是在沒(méi)有硬件浮點(diǎn)處理單元的MCU進(jìn)行浮點(diǎn)處理時(shí),直接用MCU進(jìn)行浮點(diǎn)處理將會(huì)消耗大量的時(shí)間。將一些運(yùn)算的結(jié)果預(yù)先算好,放在Flash存儲(chǔ)器中,用查表的方法替代實(shí)時(shí)的計(jì)算,減少CPU的運(yùn)算工作量,可以有效地降低CPU的功耗。很多微處理器都有快速有效的查表指令和尋址方式,用于優(yōu)化查表算法。這種處理萬(wàn)法在離散余弦變換和A/D數(shù)據(jù)采集中能夠帶來(lái)可觀的效率提升。
(2)對(duì)于不可避免的實(shí)時(shí)計(jì)算,應(yīng)注意計(jì)算的精度,算到精度夠了就應(yīng)立即結(jié)束,避免“過(guò)度”的計(jì)算。在精度允許的情況下,使用簡(jiǎn)單函數(shù)代替復(fù)雜函數(shù)作近似運(yùn)算,也是減少功耗的有效方法。
(3)盡量使用短的數(shù)據(jù)類型,如盡量使用字符型的8位數(shù)據(jù)替代16位的整型數(shù)據(jù)。
(4)盡量使用分?jǐn)?shù)運(yùn)算而避免浮點(diǎn)數(shù)運(yùn)算等。
(5)用移位運(yùn)算代替乘除法運(yùn)算。采用MCU計(jì)算乘除法也是非常耗時(shí)的,如果采用左移和右移的辦法來(lái)實(shí)現(xiàn)乘除法運(yùn)算,將會(huì)減少運(yùn)算時(shí)間。注意,除法的移位計(jì)算只能針對(duì)除數(shù)比較特殊的情況。
(6)采用快速算法。在搜索算法中,使用二分搜索算法和分段查找算法的效率是不同的。從理論上可以估算,在1024個(gè)測(cè)量值的查找中,二分搜索最壞情況下10次可以查找到結(jié)果,順序搜索最壞可能需要1024次。這在測(cè)量數(shù)值更多的情況下更為突出,一個(gè)高效率的查找算法有助于減小程序運(yùn)行功耗。
(7)數(shù)字信號(hào)處理中的運(yùn)算,采用FFT和快速卷積等,可以節(jié)省大量運(yùn)算時(shí)間。
(8) -個(gè)程序使用中斷方式還是查詢方式,對(duì)于很多應(yīng)用來(lái)說(shuō)并不那么重要,但在軟件低功耗設(shè)計(jì)特性上卻相差甚遠(yuǎn)。例如,ADC在采榘少量的數(shù)據(jù)時(shí),MCU讀取A/D轉(zhuǎn)換數(shù)據(jù)可以采用查詢方式或中斷方式。查詢方式和中斷方式的低功耗特性相差甚遠(yuǎn)。使用中斷方式,MCU可以什么都不做,甚至可以進(jìn)入待機(jī)或停止模式。而采用查詢方式,MCU必須不停地讀取I/O端口寄存器,需要消耗很多額外的功耗。
(9)采用定時(shí)器。在程序中可以采用軟件延時(shí)。但是,如果系統(tǒng)的定時(shí)器資源充裕,在需要定時(shí)的場(chǎng)合,最好采用硬件定時(shí)器,當(dāng)定時(shí)器到了定時(shí)時(shí)間后,向MCU發(fā)出中斷請(qǐng)求信號(hào),這樣可以減少M(fèi)CU的工作時(shí)間,進(jìn)而可以降低功耗。
(10)用宏代替子程序。在程序執(zhí)行的過(guò)程中,讀RAM需要比讀Flash更大的功耗。宏是在編譯器預(yù)處理階段進(jìn)行替代,而在子程序的調(diào)用中MCU需要進(jìn)行現(xiàn)場(chǎng)保護(hù)。
上一篇:指令排 序
熱門(mén)點(diǎn)擊
- 可變電容器工作原理
- 二極管主要參數(shù)和引腳極性識(shí)別方法
- DS5022M示波器的顯示界面簡(jiǎn)介
- 三極管各電極電壓與電流之間的關(guān)系
- 動(dòng)態(tài)掃描式LED頻譜式電平指示器
- 發(fā)射極電壓跟隨基極電壓特性和輸入、輸出特性
- LC串聯(lián)諧振電路主要特性
- 肖特基二極管特性曲線和應(yīng)用電路
- 變?nèi)荻䴓O管外形特征和種類
- TTL電路
推薦技術(shù)資料
- 滑雪繞樁機(jī)器人
- 本例是一款非常有趣,同時(shí)又有一定調(diào)試難度的玩法。EDE2116AB... [詳細(xì)]
- PWM輸入功率驅(qū)動(dòng)器工作原理
- 隔離式 DC/DC 變換器和模
- 解讀集成4 個(gè)高效降壓 DC/
- 數(shù)字隔離功能全集成 DC/DC
- 集成低噪聲電流輸入模數(shù)轉(zhuǎn)換器 (ADC)應(yīng)用
- 128 通道20 位電流數(shù)字轉(zhuǎn)換器應(yīng)用探究
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究