基于Linux的動態(tài)電源管理設計
為了在產品眾多、競爭激烈的市場上使產品與眾不同,手持設備的制造商們往往把電池壽命和電源管理作為手機、PDA、多媒體播放器、游戲機、其它便攜式消費類設備等產品的關鍵賣點來考慮。用戶是從電池壽命這方面來看待電源管理的成效,其實它是多種因素共同作用的結果,這些因素包括 CPU 功能、系統(tǒng)軟件、中間件,以及使用戶可以在更長的充電或更換電池的間隔時間內享用各自設備的策略。
電源管理范圍
任何擁有筆記本電腦的人都會感覺到,他們的這種便攜式設備依靠電池運行時,與依靠交流電(主電源)運行對比,行為表現(xiàn)不一樣,屏幕變暗了,處理器時鐘變慢了,并且系統(tǒng)只要有可能,就會轉入待機或睡眠狀態(tài)。
另外,PDA 的擁有者們還發(fā)現(xiàn),在設備停用一段時間之后,屏幕會變暗,設備甚至進入睡眠狀態(tài),而手機用戶會注意到,撥號之后,背光和按鍵照明光熄滅了。在肉眼能夠察覺的這些行為的背后,是若干軟硬件技術和策略在起作用。
明顯的行為如全速運行、待機和睡眠等,充分利用了 CPU 本身的功能來降低工作電壓和/或時鐘頻率,從而省電。大多數設備用戶覺察不到的是,實際的電源管理還可以是漸增的,并且可以每秒發(fā)生好幾百次,而不是整個系統(tǒng)狀態(tài)大規(guī)模變化。
任何動態(tài)電源管理 (DPM) 戰(zhàn)略開始都是調節(jié)便攜式設備中存在的一個或多個處理器內核的工作電壓和頻率——高度集成的、基于 PowerPC、ARM 和 x86 的系統(tǒng)通常配備一塊 DSP 或智能基帶處理器。實際上,Intel XScale 和 TI OMAP 等處理器系列提供了內核電壓和頻率的動態(tài)調節(jié)。不過,現(xiàn)代嵌入式處理器的用電效率非常高,以至于 CPU 并不總是主要的耗能器件,其它大能耗器件可能包括高性能存儲器、彩色顯示器和無線接口。因此,動態(tài)電源管理系統(tǒng)如果只關注對處理器內核的電壓和頻率進行調節(jié)的話,那么它的用途也許很有限。
真正有用的電源管理方案將支持各種電壓和時鐘的快速調節(jié),既可以與 CPU 內核的運行協(xié)同進行,也可以獨立進行。
架構
兩種現(xiàn)有的電源管理方案是來自“白箱”PC 及筆記本電腦領域,第一種是傳統(tǒng)的“高級電源管理”(Advanced Power Management,簡稱 APM)方案,仍用于許多基于 Linux 的便攜式設備中,而基于微軟操作系統(tǒng)的筆記本電腦和手持設備已停止采用這種方案了,第二種是“高級配置和電源接口”(Advanced Configuration and Power Interface,簡稱 ACPI),這種現(xiàn)行標準得到了英特爾、東芝等公司的支持。對于 PC、筆記本電腦、服務器、甚至面向通信設備的刀片服務器等“商業(yè)成品”(commercial off-the-shelf,簡稱 COTS)硬件,ACPI 等系統(tǒng)更受青睞,不過它們表現(xiàn)出對目前盛行的 x86/IA-32 BIOS 架構的強烈依賴。
嵌入式系統(tǒng)通常沒有 BIOS(在 PC/AT 的意義上),并且通常無法奢侈地配備機器抽象,來把操作系統(tǒng)與低層器件和電源管理活動隔離開來。因此,在嵌入式 Linux 中,就像在其它針對電池供電應用的操作系統(tǒng)一樣,電源管理活動需要對操作系統(tǒng)內核以及設備驅動程序做特殊干預。不過請注意一件重要事情,雖然動態(tài)電源管理的低層實現(xiàn)是駐留在操作系統(tǒng)內核,但電源管理戰(zhàn)略及策略可以源自中間件和用戶應用軟件代碼,實際也是如此。
接口和 API
理想狀況下,電源管理系統(tǒng)對于軟件堆棧的盡可能多的層次而言,幾乎是完全透明的。實際上,這正是 Transmeta 公司在其 Crusoe 架構中遵循的路線,并且已經成為現(xiàn)有的各種基于 BIOS 的電源管理方案的目標。不過,擁有手持設備制造經驗的開發(fā)人員將證明這一事實:整個系統(tǒng)的各個部分都需要某種程度的直接參與,如下所述:
內核接口 在針對 Linux 的 DPM 架構中,內核中的 DPM 子系統(tǒng)負責維持系統(tǒng)的電源狀態(tài),并把 DPM 系統(tǒng)的各個電源得到管理的元件聯(lián)系在一起。DPM 子系統(tǒng)通過多個 API 直接與設備驅動程序通信,這些 API 把驅動程序從完全運行狀態(tài)轉為各種電源得到管理的狀態(tài)。策略管理器(或應用軟件自身)通過多個 API 向 DPM 子系統(tǒng)提供指導,這些 API 定義各種策略,并在定義好的運行點之間轉移整個系統(tǒng)。
驅動程序接口 啟用了 DPM 的設備驅動程序比默認驅動程序具有更多“狀態(tài)”:由外部事件通過各種狀態(tài)來驅動它們,或通過來自內核 DPM 子系統(tǒng)的回調來驅動它們,從而反映并遵循運行策略。驅動程序 API 還允許驅動程序登記它們連接和管理的各個設備的基本運行特征,從而實現(xiàn)更精細的策略決策。
用戶程序 API 用戶程序(應用軟件)分為三類:
·可感知電源管理的應用軟件
·可感知電源管理的“包裝器”中的傳統(tǒng)應用軟件
·不帶電源管理的傳統(tǒng)應用軟件
可感知電源管理的應用軟件能夠充分利用來自策略管理器的 API,從而建立各自的基礎約束,并強制電源管理策略發(fā)生變化,以便匹配各自的執(zhí)行要求。不直接帶有電源管理功能的傳統(tǒng)應用軟件可以“包裝”到代碼或補丁中,從而實現(xiàn)相當的效果,它們還可以按照默認行為來運行,這取決于更寬范圍的默認策略管理。
嵌入式 Linux DPM 下的實際機制包括各種 API,比如 dpm_set_os()(內核)、assert_constraint()、remove_constraint() 和 set_operating_state()(內核和驅動程序)、set_policy() 和 set_task_state()(經由系統(tǒng)調用的用戶級接口),以及 /proc 接口。
借助 DPM 實現(xiàn)節(jié)能
獨特的節(jié)能機會
DPM 的定義性特征是電源管理的迅速、高頻率性質。傳統(tǒng)的臺式機/筆記本電腦范例的運行速度是以數百毫秒或數秒計,與此不同的是,DPM 使各設備的管理速度只受限于改變供電電壓 (T芕) 或 CPU 時鐘 (T頗) 所需的時間。
在流視頻的各幀之間實現(xiàn)節(jié)能,是對 DPM 的這一性質的最好寫照。高質量的流視頻的運行頻率是 24 幀/秒,在各幀之間留了 41.66 毫秒的可用時間,用于渲染下一幀和進行其它活動。即使是在運行頻率為 40-60MHz 的低功率 CPU 內核心上,41.66 毫秒也代表“很長的時間”,并為電源管理帶來了充足的機會。
當一幀視頻呈現(xiàn)給用戶之后,活動按以下方式繼續(xù)進行:
·CPU 請求/索取下一幀壓縮視頻,它來自本地存儲系統(tǒng)或流文件緩沖器——CPU 活動量很低;
·壓縮圖像(經由 DMA 或共享內存)被傳輸至編解碼器(DSP 或其它專用硬件),進行解壓/渲染——CPU 活動量中等,編解碼器活動量高;
·當圖像準備就緒,即解壓完畢時,CPU 調用視頻接口驅動程序——CPU 利用率高,最終的顯示器利用率高;
·在圖像處理的整個過程中,顯示器背光都要消耗能量。充分利用視覺暫留或針對圖像本身的伽瑪調節(jié),該參數也可以降低到一個更適度的消耗級別。
對視頻幀處理的各個階段期間的能量需求進行總結,得圖 2 所示的波形,“線上方的”面積代表潛在的節(jié)能。
時鐘頻率調節(jié)與電壓調節(jié)的益處對比
CPU 時鐘頻率調節(jié)是嵌入式器件的一種常用省電方式。在給定電壓下,與較低的時鐘速度相比,較高的時鐘速度需要更多的電量才能把邏輯電平推到飽和(克服電容)。而且,時鐘頻率調節(jié)比較容易實現(xiàn),至少在 CPU內核內部是這樣。然而,電壓調節(jié)帶來的益處要大得多——能耗與時鐘頻率成正比,而幾乎是系統(tǒng)電壓的立方!
DPM 本身并不對時鐘頻率和電壓之間的關聯(lián)做假設。理論上,兩項參數均可以獨立而連續(xù)地改變。
實際上,在給定時鐘頻率下,存在最低可行電壓(最低供電電壓)——更低的電壓無法在要求的周期時間內把邏輯電平推到飽和,而更高的電壓只會消耗更多的電。為了簡化電源管理算法,DPM 等方案也不去嘗試連續(xù)改變時鐘和電壓,而是由設計人員在時鐘/電壓連續(xù)統(tǒng)計上挑選出一系列合理的運行點,并且 DPM 逐點驅動 CPU 和其它電源得到管理的系統(tǒng)器件。
開發(fā)和部署電源管理面臨的挑戰(zhàn)
面向嵌入式 Linux 的 DPM 是一種正在發(fā)展的技術。由于全球開放源代碼領域的開發(fā)人員所做的貢獻,它的核心技術正在進步,但實際應用仍然必須清除一系列“路障”。
在所有器件子系統(tǒng)中協(xié)調 DPM
CPU 時鐘和電壓引來了一套非常靈活的電源管理參數,這些參數針對設備中的主要耗電器件之一。其它器件(背光、射頻等等)也帶來了電源管理機會,但有可能導致非常不同的運行點類型和數量。不過,系統(tǒng)中的各種節(jié)點完全獨立的情況非常少。CPU 連接到總線、橋路、內存,并直接連接到其它外設,而改變一種器件的時鐘和電壓可能會限制它與鄰近器件的電連接和邏輯連接。解決此類不兼容問題的選擇方案包括:
· 把 CPU 內核和外設編組成塊,這些塊共享運行點特性
· 選擇互為倍數的運行點時鐘速率
· 運用電壓變換器/緩沖器或開路集電極電路來縮小電壓差異
克服電壓及頻率調節(jié)等待時間
為了支持 DPM 等積極的節(jié)能范例,系統(tǒng)硬件的響應速度必須能夠至少象 DPM 策略指導的狀態(tài)變化的發(fā)生速度一樣快。也就是說,如果 DPM 系統(tǒng)需要在給定時間內從一個運行點過渡到另一個運行點,電源電路的時鐘設定必須能夠與這些變化一同發(fā)生。
換句話說,改變電壓所花的時間必須少于運行點之間的過渡時間 ( T芕 T芆P )。為了實現(xiàn)上述的幀間方案,T芕 必須在 5 毫秒范圍內 (200 Hz)。一些直流到直流電源內部運行速度約為 200Hz,在有負載情況下只能交付大約 200 毫秒 (5Hz) 內的電壓變化,結果降低了 基于 DPM 的系統(tǒng)的可用解析度和效用。
實時影響
直到最近,CPU 電壓和頻率調節(jié)仍給實時性能帶來了嚴峻挑戰(zhàn)。兩種參數中任何一種發(fā)生變化都造成了不穩(wěn)定,“重新鎖定”鎖相環(huán)路和其它動態(tài)時鐘機制需要時間,這些都造成了很長的等待時間(有時是許多毫秒),在此期間 CPU 既不能執(zhí)行計算操作,又不能響應外部事件(中斷)。
TI OMAP 和 Intel XScale 等先進嵌入式處理器能夠在等待時間以幾微秒計的情況下調節(jié)頻率,并在等待時間以數十微秒計的情況下響應變化的電壓,不會中斷系統(tǒng)運行,從而實現(xiàn)了更積極、更精細的策略。
對實時性能的一個更普遍的挑戰(zhàn)是深度睡眠方式期間對中斷的響應。大多數片上外設可以設定為在收到中斷時“喚醒”系統(tǒng),不過開發(fā)人員必須仔細規(guī)定各項策略,來啟用(選擇性的)基于器件的喚醒,并考慮整個系統(tǒng)的等待時間和存儲類別,從而確保及時執(zhí)行中斷處理程序和用戶空間對事件的響應(優(yōu)先等待時間)。
參考平臺的功能
雖然許多 CPU 核心和 SoC(單片系統(tǒng))的確能夠響應頻繁的時鐘變化和電壓變化,但它們所在的參考板通常不能做到這點。事實上,許多 CPU 參考及評估板無法足夠快地為 DPM 調節(jié)時鐘和電壓,而且很多板根本不允許對這些參數做任何實時調節(jié)!在這些情況下,開發(fā)人員必須等待對各自生產硬件的訪問,以便衡量各種電源管理方案的益處。
嵌入式 Linux 的采用、DPM 和差異化
理想情況下,設備用戶既不需要了解也不必關心他們購買的手持設備中的底層操作系統(tǒng)。不過,運營商供應的“售后市場”軟件正在給予設備制造商的首選操作系統(tǒng)更多的可見度,并正在一個以前不存在品牌的領域創(chuàng)造品牌。盡管品牌創(chuàng)建一直是微軟公司的一項重點,但 Windows 系列在手機市場等大批量服務交付市場的普及落在了 Symbian、Brew 的后面,并且現(xiàn)在也落后于多種基于嵌入式 Linux 的新型設計。
設備制造商轉向 Linux 的原因之一是有機會充分利用基于各種標準的電源管理,而不是目前的專有方案。正在發(fā)展的動態(tài)電源管理功能,伴隨著 ARM 公司的 IEM 等電源剖析技術,正在向手機制造商和其他智能設備 OEM 們提供威力強大的新型工具,來增強產品的差異化,實現(xiàn)更快的產品上市時間,并滿足最終用戶和運營商的技術要求。
linux相關文章:linux教程
鎖相環(huán)相關文章:鎖相環(huán)原理
評論