任何擁有筆記本電腦的人都會(huì )察覺(jué),當依靠電池供電時(shí),其便攜設備的行為與使用交流主電源供電時(shí)不同——顯示屏變暗、處理器的時(shí)鐘變慢、系統只要有可能就會(huì )轉入待機或睡眠狀態(tài)。PDA用戶(hù)也發(fā)現,在停止使用一段時(shí)間后顯示屏將變暗,設備甚至進(jìn)入睡眠狀態(tài)。蜂窩電話(huà)用戶(hù)也已經(jīng)注意到,背景光和按鍵照明在完成撥號之后會(huì )熄滅。事實(shí)上,這些可見(jiàn)行為的背后是軟硬件技術(shù)和節電機制在發(fā)揮作用。
全速運行、待機和睡眠等宏觀(guān)行為利用CPU的固有能力通過(guò)降低工作電壓或時(shí)鐘頻率來(lái)節省功耗。除了全面地改變系統狀態(tài)外,大多數設備用戶(hù)察覺(jué)不到的是,實(shí)際的電源管理也能夠逐漸地改變系統狀態(tài),這種情況在一秒之內可以發(fā)生數百次。
任何動(dòng)態(tài)電源管理策略的基礎都是調整便攜式設備中一個(gè)或多個(gè)處理器內核的工作電壓和頻率,此外,在高集成度的PowerPC、ARM和基于x86的系統中經(jīng)常包含一個(gè)DSP或智能基帶處理器。的確,諸如英特爾的StrongARM和XScale處理器、TI的OMAP處理器系列以及IBM的PowerPC 405LP和Transmeta Crusoe等CPU都提供內核電壓和頻率的動(dòng)態(tài)調節功能。不過(guò),現代的嵌入式處理器具有非常高的電源效率,以至于CPU并不總是最主要的耗能器件,其它高耗能的器件包括高性能存儲器、彩色顯示器和射頻接口等。因此,如果動(dòng)態(tài)電源管理系統只能調節處理器內核的電壓和頻率,那么它的用途將有限。
一個(gè)真正有用的動(dòng)態(tài)電源管理方案應該可以采用與CPU內核運行相協(xié)調或相獨立的方式,支持對一系列電壓和時(shí)鐘的快速調節。
DPM架構
兩個(gè)現有的電源管理方案分別來(lái)自于PC和筆記本電腦領(lǐng)域:一個(gè)是傳統的高級電源管理(APM)方案,它目前仍然使用在許多基于Linux的便攜設備中,但在基于微軟操作系統的筆記本電腦和手持設備中已經(jīng)被逐步淘汰;另一個(gè)是高級配置和電源接口(ACPI)方案,它是英特爾、東芝和其他一些公司支持的現行標準。在PC、筆記本電腦、服務(wù)器、甚至刀片式通信設備等商業(yè)硬件中,類(lèi)似ACPI的系統是人們的首選,但它強烈依賴(lài)于流行的x86/IA-32 BIOS 架構。
嵌入式系統通常沒(méi)有類(lèi)似于PC中的BIOS,而且通常不具備那么高的機器抽象水平,能夠把操作系統與低層次的設備和電源管理活動(dòng)隔離開(kāi)來(lái)。與其它瞄準電池供電應用的操作系統類(lèi)似,在嵌入式Linux中,電源管理活動(dòng)需要對操作系統內核和設備驅動(dòng)程序進(jìn)行特殊的干預。不過(guò),需要重點(diǎn)強調的是,雖然低層次的動(dòng)態(tài)電源管理是駐留在操作系統內核中,但電源管理策略和機制是來(lái)源于中間件和用戶(hù)應用代碼。 接口和API
理想的電源管理系統應盡可能對更多軟件堆棧層達到幾乎完全透明的程度。事實(shí)上,這是Transmeta公司在其Crusoe架構中所遵循的路線(xiàn),而且已經(jīng)成為基于BIOS的現有電源管理方案追求的目標。然而,具備手持設備設計經(jīng)驗的開(kāi)發(fā)人員證實(shí),系統內部各部分之間需要某種程度的直接合作,具體描述如下:
內核接口
在面向Linux的DPM架構中,內核中的DPM子系統負責維持整個(gè)系統的電源狀態(tài),并把DPM系統的不同電源管理模塊聯(lián)系在一起。如果內核的任何其它部分需要與DPM直接對話(huà)(盡管這種情況相對較少),那么最好把DPM看成是為驅動(dòng)程序、中間件和應用程序提供服務(wù)的元素。
驅動(dòng)程序接口
支持DPM功能的設備驅動(dòng)程序比默認的驅動(dòng)程序更了解系統狀態(tài):它們在外部事件的驅使下通過(guò)設定不同的狀態(tài)來(lái)反映或遵循那些操作機制,或者通過(guò)來(lái)自?xún)群?DPM子系統的調用來(lái)反映或遵循那些操作機制。為了實(shí)現更精確的機制決策,驅動(dòng)程序API也允許驅動(dòng)程序注冊與它們接口或由它們管理的那些設備的基礎操作特征。
應用程序API
應用程序可以分為三類(lèi):
*電源管理知會(huì )型(PM-aware)應用程序
*在電源管理知會(huì )“包裹器”中的傳統應用程序
*不帶有電源管理的傳統應用程序
電源管理知會(huì )型應用程序能夠利用機制管理器提供的API,建立其基本的約束條件,并強迫電源管理機制發(fā)生與其執行需求相匹配的變化。不直接帶有電源管理能力的傳統應用程序能夠被“包裹”在代碼或補丁中,以達到較高的效率,但它們也能夠根據更大范圍的默認機制管理,按默認的行為運行。
在嵌入式Linux DPM下的實(shí)際機制包括以下API,如dpm_set_os()(內核)、assert_constraint()、remove_constraint ()和set_operating_state()(內核和驅動(dòng)程序)、set_policy()和set_task_state()(經(jīng)系統的用戶(hù)級調用)以及/proc接口。
對實(shí)時(shí)性能的影響
迄今為止,調整CPU電壓和頻率對系統的實(shí)時(shí)性能而言依然是一個(gè)重大挑戰。任何參數的改變都將導致系統不穩定,重新鎖定鎖相環(huán)和其它動(dòng)態(tài)時(shí)鐘機制也需要相應的時(shí)間,這兩個(gè)因素將使系統的響應出現長(cháng)延時(shí)(有時(shí)達到數十毫秒),在此期間,CPU既不能執行計算操作,也不能對外部事件(中斷)做出響應。
TI的 OMAP、英特爾的Xscale和IBM的PowerLP等嵌入式處理器能夠在十幾毫秒的延時(shí)內調整頻率,在數十毫秒的延時(shí)內改變電壓,而且所有這些動(dòng)作都不會(huì )中斷系統的操作,從而允許實(shí)現更大膽和更精確的節電機制。例如,在處理MPEG視頻幀或IP語(yǔ)音包的過(guò)程中可以降低電壓和頻率。
實(shí)時(shí)性能面臨的一個(gè)更普遍的挑戰是,如何在睡眠模式期間對中斷做出響應。雖然通過(guò)編程,大多數片上外圍元件在收到中斷之后都可以喚醒系統,但開(kāi)發(fā)者必須謹慎地定義用于喚醒設備的機制,并把整個(gè)系統的延時(shí)和存儲器類(lèi)別考慮在內,以確保處理中斷的執行時(shí)間和用戶(hù)空間對事件的響應(優(yōu)先延時(shí))。
向嵌入式Linux發(fā)展的趨勢
理想情況下,用戶(hù)既無(wú)需知道也無(wú)需關(guān)心支撐其手持設備的底層操作系統,F在,設備制造商對操作系統有了更多的選擇余地。雖然微軟一直非常重視品牌,但 Windows系列操作系統進(jìn)入手持設備市場(chǎng)(如蜂窩電話(huà))的規模卻落后于Symbian和Brew,也落后于嵌入式Linux。設備制造商轉向Linux的原因之一是可以利用標準的電源管理技術(shù)替代專(zhuān)有技術(shù),這樣既能達到更快的上市時(shí)間,同時(shí)又能滿(mǎn)足終端用戶(hù)和運營(yíng)商的技術(shù)需求。 |