<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 學(xué)習方法與實(shí)踐 > 嵌入式Linux系統的動(dòng)態(tài)電源管理技術(shù)

嵌入式Linux系統的動(dòng)態(tài)電源管理技術(shù)

作者: 時(shí)間:2008-01-28 來(lái)源:賽迪網(wǎng) 收藏

    通過(guò)用戶(hù)層制定策略與內核提供管理功能交互,實(shí)時(shí)調整電源參數而同時(shí)滿(mǎn)足系統實(shí)時(shí)應用的需求,允許電源管理參數在短時(shí)間的空閑或任務(wù)運行在低電源需求時(shí),可以被頻繁地、低延遲地調整,從而實(shí)現更精細、更智能的電源管理。

本文引用地址:http://dyxdggzs.com/article/78117.htm

  1 動(dòng)態(tài)電源管理原理

  CMOS電路的總功耗是活動(dòng)功耗與靜態(tài)功耗之和。當電路工作或邏輯狀態(tài)轉換時(shí)會(huì )產(chǎn)生活動(dòng)功耗,未發(fā)生轉換時(shí)晶體管漏電流會(huì )造成靜態(tài)功耗:

    式中C為電容,fc為開(kāi)關(guān)頻率,Vdd為電源電壓,IQ為漏電流。C·Vdd·fc為活動(dòng)功耗;VddIQ為靜態(tài)功耗。在操作系統級的電源管理設計實(shí)現中,重點(diǎn)是活動(dòng)功耗。從中可以得出幾種管理活動(dòng)功耗的方法:

 ?、匐妷海瘯r(shí)鐘調節。通過(guò)降低電壓和時(shí)鐘來(lái)減少活動(dòng)功耗和靜態(tài)功耗。

 ?、跁r(shí)鐘選通。停止電路時(shí)鐘,即設fc為O,讓Pactive為0。將時(shí)鐘從不用的電路模塊斷開(kāi),減少活動(dòng)功耗。許多CPU都有“閑置”或“停止”指令,一些處理器還可通過(guò)門(mén)控關(guān)閉非CPU時(shí)鐘模塊,如高速緩存、DMA外設等。

 ?、垭娫垂x通。斷開(kāi)電路中不使用的模塊電源供應。這種方法需要考慮重新恢復該模塊的代價(jià)。

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

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

  2 硬件平臺對動(dòng)態(tài)電源管理的支持

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

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

 ?、陔娫垂芾砟K。OMAPl610集成一個(gè)超低功耗控制模塊(ULPD),用以控制OMAP3.2時(shí)鐘和控制OMAPl610進(jìn)出多種電源管理模式。操作ULPD控制寄存器ULPD_POWER_CTRL,可以設置處理器電壓、管理運行模式。

  3 嵌入式Linux動(dòng)態(tài)電源管理軟件實(shí)現

  嵌入式Linux已被廣泛應用在電源功耗敏感的嵌入式設備上,特別是移動(dòng)手持設備;因此,設計高效、精細的電源管理技術(shù)是嵌入式Linux開(kāi)發(fā)成功的關(guān)鍵技術(shù)之一。

  3.1動(dòng)態(tài)電源管理實(shí)現原理

  系統運行在常見(jiàn)的幾種不同狀態(tài),有不同電源級別要求,其中蘊涵著(zhù)豐富的節能機會(huì )。狀態(tài)轉化如圖1所示。

    ①系統運行在任務(wù)、任務(wù)一、任務(wù)+中的任務(wù)狀態(tài)之一,可以響應中斷進(jìn)入中斷處理,可以進(jìn)入空閑或睡眠狀態(tài)。不同的任務(wù)要求不同的電源級別,例如播放MP3 可以降低處理器的頻率,而運行在線(xiàn)互動(dòng)游戲時(shí)則要求處理器全速運行,所以DPM需要在不同任務(wù)中提供電源管理服務(wù)。

 ?、谙到y進(jìn)入空閑,這時(shí)可以被中斷喚醒,處理中斷:DPM提供受管理的空閑模式,可以更智能地節省電源。

 ?、巯到y在中斷處理完可以進(jìn)入空閑狀態(tài),或者從中斷中回到任務(wù)態(tài)。

 ?、芟到y在任務(wù)狀態(tài)下可進(jìn)入睡眠模式。系統可掛起到RAM或者其他存儲器中,關(guān)閉外設,實(shí)現最大限度地省電。通過(guò)特定事件(例如定義UART中斷)要求系統退出睡眠模式。

  綜上所述,可以把動(dòng)態(tài)電源管理分為平臺掛起/恢復、設備電源管理以及平臺動(dòng)態(tài)管理等三類(lèi)。平臺掛起/恢復目標在于管理較大的、非常見(jiàn)的重大電源狀態(tài)改變,用于減少產(chǎn)品設備在長(cháng)時(shí)間的空閑之后,減少電源消耗。設備電源管理用于關(guān)斷/恢復平臺中的設備(平臺掛起/恢復以及動(dòng)態(tài)管理中均要用到);而平臺動(dòng)態(tài)管理目標在于頻繁發(fā)生、更高粒度的電源狀態(tài)改變范圍之內的管理。系統運行的任務(wù)可以細分為普通任務(wù)和功率受監控的任務(wù)。

    前者電源狀態(tài)是DPM_NO_STATE,不作電源管理;后者對功率敏感,在被調度時(shí)(參見(jiàn)圖1)可以通過(guò)DPM來(lái)設置其電源管理狀態(tài),要求運行在不同的電源級別。本文重點(diǎn)描述平臺動(dòng)態(tài)電源管理和設備電源管理兩類(lèi),并將設備電源管理視為動(dòng)態(tài)電源管理的組成部分。

  3.2平臺動(dòng)態(tài)電源管理設計

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

  3.2.1 內核模塊控制模型

  模型主要由操作點(diǎn)、管理類(lèi)、管理策略等組成。

 ?、儆秒娫垂芾聿僮鼽c(diǎn)對應平臺硬件相關(guān)參數。例如,TIOMAPl610參考開(kāi)發(fā)板有多個(gè)參數:CPU電壓、DPLL頻率控制(通過(guò)倍頻器和分頻器兩個(gè)參數)、CPU頻率控制、TC交通控制器、外部設備控制、DSP運行頻率、DSP的MMU單元頻率和LCD刷新頻率。如果使用TI的DSP代碼,則后四個(gè)參數為不可控,均使用默認值,如表1所列。

    其中,“192 MHz—1.5 V”操作點(diǎn)參數“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).

 ?、陬?lèi):多個(gè)操作點(diǎn)組成一個(gè)管理類(lèi)。

 ?、鄄呗裕憾鄠€(gè)或一個(gè)類(lèi)組成策略。

  一般可以簡(jiǎn)化系統模型,直接將DPM策略映射到一個(gè)系統操作狀態(tài)下特定的DPM操作點(diǎn),如表2所列。復雜點(diǎn)系統可以考慮將DPM策略映射到一個(gè)多操作點(diǎn)的DPM管理類(lèi),再根據操作狀態(tài)切換時(shí)選擇管理類(lèi)中滿(mǎn)足約束的第一個(gè)操作點(diǎn)。

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

  通過(guò)這種結構,電源管理系統把系統創(chuàng )建的任務(wù)和具體的電源管理硬件單元參數連接起來(lái),為任務(wù)間精細電源管理提供一個(gè)框架。

  3.2.2內核功能實(shí)現

  如圖2所示,DPM軟件實(shí)現可以分為應用層、內核層、硬件設備等幾個(gè)部分。其中內核層又可以分為接口層,硬件無(wú)關(guān)層和內核硬件相關(guān)層(圖2中虛線(xiàn)部分),可以分為以下幾個(gè)方面來(lái)描述。

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

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

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

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

  3.2.3 設備電源管理和驅動(dòng)約束

  DPM通過(guò)LDM可以對設備進(jìn)行電源管理。LDM中device_driver結構有設備掛起和恢復等回調函數,device結構有驅動(dòng)約束。需要在設備初始化時(shí)使用注冊函數向相應系統總線(xiàn)注冊該設備。例如,簡(jiǎn)化后12C的LDM相關(guān)參數為:

    I2C驅動(dòng)注冊到MPU公有TI外圍總線(xiàn):driver_reg-ister(&omap_i2c_driver) platform_device_register(&omap_i2c_device)。在驅動(dòng)程序中實(shí)現掛起和恢復函數: omap_i2c_controller_suspen(&omap_i2c_device),omap_i2c_con- troller_resume(&omap_i2c_deviee)。這樣,所有注冊到系統的設備在sysfs中都有一個(gè)管理接口。
  通過(guò)這些接口可以操縱設備的電源狀態(tài)。在多種情況下,可利用該接口來(lái)掛斷設備,例如:應用程序顯式掛斷應用中不需要的設備;平臺掛起前需掛斷所有設備;當DPM將系統設置到設備不兼容狀態(tài)時(shí)需掛起該設備等等。其中DPM中管理設備電源狀態(tài)時(shí)還提供設備驅動(dòng)約束檢查(頻率相關(guān))。例如,當系統電源狀態(tài)改變,準備運行在新的操作點(diǎn)時(shí),驅動(dòng)約束檢查該狀態(tài)是否滿(mǎn)足設備正常運行。如果不滿(mǎn)足,且當前操作點(diǎn)force屬性設置為1,設備首先被LDM回調函數關(guān)斷 (或將設備置于和此時(shí)PLL相應的掛起狀態(tài));如果滿(mǎn)足條件,則利用設備驅動(dòng)中實(shí)現的調節函數轉到新?tīng)顟B(tài)。

  驅動(dòng)約束還用于限制DPM操作方式。當沒(méi)有設備被使用時(shí),約束才允許DPM將系統轉到低電源空閑狀態(tài)。

  4 總 結

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

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>