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

來源:互聯網
上載者:User
嵌入式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,鏈等手段準確預測電源狀態,從而設計出更智能、更有效狀態切換管理原則;②電源管理和即時效能要求之間的複雜關係還需處理等等。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.