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