王昌龍
摘 要:低能耗在現(xiàn)代工業(yè)中受到特別的關(guān)注,較低的能量耗費正成為嵌入式系統(tǒng),特別是便攜式設(shè)備所要解決和實現(xiàn)的重點目標(biāo)之一。僅依靠硬件技術(shù),實現(xiàn)節(jié)能的潛力正在逐漸減小。使用軟件技術(shù)優(yōu)化系統(tǒng)能量正得到更多的關(guān)注。從操作系統(tǒng)資源管理的角度,分析了嵌入式操作系統(tǒng)節(jié)能原理,探討操作系統(tǒng)的節(jié)能策略;從軟件的設(shè)計模式、編譯優(yōu)化等方面出發(fā),研究了嵌入式應(yīng)用軟件的節(jié)能原理以及相應(yīng)的節(jié)能方法。
關(guān)鍵詞:嵌入式;操作系統(tǒng);應(yīng)用軟件;節(jié)能策略
中圖分類號:TP311
0 引 言
隨著嵌入式系統(tǒng)的廣泛應(yīng)用,嵌入式系統(tǒng)的功能部件越來越多。處理器功能的增強和存儲器容量的增大,為把應(yīng)用軟件從操作系統(tǒng)中獨立出來提供了條件。軟件復(fù)雜化必然帶來功耗的擴大化,從電路設(shè)計角度來看,傳統(tǒng)的硬件低功耗技術(shù)雖降低了局部器件的功耗,但無法顧及系統(tǒng)運行特征,且降低功耗的范圍和程度有限。操作系統(tǒng)作為整個系統(tǒng)的資源管理者,能夠根據(jù)工作負載和硬件資源電源狀態(tài),在滿足系統(tǒng)性能約束條件下作出電源管理決策和控制,降低系統(tǒng)能耗。應(yīng)用軟件則可以結(jié)合實際的硬件特征和操作系統(tǒng)平臺的特性,從設(shè)計、編譯、運行等方面進行優(yōu)化,減少執(zhí)行指令數(shù)目,降低執(zhí)行時間,從而達到降低功耗的目的。
1 嵌入式操作系統(tǒng)
嵌入式操作系統(tǒng)負責(zé)嵌入系統(tǒng)中全部軟、硬件資源的分配、調(diào)度,控制、協(xié)調(diào)并發(fā)活動。 由于嵌入式產(chǎn)品應(yīng)用的特殊性,嵌入式操作系統(tǒng)需要在滿足性能要求的條件下,使系統(tǒng)以最小能耗方式運行。
1.1 嵌入式操作系統(tǒng)的節(jié)能原理
操作系統(tǒng)的節(jié)能是通過有效管理各部件的功耗來實現(xiàn)的,其電源管理技術(shù)的硬件基礎(chǔ)是系統(tǒng)各部件的低功耗特性,盡管硬件的種類繁多,但降低功耗都依據(jù)CMOS電路的功耗原理:
式中:Е廖輸入結(jié)點每個時鐘周期的變化概率;C為門輸出結(jié)點的總電容;f玞為時鐘頻率;V┆玠d為獵MOS供電電壓;I玵為漏電流。其中,V┆玠d狪玵為靜態(tài)功耗,主要由反偏玃N結(jié)的漏電流和晶體管的亞閾值電流引起,其最主要的形式是漏電損失;αCV2┆玠d為動態(tài)功耗,е饕由各器件的門電路跳變時引起[2,3]。在0.18μm工藝水平情況下,靜態(tài)功耗中所占比重大約為5%~10%,一般可以忽略。這樣,在CMOS電路中,動態(tài)功耗就成了這個系統(tǒng)功耗的主要組成部分,約占整體功耗的90%以上。降低動態(tài)功耗的基本方法就是找出減小α,f,C和V的方法。傳統(tǒng)的硬件節(jié)能策略主要是實現(xiàn)在這幾個參數(shù)中的最佳平衡點。操作系統(tǒng)作為系統(tǒng)資源的統(tǒng)籌管理者,通過制定一定的策略,可以從系統(tǒng)級的層次,管理各部件的動態(tài)功耗,從而實現(xiàn)系統(tǒng)的低功耗。
1.2 操作系統(tǒng)的節(jié)能策略
在系統(tǒng)確定部件的情況下,操作系統(tǒng)電源管理器決策面臨的主要問題是對工作負載特征進行建模。在性能約束條件下,對系統(tǒng)部件功耗狀態(tài)的轉(zhuǎn)換時機和選擇何種狀態(tài)做出決策。目前,各種嵌入式操作系統(tǒng)(如Linux)中,都內(nèi)置有電源管理模塊。在進行嵌入式操作系統(tǒng)的開發(fā)或?qū)ΜF(xiàn)有系統(tǒng)進行剪裁時,可根據(jù)嵌入式系統(tǒng)運行環(huán)境的特征、微處理器及其他功能部件的使用情況,增加必要的電源管理策略。根據(jù)不同的工作負載特征抽象方法,把動態(tài)功耗管理(Dynamic Power Management,DPM)策略分為三類:超時策略、基于預(yù)測的啟發(fā)式策略和基于隨機過程的優(yōu)化策略。
1.2.1 超時策略
超時策略是最簡單的DMP策略。如果部件空閑時間超過預(yù)定的時間,則該策略認為未來的空閑時間將大于部件的能耗平衡時間,從而設(shè)置系統(tǒng)為低功耗狀態(tài)。該策略不關(guān)注應(yīng)用的特征差異和需求,比較通用。超時策略的主要缺陷是等待超時過程中增加能耗,喚醒部件時會造成系統(tǒng)部件響應(yīng)延遲。如果超時閾值選擇不當(dāng),會帶來性能損失或降低節(jié)能效率。針對非平穩(wěn)工作負載,可以通過保存閾值,加權(quán)平均以及動態(tài)自適應(yīng)等方法優(yōu)化超時閾值。研究表明,對無線傳輸網(wǎng)絡(luò)設(shè)備等具有非平穩(wěn)子相似業(yè)務(wù)請求的設(shè)備,最優(yōu)動態(tài)功耗管理策略是超時策略(確定性Markov策略)。
1.2.2 基于預(yù)測的DMP策略
動態(tài)預(yù)測策略分為預(yù)測關(guān)閉和預(yù)測喚醒。預(yù)測關(guān)閉根據(jù)預(yù)測的結(jié)果關(guān)閉系統(tǒng)部件;預(yù)測喚醒根據(jù)預(yù)測的空閑時間提前喚醒部件。
預(yù)測方法屬于啟發(fā)式方法,假設(shè)系統(tǒng)部件訪問在時間上存在關(guān)聯(lián)性,未來的空閑時間可以通過歷史信息進行估算,如何提高部件空閑時間預(yù)測的準(zhǔn)確度是這種策略的關(guān)鍵。一種采用離線的非線性回歸方法可以較好地擬合系統(tǒng)部件的空閑時間特征,但對應(yīng)用依賴比較嚴重,并需要離線計算,適用于事先確定的工作負載。指數(shù)滑動平均方法易于實現(xiàn),并具有較高的準(zhǔn)確性,且應(yīng)用范圍較廣?;贐P神經(jīng)網(wǎng)絡(luò)自適應(yīng)學(xué)習(xí)來預(yù)測系統(tǒng)空閑時間的方法無需預(yù)先獲得工作負載特征,具有傳統(tǒng)的回歸算法不可比擬的優(yōu)點。
1.2.3 基于隨機過程的優(yōu)化策略
基于隨機過程的優(yōu)化策略是通過較高層次數(shù)學(xué)抽象建立系統(tǒng)的概率模型,解決啟發(fā)式方法遇到的是最優(yōu)化問題。
基于隨機過程的方法用Markov鏈對部件能耗、狀態(tài)轉(zhuǎn)換時間和工作負載的不確定性建模,定義給定性能約束下的全局能耗優(yōu)化問題,用線性規(guī)劃方法求解。需要得到系統(tǒng)工作負載的先驗信息,但系統(tǒng)工作負載很難提前建模。一種改進靜態(tài)隨機過程的方法是在不同的工作負載下在線學(xué)習(xí),動態(tài)調(diào)節(jié)工作負載的Markov模型參數(shù)。
用這種方法得到的性能和能耗是期望值,不能保證對特定工作負載得到最優(yōu)解。構(gòu)造的Markov模型只是復(fù)雜隨機過程的近似,如果模型不準(zhǔn)確,優(yōu)化策略也只是近似解。與啟發(fā)式方法相比,該方法求解復(fù)雜度和計算開銷較大,實際中難以直接實現(xiàn),但可以用于離線系統(tǒng)分析和DPM策略評估。
2 應(yīng)用軟件
嵌入式系統(tǒng)的廣泛應(yīng)用需要專門的應(yīng)用軟件,硬件技術(shù)特別是處理器和存儲器技術(shù)的發(fā)展,為把專門的應(yīng)用軟件從傳統(tǒng)的嵌入式操作系統(tǒng)中獨立出來提供了條件。與普通計算機應(yīng)用軟件相比,嵌入式應(yīng)用軟件除了滿足時間、空間性能的要求之外,功耗也是嵌入式應(yīng)用軟件必須考慮的問題。
2.1 應(yīng)用軟件節(jié)能原理
系統(tǒng)的運行過程,就是計算機硬件執(zhí)行各具體的應(yīng)用程序指令的過程。低功耗軟件設(shè)計的基本思想是:根據(jù)功能部件的物理特征,讓它們在需要的時候才處于工作狀態(tài),其他時候處于各部分的省電狀態(tài),關(guān)鍵在于如何降低CPU要完成任務(wù)而必須執(zhí)行的指令條數(shù)。
2.2 節(jié)能策略與方法
應(yīng)用軟件的節(jié)能依賴于硬件特征和操作系統(tǒng)平臺的支持,涉及到軟件的設(shè)計、編譯、優(yōu)化等環(huán)節(jié)。
2.2.1 編譯低功耗優(yōu)化技術(shù)
通過編譯技術(shù),降低系統(tǒng)功耗是基于這樣的事實:對于實現(xiàn)同樣的功能,不同的軟件算法消耗的時間不同;不同的指令,其功耗特性是不同的。編譯時,對功率和能量的優(yōu)化技術(shù)是對硬件和OS技術(shù)的有效擴充,編譯器具有能夠分析整個應(yīng)用程序行為的能力,它可以對應(yīng)用程序的整體按照給定的優(yōu)化目標(biāo)進行重新構(gòu)造。
指令級編譯優(yōu)化可以從指令選擇和調(diào)度兩方面進行。
編譯時,通過采用低功耗的指令替代高功耗的指令作為程序的實現(xiàn),達到低功耗的目的。指令的選取標(biāo)準(zhǔn)是指令的基本功耗,這種思想是由Tiwari提出的,他認為含有存儲器操作數(shù)指令的功耗比只有寄存器操作數(shù)的功率指令大的多,盡量使用只含寄存器操作數(shù)的指令,可以降低程序功耗。在參考文獻[7]中,在指令級功耗仿真器xpPower環(huán)境下,采用四個程序:bubble(冒泡查找)、heap(堆查找)、quick(快速查找)、perm(置換排序)對指令功耗進行了測試,結(jié)果如圖1所示。 隨著多媒體應(yīng)用的迅猛發(fā)展,許多硬件現(xiàn)在都支持SIMD指令或短向量指令,使用這類指令可以大大地提升性能和降低功耗。
低功耗指令調(diào)度技術(shù)是在不改變程序語義的前提下,重新安排指令執(zhí)行的順序,這樣通過調(diào)度可以改變程序運行的功耗行為。為了減少程序執(zhí)行中的功耗,低功耗調(diào)度通常指通過適當(dāng)安排指令執(zhí)行的順序減少指令間效應(yīng)造成的功耗,減少功能部件的電路信號翻轉(zhuǎn),對應(yīng)在硬件上就是減少程序在執(zhí)行部件、通信部件和存儲部件因電路信號翻轉(zhuǎn)造成的功耗。軟件流水是一種非常重要的細粒度循環(huán)調(diào)度方法,它產(chǎn)生一種周期模式的并行調(diào)度,使得相鄰輪次循環(huán)的指令盡可能地重疊執(zhí)行,以充分開發(fā)指令級的并行性。從而提高性能/功耗比。整數(shù)線性規(guī)劃(Integer Linear Programming,ILP)方法對具有簡單有限資源的嵌入式系統(tǒng)尋求最優(yōu)化周期調(diào)度提供了途徑。
2.2.2 軟件設(shè)計成中斷驅(qū)動方式
典型嵌入式系統(tǒng),例如移動終端,其能耗主要部件包括嵌入式微處理器(CPU)、內(nèi)存、LCD及背光、電源轉(zhuǎn)換部件,其他部件還可能包括基帶處理器、DSP、外設(shè)控制器等。據(jù)統(tǒng)計,CPU占20%~25%,LCD以及背光占用了20%,內(nèi)存占15%,電源轉(zhuǎn)換占5%~10%,其他的組成占30%。CPU產(chǎn)生的功耗在各功能部件中所占比例是最大的,因此減少CPU功耗能在很大程度上降低整個系統(tǒng)的能量開銷。在程序中用“中斷”代替“查詢”,避免嵌入式系統(tǒng)花費太多的處理器時間檢查┠掣霆輪詢循環(huán)的單個狀態(tài)位而拖累系統(tǒng)。 CPU在空閑時就轉(zhuǎn)入待機或休眠等節(jié)能狀態(tài),既減少了能耗,也延長了特殊場合下CPU的壽命(如傳感器網(wǎng)絡(luò)節(jié)點)。
2.2.3 其他降低功耗的軟件策略
現(xiàn)代嵌入式操作系統(tǒng)都內(nèi)嵌電源管理器(PM)并提供了應(yīng)用編程接口,可以編制智能化電源管理程序駐留內(nèi)存,或者利用內(nèi)核提供的API實現(xiàn)節(jié)能。
通常,硬件電路都消耗功率,基于此,可以減少系統(tǒng)的硬件電路,把數(shù)據(jù)處理功能用軟件實現(xiàn),如許多儀表中用到的對數(shù)放大電路、抗干擾電路,測量系統(tǒng)中用軟件濾波代替硬件濾波器等。
在多機通信中,盡量提高傳送的波特率。提高通信速率,意味著縮短通信時間,一旦完成通信,通信電路進入低功耗狀態(tài);并且發(fā)送、接收均應(yīng)采用外部中斷處理方式,而不采用查詢方式。
在測量和控制系統(tǒng)中,數(shù)據(jù)采集部分的設(shè)計,需根據(jù)實際情況適當(dāng)設(shè)置采樣率,因為模/數(shù)轉(zhuǎn)換時功耗較大,[HK]過大的采樣
速率不僅功耗大,而且為了傳輸處理大量的冗余數(shù)據(jù),也會額外消耗CPU的時間和功耗。
3 結(jié) 語
低功耗是現(xiàn)代嵌入式計算系統(tǒng)的重要特征,也是嵌入式產(chǎn)品品質(zhì)的體現(xiàn)。嵌入式操作系統(tǒng)能夠?qū)崿F(xiàn)節(jié)能的優(yōu)勢在于它作為系統(tǒng)全部資源的管理者,在既定策略下能根據(jù)系統(tǒng)負載實時調(diào)節(jié)系統(tǒng)功耗;設(shè)計嵌入式應(yīng)用軟件的真正挑戰(zhàn)在于降低CPU要完成任務(wù)而必須執(zhí)行的指令條數(shù),根據(jù)具體硬件特性,謹慎設(shè)計應(yīng)用軟件的結(jié)構(gòu),編寫緊湊的代碼,選擇合適的開發(fā)、編譯工具,均能動態(tài)地減少系統(tǒng)能耗。