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