歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> Linux文化 >> 嵌入式Linux系統的動態電源管理技術

嵌入式Linux系統的動態電源管理技術

日期:2017/2/27 11:54:52   编辑:Linux文化

引 言

如何有效地管理嵌入式系統,尤其是移動終端的電源功耗,是一個很有價值的課題。動態電源管理DPM(Dynamic Power, Management)技術提供一種操作系統級別的電源管理能力,包含CPU工作頻率和電壓,外部總線時鐘頻率,外部設備時鐘/電源等方面的動態調節、管理功能。通過用戶層制定策略與內核提供管理功能交互,實時調整電源參數而同時滿足系統實時應用的需求,允許電源管理參數在短時間的空閒或任務運行在低電源需求時,可以被頻繁地、低延遲地調整,從而實現更精細、更智能的電源管理。

1 動態電源管理原理

CMOS電路的總功耗是活動功耗與靜態功耗之和。當電路工作或邏輯狀態轉換時會產生活動功耗,未發生轉換時晶體管漏電流會造成靜態功耗:  

式中C為電容,fc為開關頻率,Vdd為電源電壓,IQ為漏電流。C·Vdd·fc為活動功耗;VddIQ為靜態功耗。在操作系統級的電源管理設計實現中,重點是活動功耗。從中可以得出幾種管理活動功耗的方法:

①電壓/時鐘調節。通過降低電壓和時鐘來減少活動功耗和靜態功耗。

②時鐘選通。停止電路時鐘,即設fc為O,讓Pactive為0。將時鐘從不用的電路模塊斷開,減少活動功耗。許多CPU都有“閒置”或“停止”指令,一些處理器還可通過門控關閉非CPU時鐘模塊,如高速緩存、DMA外設等。

③電源供應選通。斷開電路中不使用的模塊電源供應。這種方法需要考慮重新恢復該模塊的代價。

斷開不使用的模塊的時鐘和電源供應可以減少電源消耗,但要能夠正確預測硬件模塊的空閒時期。因為重新使能硬件模塊時鐘和電源會造成一定延遲,不正確的預測將導致性能下降。

從式(1)可以看出:降低電壓對功耗的貢獻是2次方的;降低時鐘也可降低功耗,但它同時也降低性能,延長同一任務的執行時間。設2.0 V高壓下的能量消耗為E高=P高·T,則1.0 V低壓下能量消耗為E低=P低·2T(實踐中頻率近似線性依賴電壓),再根據式(1)容易得到P高=8P低。綜合上式可以得出:E高=4E低,所以,選擇滿足性能所需的最低時鐘頻率,在時鐘頻率和各種系統部件運行電壓要求范圍內,設定最低的電源電壓,將會大量減少系統功耗。上例中完成任務所需的能量可以節約75%。

2 硬件平台對動態電源管理的支持

通過調節電壓、頻率來減少系統活動功耗需要硬件支持。SoC系統一般有多個執行單元,如PM(電源管理)模塊、OSC(片上晶振)模塊、PLL(鎖相環)模塊、CPU核以及CPU核中的數據緩存和指令緩存,其他模塊統稱為外圍模塊(例如1,CD控制器、UART、SDRAM控制器等)。CPU高頻時鐘主要由PLL提供,同時PLL也為外圍模塊和SoC總線提供其他頻率時鐘。一般SoC系統都有一些分頻器和乘法器可以控制這些時鐘。PM模塊主要是管理系統的電源供應狀態。一般有自己的低頻、高准確度晶,振,用以維持一個RTC時鐘、RTC定時器和中斷控制單元。其中中斷控制單元使RTC定時器和外部設備能夠喚醒掛起的SoC系統。下面以一個廣泛用於手持設備的TI0MAPl610處理器為例。

①時鐘模塊。OMAPl610提供一個數字相控鎖環(DPLL),將外頻或晶振輸入轉化為高頻,供給OMAP 3.2核以及其他片上設備。操作DPLL控制寄存器DPLLl_CTL_REG就可以設置DPLL輸出時鐘,輔以設置時鐘復用寄存器(MUX)和時鐘控制寄存器ARM_CKCTL,就能控制MPU和DSP的運行頻率,MPU、DSP外設時鐘,以及LCD刷新時鐘,TC_CK時鐘(Trafflc Control Clock)等。

