在便攜式應用中,低功耗是產品能否獨樹一幟的關鍵所在,其決定著產品的尺寸大小與操作時間。舉例來說,如果您在跨越大洋的飛行時選擇便攜式DVD播放器作為消遣,那么電池壽命將會成為您的首選標準之一。在本文中,我們將集中討論許多更為常用的基于軟件的技術。首先,我們從講解某些可用于嵌入式系統的電源管理技術開始,并談談其在實時應用中會遇到的諸多難題。電源效率既由硬件設計與組件選擇決定,同時也由基于軟件的運行時電源管理技術決定。本文后半部分將集中展示如何將技術子集成到用于數字信號處理器(DSP)的實時操作系統(RTOS)中,從而使應用開發人員選擇出可滿足其應用要求的專用技術。我們將以德州儀器公司(TI)的(TI) DSP/BIOS操作系統為作為實例,顯示運行時電源管理軟件技術的實施方法。 運行時電源管理技術
盡管我們討論的是某些可擴大標準多線程讀取操作系統(OS)的特定電源管理技術,但應當強調指出的是,采用搶先式(preemptive)的多線程讀取OS本身常常能夠實現顯著的電源節約。不利用OS的實時應用常常要求應用周期性探詢接口以檢測事件。從電源角度看,這樣的效率是相當低的。使用OS可使應用能夠利用中斷驅動模式,其中程序就會在需要的時候開始執行,以響應外部事件。此外,當基于OS的應用沒有可做的事情時,其就會進入空閑線程,這時則可啟動低功率操作模式,以減少功耗。
但是,操作系統除了能簡單地為DSP內核啟用空閑模式之外,其還需要提供復雜得多的電源管理支持。在實踐中,大量功率被周邊設備所消耗,可能是片上器件,也可能是外部設備,此外存儲器也會消耗大量功率。任何電源管理方法都應當具備管理外設功耗的支持,這是至關重要的。此外,電壓與功耗之間的平方關系意味著,更高效的方法是在要求較低電壓的較低時鐘速率上執行代碼,而不是先以最高的時鐘速率執行而后再轉為空閑。我們將概括講解在操作系統中實施電源管理支持的眾多機遇:
系統上電行為:
處理器及其片上外設一般均以最高時鐘速率全面上電啟動。不可避免的是,有些資源的供電啟動還尚不需要,或者根本就不會在應用過程中用到。舉例而言,MP3播放器就很少使用其USB端口與PC進行通信。在啟動時,操作系統必須為應用提供一種調節系統的機制,從而關閉不必要的電源消耗器件或使之處于空閑狀態。
空閑模式:
CMOS電路中的有效功耗只有在當電路進行時鐘計時的情況下才發生。通過關閉不需要的時鐘,可以消除不必要的有效功耗。在等待外部事件時,大多數DSP都融入了暫時終止CPU有效功耗的機制。CPU時鐘的"閑置"通常由"停止"或"閑置"指令觸發,其在應用或操作系統閑置時進行調用。一些DSP進行多個時鐘域分區,可以使這些域分別處于空閑狀態,以中止未使用模塊中的有效功耗。例如,在TI的TMS320C5510 DSP中,可以有選擇性地使6個時鐘域閑置,其中包括CPU、高速緩存、DMA、外設時鐘、時鐘生成器,以及外部存儲器接口。
除了支持閑置DSP及其片上外設之外,操作系統還必須提供用于閑置外部周邊設備的機制。例如,一些編碼譯碼器具備可以被激活的內置低功率模式。我們面臨的一個挑戰是類似看門狗定時器這樣的外設。通常情況下,看門狗定時器應根據預定義的時間間隔提供服務,以避免其激活。這樣,減緩或中止處理的電源管理技術就可能無意中導致應用故障。因此,該OS應當使應用在睡眠模式期間禁用此類外設。
斷電:
盡管空閑模式消除了有效功耗,但靜態功耗即便在電路不進行切換的情況下也會出現,這主要是由于逆向偏壓泄漏(reverse-bias leakage)造成的。如果系統包括的某個模塊不必隨時供電,那么我們就可以通過讓操作系統僅在需要時才為子系統上電,從而減少功耗。到目前為止,嵌入式系統開發商對最小化靜態功耗投入的工作極少,因為CMOS電路的靜態功耗非常低。但是,新型、具有更高性能的晶體管使電流泄漏顯著增加,這就要求我們對可降低靜態功耗及更復雜的睡眠模式給予新的關注。
電壓與頻率縮放(frequency scaling)有效功耗與切換頻率成線性比例,但與電源電壓成平方比。以較低的頻率運行應用與在全時鐘頻率上運行該應用并轉入閑置相比,談不上節約了多少功率。但是,如果頻率與平臺上可用的更低操作電壓兼容的話,那么我們就可能通過降低電壓來實現顯著的節約,這正是由于上述平方關系的緣故。這也使人們就如何通過電壓縮放來節約功率進行了大量的學術研究。
盡管電壓縮放是一種潛在的、非常誘人的、降低功耗的方法,但在現實世界的應用中我們對其加以利用時應當小心。這是由于我們需要完全了解該系統是否仍能滿足它的實時最后期限。降低電壓(進而降低CPU頻率)將改變給定任務的執行時間,從而有可能導致人物錯過實時最后期限。即便新頻率與最后期限兼容,但如果開關頻率及電壓的等待時間太長,還是會出現問題。影響等待時間的因素包括如下:
* 對穩壓器進行再編程所需時間
* DSP能否在電壓更改期間繼續執行其他任何代碼
需要對外設進行再編程,如串行端口或外部存儲器接口,與接收不同始終來源的周邊外設相接。例如,CPU 時鐘速率降低可能要求減少訪問外部存儲器的等待狀態數量。
對用于生成操作系統時鐘報時信號的計時器進行再編程的可能性,將影響操作系統時基的絕對正確性。
盡管電壓縮放實際等待時間會根據所選DSP以及需要再編程外設的數量而不同,但在許多系統中,等待時間僅為幾百微秒甚至幾毫秒。在許多實時應用中,這將使電壓縮放不切實際。盡管存在上述弱點,但僅在某些可事先預見的模式下,那些需要完全處理功率的應用,還是有可能利用電壓縮放的。例如,便攜式音樂播放機可利用DSP進行MP3譯碼及用戶接口要求的一般控制處理。如果僅MP3譯碼要求完全時鐘速率,那么DSP便可在執行用戶接口功能時降低其電壓,而僅在音樂數據開始流向DSP時才以完全功率工作。
在DSP RTOS中實施電源管理
上述電源管理技術的一個子集已包括在DSP的RTOS中。為了更好地說明如何將電源管理構建到RTOS中,我們將更詳細地對實施進行總體討論。
正如我們在前面討論中看到的那樣,特定系統減小功耗的方法主要取決于應用的性質以及DSP和周邊外設提供的選項。因此,關鍵的設計目標就是高效性及靈活性。盡管下面所描述的實施是就特定RTOS而言的,但其概念可簡單地運用其它操作系統,甚至用于無操作系統的應用環境。
電源管理器(PWRM)的要求
首款電源管理器實施的關鍵要求如下:
* 電源管理動作是應用觸發而不是操作系統觸發的。更改DSP操作模式或功能的主要決策由應用作出,并由PWRM調用推動執行。但操作系統可以(也應當)自動采取行動以節電,只要該行動不影響應用即可。例如,PWRM應當在CPU閑置時自動閑置CPU時鐘。
* 電源管理動作由應用的控制部分觸發,但應當對大部分應用代碼均為透明的。例如,具有極高價值的、優化的DSP算法不必重寫便可在管理的電源環境中工作。
* 電源管理器必須支持電壓與頻率(V/F)縮放,還必須充分利用芯片閑置與睡眠模式。
* 電源管理器必須協調整個應用過程中的電源事件處理(如應用代碼、驅動器以及操作系統本身),并在特定事件發生時向已注冊要求獲得通知的客戶發出通知。
* 電源管理特性必須在任何線程環境中可用,還必須對特定客戶的多個實例可用(如一個編碼譯碼器驅動器的多個實例)。
* 在向客戶發出電源事件通知時,電源管理器必須支持事件處理的延遲完成,并在等待延遲客戶的完成信號同時通知其他客戶。
* 電源管理器必須對具有不同功能的不同平臺是可擴展的和便攜性的。
電源管理模塊(PWRM)
稱作PWRM的電源管理器作為DSP/BIOS的一個附屬模塊被添加,如圖1所示。
?
?
從概念上說,電源管理器與內核并行;其并非系統中的另一項任務,而是作為一系列在應用控制線程以及器件驅動器環境中執行的API而存在的。無需進行內核修改便可合并到PWRM中;但在CPU時鐘與操作系統計時器時鐘相聯結的平臺上,DSP/BIOS時鐘模塊(CLK)要進行補充例行程序,以使其根據頻率縮放事件調整操作系統時鐘(作為PWRM的客戶)。PWRM寫入并讀取時鐘空閑配置寄存器,并通過控制CPU時鐘速率及穩壓電路的針對不同平臺的功率擴展庫(PSL)直接與DSP硬件相連接。PSL將PWRM及應用的其他部分與頻率及電壓控制硬件的低級實施細節相隔離。
電源管理器的作用在于管理DSP/BIOS應用中所有與電源相關的事項,既有應用開發人員靜態配置的,也有在運行時動態調用的:
電源管理操作的靜態配置。PWRM支持DSP/BIOS配置工具為一些電源管理操作提供設計時選項。例如,開發人員可配置閑置功能,插入DSP/BIOS閑置環路中,以自動閑置DSP緩存及CPU;或配置節電功能,在導入時自動調用,以便閑置不必要的外設或子系統。
電源管理API:
PWRM提供了API,使開發人員能夠閑置特定的時鐘域,以調用定制睡眠模式,并動態更改DSP CPU的操作電壓及頻率。憑借新型API系列,應用還可指定是否應將電壓與頻率同時縮放,是否可在電壓降低轉換過程中繼續執行,以及V/F設置點屬性及等待時間的查詢。
電源事件的注冊和通知:
為協調整個應用過程中的V/F縮放、睡眠模式以及其他電源事件,PWRM引入了新的注冊及通知機制,使處理電源事件(如"將更改V/F設置點"、"已更改V/F設置點"、"將進入睡眠模式"、"退出睡眠模式"、"電源故障"等)的實體(如應用代碼、外設驅動器、打包的內容以及操作系統時鐘模塊等)能夠就其處理的特定電源事件進行注冊以獲得有關通知。
PWRM帶給DSP/BIOS的關鍵特性是"中央注冊系統(central registry)",使處理電源事件的代碼可就其需要獲得通知的特定電源事件進行注冊,以獲得有關通知,并能夠在其不再需要通知時不進行注冊。圖2顯示了注冊與通知概念:
?
?
?
圖2電源事件通知概念
在該例中,客戶注冊并獲得關于特定V/F電源縮放事件通知。圖中編號列出的步驟為:
應用代碼進行注冊,以獲得V/F設置點更改通知。例如,DSP就不同的設置點要求不同的外部存儲器接口(EMIF)設置,因此應用寄存器便可控制電源管理器(PWRM)代碼,進而EMIF設置則可隨著設置點的更改而改變。作為注冊的一部分,應用代碼在事件發生時告知:PWRM要調用的特定的通知功能;作為通知一部分傳遞的針對不同客戶的參數;以及控件代碼能夠操作的V/F設置點(從而使PWRM不會試圖啟動無支持的設置點更改)。
采用串行端口及DMA傳輸數據寄存器的DSP/BIOS編碼譯碼器驅動器將獲得V/F設置點更改通知。 在該應用中,在較低V/F設置點上沒有MP3譯碼發生。因此在沒有執行MP3回放時,驅動器可閑置串行端口以及DMA時鐘域,并設置外部編碼譯碼器為低功率模式。
與此類似,文件系統管理器也注冊到PWRM,以便獲得設置點更改的通知,因為其管理著存儲媒體。
應用決定更改V/F設置點(如MP3播放器模式的更改),并調用PWRM API以啟動設置點更改。
PWRM確認新的設置點就所有已注冊客戶啟用,并隨后將待進行的設置點更改通知給所有已注冊的客戶。
PWRM向PSL發出調用,以更改電壓及頻率設置點。為了安全地更改V/F設置點,PSL將適當寫入時鐘生成及電壓穩壓硬件。
在設置點更改后,PWRM將通知客戶設置點已發生更改。
電源管理器的配置
DSP/BIO實現了內核對象的靜態與動態創建。例如,任務在設計時利用圖形配置工具可靜態創建,也可在運行時通過TSK_create() API調用動態創建。電源管理器的許多配置參數涉及到設計時間決策;因此電源管理的靜態配置被添加至DSP/BIOS圖形配置工具使用的配置文件。以下電源管理器參數是可靜態配置的:
* 電源管理器啟用/禁用
* 應用是否需要在導入時調用特定的用戶功能以減小功耗
* 應用是否需要就頻率縮放事件對BIOS時鐘進行再編程
* 應用是否需要在CPU空閑時自動閑置時鐘域
* 電壓與頻率縮放啟用/禁用
* 導入時CPU頻率值
* 導入時CPU電壓值
* 電壓縮放啟用/禁用
* 應用是否需要在電壓下降時等待
* 應用是否需要在DSP進入深度睡眠狀態時閑置時鐘域
* 哪些中斷可將DSP退出深度睡眠模式
圖3所示的屏幕截面圖反映了配置過程,顯示了電源管理器一般屬性的配置列表。
?
?
?
圖3配置電源管理器一般屬性
除了電源管理器靜態配置屬性之外,以下屬性是在運行時通過導出的電源管理器API動態再配置的:
* 當CPU空閑時,時鐘域自動處于空閑狀態
* 與頻率一起啟用電壓縮放
* 在電壓降低時等待
總結
在實時嵌入式系統中可部署一些設計及運行時電源管理技術。一般來說,有些技術對廣泛系列的系統均是適用的,而另外一些技術則只適用于專門的應用。例如,顯示了某些技術如何被整合到DSP/BIOS RTOS系統中,同時應用開發商還能夠就其應用的要求選擇合適的技術。
評論
查看更多