如何有效地管理嵌入式系統(tǒng),尤其是移動終端的電源功耗,是一個很有價值的課題。動態(tài)電源管理DPM(Dynamic Power, Management)技術(shù)提供一種操作系統(tǒng)級別的電源管理能力,包含CPU工作頻率和電壓,外部總線時鐘頻率,外部設(shè)備時鐘/電源等方面的動態(tài)調(diào)節(jié)、管理功能。通過用戶層制定策略與內(nèi)核提供管理功能交互,實(shí)時調(diào)整電源參數(shù)而同時滿足系統(tǒng)實(shí)時應(yīng)用的需求,允許電源管理參數(shù)在短時間的空閑或任務(wù)運(yùn)行在低電源需求時,可以被頻繁地、低延遲地調(diào)整,從而實(shí)現(xiàn)更精細(xì)、更智能的電源管理。
1 動態(tài)電源管理原理
CMOS電路的總功耗是活動功耗與靜態(tài)功耗之和。當(dāng)電路工作或邏輯狀態(tài)轉(zhuǎn)換時會產(chǎn)生活動功耗,未發(fā)生轉(zhuǎn)換時晶體管漏電流會造成靜態(tài)功耗:
公式
式中C為電容,fc為開關(guān)頻率,Vdd為電源電壓,IQ為漏電流。C·Vdd·fc為活動功耗;VddIQ為靜態(tài)功耗。在操作系統(tǒng)級的電源管理設(shè)計實(shí)現(xiàn)中,重點(diǎn)是活動功耗。從中可以得出幾種管理活動功耗的方法:
?、匐妷海瘯r鐘調(diào)節(jié)。通過降低電壓和時鐘來減少活動功耗和靜態(tài)功耗。
?、跁r鐘選通。停止電路時鐘,即設(shè)
fc為O,讓Pactive為0。將時鐘從不用的電路模塊斷開,減少活動功耗。許多CPU都有“閑置”或“停止”指令,一些處理器還可通過門控關(guān)閉非CPU時鐘模塊,如高速緩存、DMA外設(shè)等。
?、垭娫垂?yīng)選通。斷開電路中不使用的模塊電源供應(yīng)。這種方法需要考慮重新恢復(fù)該模塊的代價。
斷開不使用的模塊的時鐘和電源供應(yīng)可以減少電源消耗,但要能夠正確預(yù)測硬件模塊的空閑時期。因?yàn)橹匦率鼓苡布K時鐘和電源會造成一定延遲,不正確的預(yù)測將導(dǎo)致性能下降。
從式(1)可以看出:降低電壓對功耗的貢獻(xiàn)是2次方的;降低時鐘也可降低功耗,但它同時也降低性能,延長同一任務(wù)的執(zhí)行時間。設(shè)2.0 V高壓下的能量消耗為E高=P高·T,則1.0 V低壓下能量消耗為E低=P低·2T(實(shí)踐中頻率近似線性依賴電壓),再根據(jù)式(1)容易得到P高=8P低。綜合上式可以得出:E高=4E低,所以,選擇滿足性能所需的最低時鐘頻率,在時鐘頻率和各種系統(tǒng)部件運(yùn)行電壓要求范圍內(nèi),設(shè)定最低的電源電壓,將會大量減少系統(tǒng)功耗。上例中完成任務(wù)所需的能量可以節(jié)約75%。
2 硬件平臺對動態(tài)電源管理的支持
通過調(diào)節(jié)電壓、頻率來減少系統(tǒng)活動功耗需要硬件支持。SoC系統(tǒng)一般有多個執(zhí)行單元,如PM(電源管理)模塊、OSC(片上晶振)模塊、PLL(鎖相環(huán))模塊、CPU核以及CPU核中的數(shù)據(jù)緩存和指令緩存,其他模塊統(tǒng)稱為外圍模塊(例如1,CD控制器、UART、SDRAM控制器等)。CPU高頻時鐘主要由PLL提供,同時PLL也為外圍模塊和SoC總線提供其他頻率時鐘。一般SoC系統(tǒng)都有一些分頻器和乘法器可以控制這些時鐘。PM模塊主要是管理系統(tǒng)的電源供應(yīng)狀態(tài)。一般有自己的低頻、高準(zhǔn)確度晶,振,用以維持一個RTC時鐘、RTC定時器和中斷控制單元。其中中斷控制單元使RTC定時器和外部設(shè)備能夠喚醒掛起的SoC系統(tǒng)。下面以一個廣泛用于手持設(shè)備的TI0MAPl610處理器為例。
?、贂r鐘模塊。OMAPl610提供一個數(shù)字相控鎖環(huán)(DPLL),將外頻或晶振輸入轉(zhuǎn)化為高頻,供給OMAP 3.2核以及其他片上設(shè)備。操作DPLL控制寄存器DPLLl_CTL_REG就可以設(shè)置DPLL輸出時鐘,輔以設(shè)置時鐘復(fù)用寄存器(MUX)和時鐘控制寄存器ARM_CKCTL,就能控制MPU和DSP的運(yùn)行頻率,MPU、DSP外設(shè)時鐘,以及LCD刷新時鐘,TC_CK時鐘(Trafflc Control Clock)等。
?、陔娫垂芾砟K。OMAPl610集成一個超低功耗控制模塊(ULPD),用以控制OMAP3.2時鐘和控制OMAPl610進(jìn)出多種電源管理模式。操作ULPD控制寄存器ULPD_POWER_CTRL,可以設(shè)置處理器電壓、管理運(yùn)行模式。
3 嵌入式Linux動態(tài)電源管理軟件實(shí)現(xiàn)
嵌入式Linux已被廣泛應(yīng)用在電源功耗敏感的嵌入式設(shè)備上,特別是移動手持設(shè)備;因此,設(shè)計高效、精細(xì)的電源管理技術(shù)是嵌入式Linux開發(fā)成功的關(guān)鍵技術(shù)之一。
3.1動態(tài)電源管理實(shí)現(xiàn)原理
系統(tǒng)運(yùn)行在常見的幾種不同狀態(tài),有不同電源級別要求,其中蘊(yùn)涵著豐富的節(jié)能機(jī)會。狀態(tài)轉(zhuǎn)化如圖1所示。
狀態(tài)轉(zhuǎn)化
①系統(tǒng)運(yùn)行在任務(wù)、任務(wù)一、任務(wù)+中的任務(wù)狀態(tài)之一,可以響應(yīng)中斷進(jìn)入中斷處理,可以進(jìn)入空閑或睡眠狀態(tài)。不同的任務(wù)要求不同的電源級別,例如播放MP3可以降低處理器的頻率,而運(yùn)行在線互動游戲時則要求處理器全速運(yùn)行,所以DPM需要在不同任務(wù)中提供電源管理服務(wù)。
?、谙到y(tǒng)進(jìn)入空閑,這時可以被中斷喚醒,處理中
1 動態(tài)電源管理原理
CMOS電路的總功耗是活動功耗與靜態(tài)功耗之和。當(dāng)電路工作或邏輯狀態(tài)轉(zhuǎn)換時會產(chǎn)生活動功耗,未發(fā)生轉(zhuǎn)換時晶體管漏電流會造成靜態(tài)功耗:
公式
式中C為電容,fc為開關(guān)頻率,Vdd為電源電壓,IQ為漏電流。C·Vdd·fc為活動功耗;VddIQ為靜態(tài)功耗。在操作系統(tǒng)級的電源管理設(shè)計實(shí)現(xiàn)中,重點(diǎn)是活動功耗。從中可以得出幾種管理活動功耗的方法:
?、匐妷海瘯r鐘調(diào)節(jié)。通過降低電壓和時鐘來減少活動功耗和靜態(tài)功耗。
?、跁r鐘選通。停止電路時鐘,即設(shè)
fc為O,讓Pactive為0。將時鐘從不用的電路模塊斷開,減少活動功耗。許多CPU都有“閑置”或“停止”指令,一些處理器還可通過門控關(guān)閉非CPU時鐘模塊,如高速緩存、DMA外設(shè)等。
?、垭娫垂?yīng)選通。斷開電路中不使用的模塊電源供應(yīng)。這種方法需要考慮重新恢復(fù)該模塊的代價。
斷開不使用的模塊的時鐘和電源供應(yīng)可以減少電源消耗,但要能夠正確預(yù)測硬件模塊的空閑時期。因?yàn)橹匦率鼓苡布K時鐘和電源會造成一定延遲,不正確的預(yù)測將導(dǎo)致性能下降。
從式(1)可以看出:降低電壓對功耗的貢獻(xiàn)是2次方的;降低時鐘也可降低功耗,但它同時也降低性能,延長同一任務(wù)的執(zhí)行時間。設(shè)2.0 V高壓下的能量消耗為E高=P高·T,則1.0 V低壓下能量消耗為E低=P低·2T(實(shí)踐中頻率近似線性依賴電壓),再根據(jù)式(1)容易得到P高=8P低。綜合上式可以得出:E高=4E低,所以,選擇滿足性能所需的最低時鐘頻率,在時鐘頻率和各種系統(tǒng)部件運(yùn)行電壓要求范圍內(nèi),設(shè)定最低的電源電壓,將會大量減少系統(tǒng)功耗。上例中完成任務(wù)所需的能量可以節(jié)約75%。
2 硬件平臺對動態(tài)電源管理的支持
通過調(diào)節(jié)電壓、頻率來減少系統(tǒng)活動功耗需要硬件支持。SoC系統(tǒng)一般有多個執(zhí)行單元,如PM(電源管理)模塊、OSC(片上晶振)模塊、PLL(鎖相環(huán))模塊、CPU核以及CPU核中的數(shù)據(jù)緩存和指令緩存,其他模塊統(tǒng)稱為外圍模塊(例如1,CD控制器、UART、SDRAM控制器等)。CPU高頻時鐘主要由PLL提供,同時PLL也為外圍模塊和SoC總線提供其他頻率時鐘。一般SoC系統(tǒng)都有一些分頻器和乘法器可以控制這些時鐘。PM模塊主要是管理系統(tǒng)的電源供應(yīng)狀態(tài)。一般有自己的低頻、高準(zhǔn)確度晶,振,用以維持一個RTC時鐘、RTC定時器和中斷控制單元。其中中斷控制單元使RTC定時器和外部設(shè)備能夠喚醒掛起的SoC系統(tǒng)。下面以一個廣泛用于手持設(shè)備的TI0MAPl610處理器為例。
?、贂r鐘模塊。OMAPl610提供一個數(shù)字相控鎖環(huán)(DPLL),將外頻或晶振輸入轉(zhuǎn)化為高頻,供給OMAP 3.2核以及其他片上設(shè)備。操作DPLL控制寄存器DPLLl_CTL_REG就可以設(shè)置DPLL輸出時鐘,輔以設(shè)置時鐘復(fù)用寄存器(MUX)和時鐘控制寄存器ARM_CKCTL,就能控制MPU和DSP的運(yùn)行頻率,MPU、DSP外設(shè)時鐘,以及LCD刷新時鐘,TC_CK時鐘(Trafflc Control Clock)等。
?、陔娫垂芾砟K。OMAPl610集成一個超低功耗控制模塊(ULPD),用以控制OMAP3.2時鐘和控制OMAPl610進(jìn)出多種電源管理模式。操作ULPD控制寄存器ULPD_POWER_CTRL,可以設(shè)置處理器電壓、管理運(yùn)行模式。
3 嵌入式Linux動態(tài)電源管理軟件實(shí)現(xiàn)
嵌入式Linux已被廣泛應(yīng)用在電源功耗敏感的嵌入式設(shè)備上,特別是移動手持設(shè)備;因此,設(shè)計高效、精細(xì)的電源管理技術(shù)是嵌入式Linux開發(fā)成功的關(guān)鍵技術(shù)之一。
3.1動態(tài)電源管理實(shí)現(xiàn)原理
系統(tǒng)運(yùn)行在常見的幾種不同狀態(tài),有不同電源級別要求,其中蘊(yùn)涵著豐富的節(jié)能機(jī)會。狀態(tài)轉(zhuǎn)化如圖1所示。
狀態(tài)轉(zhuǎn)化
①系統(tǒng)運(yùn)行在任務(wù)、任務(wù)一、任務(wù)+中的任務(wù)狀態(tài)之一,可以響應(yīng)中斷進(jìn)入中斷處理,可以進(jìn)入空閑或睡眠狀態(tài)。不同的任務(wù)要求不同的電源級別,例如播放MP3可以降低處理器的頻率,而運(yùn)行在線互動游戲時則要求處理器全速運(yùn)行,所以DPM需要在不同任務(wù)中提供電源管理服務(wù)。
?、谙到y(tǒng)進(jìn)入空閑,這時可以被中斷喚醒,處理中