②電源管理模塊。OMAPl610集成一個超低功耗控制模塊(ULPD),用以控制OMAP3.2時鐘和控制OMAPl610進出多種電源管理模式。操作ULPD控制寄存器ULPD_POWER_CTRL,可以設置處理器電壓、管理運行模式。





3 嵌入式Linux動態電源管理軟件實現

嵌入式Linux已被廣泛應用在電源功耗敏感的嵌入式設備上,特別是移動手持設備;因此,設計高效、精細的電源管理技術是嵌入式Linux開發成功的關鍵技術之一。

3.1動態電源管理實現原理

系統運行在常見的幾種不同狀態,有不同電源級別要求,其中蘊涵著豐富的節能機會。狀態轉化如圖1所示。

①系統運行在任務、任務一、任務+中的任務狀態之一,可以響應中斷進入中斷處理,可以進入空閒或睡眠狀態。不同的任務要求不同的電源級別,例如播放MP3可以降低處理器的頻率,而運行在線互動游戲時則要求處理器全速運行,所以DPM需要在不同任務中提供電源管理服務。

②系統進入空閒,這時可以被中斷喚醒,處理中斷:DPM提供受管理的空閒模式,可以更智能地節省電源。

③系統在中斷處理完可以進入空閒狀態,或者從中斷中回到任務態。

④系統在任務狀態下可進入睡眠模式。系統可掛起到RAM或者其他存儲器中,關閉外設,實現最大限度地省電。通過特定事件(例如定義UART中斷)要求系統退出睡眠模式。

綜上所述,可以把動態電源管理分為平台掛起/恢復、設備電源管理以及平台動態管理等三類。平台掛起/恢復目標在於管理較大的、非常見的重大電源狀態改變,用於減少產品設備在長時間的空閒之後,減少電源消耗。設備電源管理用於關斷/恢復平台中的設備(平台掛起/恢復以及動態管理中均要用到);而平台動態管理目標在於頻繁發生、更高粒度的電源狀態改變范圍之內的管理。系統運行的任務可以細分為普通任務和功率受監控的任務。前者電源狀態是DPM_NO_STATE,不作電源管理;後者對功率敏感,在被調度時(參見圖1)可以通過DPM來設置其電源管理狀態,要求運行在不同的電源級別。本文重點描述平台動態電源管理和設備電源管理兩類,並將設備電源管理視為動態電源管理的組成部分。

3.2平台動態電源管理設計

在Linux架構下實現電源管理內核模塊需要實現一個應用層和操作系統的接口,一個為多個硬件平台提供通用電源管理邏輯控制框架的硬件無關層,以及一個管理特定硬件電源控制接口的平台相關電源控制層。

3.2.1 內核模塊控制模型

模型主要由操作點、管理類、管理策略等組成。

①用電源管理操作點對應平台硬件相關參數。例如,TIOMAPl610參考開發板有多個參數:CPU電壓、DPLL頻率控制(通過倍頻器和分頻器兩個參數)、CPU頻率控制、TC交通控制器、外部設備控制、DSP運行頻率、DSP的MMU單元頻率和LCD刷新頻率。如果使用TI的DSP代碼,則後四個參數為不可控,均使用默認值,如表1所列。

其中,“192 MHz—1.5 V”操作點參數“1 500”表示OMAP3.2核心電壓為1 500 mV;“16”表示DPLL頻率控制12 MHz晶振輸入16倍頻;“1”表示分頻為1;“1”表示OMAP3.2核心分頻為1(所以它運行在192 MHz)“2”表示TC(交通控制器)分頻為2(所以它運行在96 MHz).

②類:多個操作點組成一個管理類。

③策略:多個或一個類組成策略。

