基于Linux的動(dòng)態(tài)電源管理:使嵌入式設備更節能
——
電源管理范圍
任何擁有筆記本電腦的人都會(huì )感覺(jué)到,他們的這種便攜式設備依靠電池運行時(shí),與依靠交流電(主電源)運行對比,行為表現不一樣,屏幕變暗了,處理器時(shí)鐘變慢了,并且系統只要有可能,就會(huì )轉入待機或睡眠狀態(tài)。
另外,PDA 的擁有者們還發(fā)現,在設備停用一段時(shí)間之后,屏幕會(huì )變暗,設備甚至進(jìn)入睡眠狀態(tài),而手機用戶(hù)會(huì )注意到,撥號之后,背光和按鍵照明光熄滅了。在肉眼能夠察覺(jué)的這些行為的背后,是若干軟硬件技術(shù)和策略在起作用。
明顯的行為如全速運行、待機和睡眠等,充分利用了 CPU 本身的功能來(lái)降低工作電壓和/或時(shí)鐘頻率,從而省電。大多數設備用戶(hù)覺(jué)察不到的是,實(shí)際的電源管理還可以是漸增的,并且可以每秒發(fā)生好幾百次,而不是整個(gè)系統狀態(tài)大規模變化。
任何動(dòng)態(tài)電源管理 (DPM) 戰略開(kāi)始都是調節便攜式設備中存在的一個(gè)或多個(gè)處理器內核的工作電壓和頻率——高度集成的、基于 PowerPC、ARM 和 x86 的系統通常配備一塊 DSP 或智能基帶處理器。實(shí)際上,Intel XScale 和 TI OMAP 等處理器系列提供了內核電壓和頻率的動(dòng)態(tài)調節。不過(guò),現代嵌入式處理器的用電效率非常高,以至于 CPU 并不總是主要的耗能器件,其它大能耗器件可能包括高性能存儲器、彩色顯示器和無(wú)線(xiàn)接口。因此,動(dòng)態(tài)電源管理系統如果只關(guān)注對處理器內核的電壓和頻率進(jìn)行調節的話(huà),那么它的用途也許很有限。
真正有用的電源管理方案將支持各種電壓和時(shí)鐘的快速調節,既可以與 CPU 內核的運行協(xié)同進(jìn)行,也可以獨立進(jìn)行。
架構
兩種現有的電源管理方案是來(lái)自“白箱”P(pán)C 及筆記本電腦領(lǐng)域,第一種是傳統的“高級電源管理”(Advanced Power Management,簡(jiǎn)稱(chēng) APM)方案,仍用于許多基于 Linux 的便攜式設備中,而基于微軟操作系統的筆記本電腦和手持設備已停止采用這種方案了,第二種是“高級配置和電源接口”(Advanced Configuration and Power Interface,簡(jiǎn)稱(chēng) ACPI),這種現行標準得到了英特爾、東芝等公司的支持。對于 PC、筆記本電腦、服務(wù)器、甚至面向通信設備的刀片服務(wù)器等“商業(yè)成品”(commercial off-the-shelf,簡(jiǎn)稱(chēng) COTS)硬件,ACPI 等系統更受青睞,不過(guò)它們表現出對目前盛行的 x86/IA-32 BIOS 架構的強烈依賴(lài)。
嵌入式系統通常沒(méi)有 BIOS(在 PC/AT 的意義上),并且通常無(wú)法奢侈地配備機器抽象,來(lái)把操作系統與低層器件和電源管理活動(dòng)隔離開(kāi)來(lái)。因此,在嵌入式 Linux 中,就像在其它針對電池供電應用的操作系統一樣,電源管理活動(dòng)需要對操作系統內核以及設備驅動(dòng)程序做特殊干預。不過(guò)請注意一件重要事情,雖然動(dòng)態(tài)電源管理的低層實(shí)現是駐留在操作系統內核,但電源管理戰略及策略可以源自中間件和用戶(hù)應用軟件代碼,實(shí)際也是如此。
接口和 API
理想狀況下,電源管理系統對于軟件堆棧的盡可能多的層次而言,幾乎是完全透明的。實(shí)際上,這正是 Transmeta 公司在其 Crusoe 架構中遵循的路線(xiàn),并且已經(jīng)成為現有的各種基于 BIOS 的電源管理方案的目標。不過(guò),擁有手持設備制造經(jīng)驗的開(kāi)發(fā)人員將證明這一事實(shí):整個(gè)系統的各個(gè)部分都需要某種程度的直接參與,如下所述:
內核接口 在針對 Linux 的 DPM 架構中,內核中的 DPM 子系統負責維持系統的電源狀態(tài),并把 DPM 系統的各個(gè)電源得到管理的元件聯(lián)系在一起。DPM 子系統通過(guò)多個(gè) API 直接與設備驅動(dòng)程序通信,這些 API 把驅動(dòng)程序從完全運行狀態(tài)轉為各種電源得到管理的狀態(tài)。策略管理器(或應用軟件自身)通過(guò)多個(gè) API 向 DPM 子系統提供指導,這些 API 定義各種策略,并在定義好的運行點(diǎn)之間轉移整個(gè)系統。
驅動(dòng)程序接口 啟用了 DPM 的設備驅動(dòng)程序比默認驅動(dòng)程序具有更多“狀態(tài)”:由外部事件通過(guò)各種狀態(tài)來(lái)驅動(dòng)它們,或通過(guò)來(lái)自?xún)群?nbsp;DPM 子系統的回調來(lái)驅動(dòng)它們,從而反映并遵循運行策略。驅動(dòng)程序 API 還允許驅動(dòng)程序登記它們連接和管理的各個(gè)設備的基本運行特征,從而實(shí)現更精細的策略決策。
用戶(hù)程序 API 用戶(hù)程序(應用軟件)分為三類(lèi):
評論