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