一般可以簡化系統模型,直接將DPM策略映射到一個系統操作狀態下特定的DPM操作點,如表2所列。復雜點系統可以考慮將DPM策略映射到一個多操作點的DPM管理類,再根據操作狀態切換時選擇管理類中滿足約束的第一個操作點。

表2中策略映射到四個操作點,分別對應“sleep”、 “idle”、“task-1”、“task”四種電源狀態。除非用戶加以改變,否則系統fork創建的任務默認運行在DPM-TASK-STATE狀態,對應表2中task狀態,其操作點為192 MHz-1.5 V。

通過這種結構,電源管理系統把系統創建的任務和具體的電源管理硬件單元參數連接起來,為任務間精細電源管理提供一個框架。

3.2.2內核功能實現

如圖2所示,DPM軟件實現可以分為應用層、內核層、硬件設備等幾個部分。其中內核層又可以分為接口層,硬件無關層和內核硬件相關層(圖2中虛線部分),可以分為以下幾個方面來描述。

第一,用戶層可以通過內核提供的sysfs文件系統和設備驅動模型(LDM)接口來進行電源管理。DPM實現還提供Proc接口來實現電源管理的命令;也可以通過增加系統調用接口使用戶程序更容易調用DPM功能。

通過修改任務切換宏switch_tO,添加dpm_set_OS(task_dpm_ state)接口,然後電源管理引擎將當前任務電源狀態設置到硬件參數。

第二,內核硬件無關層提供電源管理邏輯控制框架。電源管理引擎主要實現API調用,選擇操作點,提供操作點設置的同步和異步邏輯等。

設備電源管理模塊還實現設備驅動約束,通過LDM接口管理設備時鐘和電源,提供掛起和恢復控制。 設備時鐘電源關層主要對應系統的各種總線和設備時鐘電源參數管理。

3.2.3 設備電源管理和驅動約束

DPM通過LDM可以對設備進行電源管理。LDM中device_driver結構有設備掛起和恢復等回調函數,device結構有驅動約束。需要在設備初始化時使用注冊函數向相應系統總線注冊該設備。例如,簡化後12C的LDM相關參數為:

I2C驅動注冊到MPU公有TI外圍總線:driver_reg-ister(&omap_i2c_driver)platform_device_register(&omap_i2c_device)。

在驅動程序中實現掛起和恢復函數:omap_i2c_controller_suspen(&omap_i2c_device),omap_i2c_con-troller_resume(&omap_i2c_deviee)。

這樣,注冊設備在sysfs中都有一個管理接口。通過這些接口可以操縱設備的電源狀態。在多種情況下,可利用該接口來掛斷設備,例如:應用程序顯式掛斷應用中不需要的設備;平台掛起前需掛斷所有設備;當DPM將系統設置到設備不兼容狀態時需掛起該設備等等。其中DPM中管理設備電源狀態時還提供設備驅動約束檢查(頻率相關)。例如,當系統電源狀態改變,准備運行在新的操作點時,驅動約束檢查該狀態是否滿足設備正常運行。如果不滿足,且當前操作點force屬性設置為1,設備首先被LDM回調函數關斷(或將設備置於和此時PLL相應的掛起狀態);如果滿足條件,則利用設備驅動中實現的調節函數轉到新狀態。

驅動約束還用於限制DPM操作方式。當沒有設備被使用時,約束才允許DPM將系統轉到低電源空閒狀態。

4 總 結

DPM技術通過內核模塊的方式實現任務級別電源管理、實現了有效的設備電源管理,滿足了嵌入式Linux的需求,補充了基於桌面系統APM和APCI電源管理技術的不足。實踐證明,DPM對嵌入式系統,尤其是移動終端,能夠起到很好的節能效果。

當然,動態電源管理系統還有待於進一步完善。例如:①可以根據硬件和軟件收集系統負載狀態,使用Markov,鏈等手段准確預測電源狀態,從而設計出更智能、更有效的狀態切換管理策略;②電源管理和實時性能要求之間的復雜關系還需處理等等。


Copyright © Linux教程網 All Rights Reserved