|
浙大嵌入式培訓(xùn)中心_嵌入式系統(tǒng)中軟件優(yōu)化的低功耗設(shè)計(jì),
嵌入式系統(tǒng)是以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁減,適用于應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)[1]。在嵌入式系統(tǒng)的設(shè)計(jì)中,低功耗設(shè)計(jì)(Low-Power Design)是必須面對(duì)的問(wèn)題。其原因在于嵌入式系統(tǒng)被廣泛應(yīng)用于便攜式和移動(dòng)性較強(qiáng)的產(chǎn)品中,而這些產(chǎn)品不是一直都有充足的電源供應(yīng),往往靠電池來(lái)供電,所以應(yīng)從每一個(gè)細(xì)節(jié)來(lái)考慮降低功率消耗,盡可能地延長(zhǎng)電池的使用時(shí)間。事實(shí)上,從全局來(lái)考慮低功耗設(shè)計(jì)已經(jīng)成為了一個(gè)越來(lái)越迫切的問(wèn)題。
低功耗是便攜式電子設(shè)備必須具備的一個(gè)關(guān)鍵特性。過(guò)去幾年的研究主要針對(duì)硬件部分,而現(xiàn)在人們則更注重通過(guò)優(yōu)化軟件部分來(lái)降低系統(tǒng)功耗。要想對(duì)軟件進(jìn)行優(yōu)化,必須了解每條指令所產(chǎn)生的功耗,并選擇正確的編譯方法,以降低程序執(zhí)行的功耗。由于各種微處理器架構(gòu)不同,指令集和功耗也不一樣。因此,適用于某一處理器的優(yōu)化方式并不一定適用于其他處理器。這樣,選擇與可降低功耗的軟件相匹配的微處理器便十分重要。
1 編譯優(yōu)化
編譯器的作用是將由高級(jí)語(yǔ)言編寫(xiě)的程序,如C/C++等,翻譯成能夠在目標(biāo)機(jī)上執(zhí)行的程序。換句話說(shuō),編譯器為高級(jí)語(yǔ)言程序員提供了一個(gè)抽象層,使得程序員能夠通過(guò)編寫(xiě)與實(shí)際問(wèn)題相近的高級(jí)語(yǔ)言代碼(而不用匯編或者機(jī)器語(yǔ)言),方便地解決實(shí)際問(wèn)題;同時(shí),也使得程序的可讀性和可維護(hù)性得到保證,提高軟件開(kāi)發(fā)的效率。另外,將程序移植到新的目標(biāo)機(jī),也只要用相應(yīng)的編譯器對(duì)程序進(jìn)行重新編譯,而不必重新編寫(xiě)程序。
但是某些情況下,這樣的做法是以犧牲程序的執(zhí)行性能為代價(jià)的。編譯器的有效性以及它所生成的代碼效率,可以與專家級(jí)的匯編/機(jī)器語(yǔ)言程序員所編寫(xiě)的代碼相比較得出,因此可以通過(guò)對(duì)編譯器的優(yōu)化,生成效率更高的代碼。
通過(guò)優(yōu)化編譯器可以有效地降低嵌入式設(shè)備的功耗。在一個(gè)程序中,每一條指令都將激活微處理器中的某些硬件部件,因此,正確選擇指令可降低處理器的功耗。通過(guò)建立特定處理器架構(gòu)下指令集的功耗信息,利用“減少跳轉(zhuǎn)的指令重排序”等方法,可以進(jìn)行有效的軟件低功率優(yōu)化。
這里作兩點(diǎn)假設(shè):① 每一條指令都有一個(gè)固定量的功率;② 每條指令的散熱與它的操作數(shù)及其他指令無(wú)關(guān)。從圖1可以看到,通過(guò)對(duì)指令的重新排序,可以把一段程序的初始功率狀況,如圖1(A)所示,轉(zhuǎn)換成圖1(B)所示的那樣?梢缘贸鲞@樣的結(jié)論:盡管兩種情況中局部區(qū)域的散熱狀況不一樣,但是它們所消耗的總電能是一致的。換句話說(shuō),可以在不影響總耗電的情況下,對(duì)程序的局部散熱情況作出某些調(diào)整,以符合實(shí)際的需要。下面通過(guò)將指令進(jìn)行重新排序來(lái)實(shí)現(xiàn)系統(tǒng)功耗的降低[2]。
嵌入式中l(wèi)r和pc, 嵌入式參數(shù)數(shù)據(jù)庫(kù), 嵌入式系統(tǒng)安全現(xiàn)狀, 嵌入式底層驅(qū)動(dòng)產(chǎn)品, 英特爾嵌入式項(xiàng)目, 嵌入式實(shí)戰(zhàn)30g項(xiàng)目, 佛山嵌入式培訓(xùn), 嵌入式汽車電子面試, 嵌入式三維圓柱圖, ?登度胧较到y(tǒng), 嵌入式軟件應(yīng)納稅額, 新疆嵌入式居住計(jì)劃, 如何連接嵌入式視頻, 嵌入式控制是否通電, 嵌入式培訓(xùn)免費(fèi), 嵌入式裝飾圓形, 嵌入式個(gè)人發(fā)展方向, 480W嵌入式熱板, 嵌入式培訓(xùn)粵嵌, 嵌入式是大坑, 嵌入式學(xué)習(xí)網(wǎng)站, 自動(dòng)化個(gè)嵌入式區(qū)別,
圖1程序內(nèi)局部區(qū)域功率的兩種可能性
2 指令排序
我們知道,運(yùn)行某一特定程序的處理器的功率P=I&TImes;Vdd(I為平均電流,Vdd為給定的電壓),則程序的功耗E=P&TImes;T(T為程序的執(zhí)行時(shí)間);同時(shí),T=N&TImes;T(T為指令周期),即為主頻的倒數(shù),N為程序執(zhí)行的周期數(shù))。在嵌入式系統(tǒng),尤其是在移動(dòng)設(shè)備中,一般都通過(guò)電池供電,故系統(tǒng)的功耗是一個(gè)非常重要的指標(biāo)。現(xiàn)在,Vdd和T都是已知量,因此程序消耗的電能E與電流I和程序周期數(shù)N的乘積成正比。這里通過(guò)引用參考文獻(xiàn)[3]中所建立的模型來(lái)進(jìn)行闡述。該模型中通過(guò)示波器等設(shè)備,測(cè)量并估計(jì)執(zhí)行每條指令所需要的電流I[4]。綜上所述,可以利用嵌入式處理器中的多數(shù)據(jù)存儲(chǔ)區(qū)域的特性,實(shí)現(xiàn)數(shù)據(jù)的并行處理,通過(guò)對(duì)指令的排序,減少指令的執(zhí)行周期,從而達(dá)到降低功耗的目的。
2.1 舉例
假設(shè)有一段C語(yǔ)言程序,如圖2(A)所示。圖2(B)是其相應(yīng)的匯編代碼,圖2(C)表示每個(gè)結(jié)點(diǎn)帶有兩個(gè)權(quán)值的數(shù)據(jù)依賴圖(Data Dependence Graph,DDG)。第一個(gè)權(quán)值表示結(jié)點(diǎn)在DDG中的深度,如V10的第一個(gè)權(quán)值為1,V0的第一個(gè)權(quán)值為6。假設(shè)這個(gè)權(quán)值越大,表示其優(yōu)先級(jí)越高,如圖2(C)中V0和V1具有最高的優(yōu)先級(jí)。
|
|