動態電壓與頻率調節在降低功耗中的作用

關鍵字:芯片運行負載採集

1 DVFS的工作流程

現在,爲了延長便攜式設備(如手機、MP3、多媒體播放器、筆記本電腦等)的電池壽命,芯片廠商們正在絞盡腦汁開發新的節電技術。簡單地說,這些節電技術可以分爲兩類——動態技術和靜態技術。靜態技術包括不同的低功耗模式,芯片內部不同組件的時鐘或電源的按需開關等。動態技術則是根據芯片所運行的應用程序對計算能力的不同需要,動態調節芯片的運行頻率和電壓(對於同一芯片,頻率越高,需要的電壓也越高),從而達到節能的目的。該技術的理論依據是如下的公式:



從上面的公式可以看出,降低頻率可以降低功率,但是單純地降低頻率並不能節省能量。因爲對於一個給定的任務,F*t是一個常量,只有在降低頻率的同時降低電壓,才能真正地降低能量的消耗。

目前許多芯片支持DVFS,比如InteI公司的芯片支持SpeedStep,ARM的支持IEM(Intelligent Energy Man-ager)和AVS(Adaptive Voltage Scaling)等。但是要讓DVFS發揮作用,真正地實現節能,只有芯片的支持還是不夠的,還需要軟件與硬件的綜合設計。

一個典型的DVFS系統的工作流程如下:

①採集與系統負載有關的信號,計算當前的系統負載。這個過程可以用軟件實現,也可以用硬件實現。軟件實現一般是在操作系統的核心調用中安放鉤子,特別是調度器,根據其調用的頻度來判斷系統的負載。硬件實現如Frecscale的i.Mx31,通過採集一些核心信號中斷線、Cache、內存總線的使用情況等,計算當前的系統負載

②根據系統的當前負載,預測系統在下一時間段需要的性能。有多種預測算法可以選擇,要根據具體的應用來決定。這種預測,既可由軟件實現,也可由硬件實現。

③將預測的性能轉換成需要的頻率,從而調整芯片的時鐘設置。

④根據新的頻率計算相應的電壓。通知電源管理模塊調整給CPU的電壓。這需要特別的電源管理芯片,比如Freescale公司的MC13783或者NS公司的支持Pow-erWise特性的系列電源管理芯片。它們能夠支持微小的電壓調整(25 mV)並且能在極短的時間內(幾十μs)完成電壓的調整。

另外,在調整頻率和電壓時,要特別注意調整的順序。當頻率由高到低調整時,應該先降頻率,再降電壓;相反,當升高頻率時,應該先升電壓,再升頻率。

圖1演示了簡單的DVFS過程。

2 基於軟件的DVFS實現

在基於軟件的DVFS實現中,一般通過在操作系統的核心調用中安裝鉤子的辦法來收集系統調用的信息,判斷當前的系統負載。其中最重要的是調度器,其他地方包括讀/寫接口、定時器等。例如,在Linux內核中,一般在以下地方安裝鉤子。

◇kernel/sched.c。修改__schedule( ),在schedule( )前和後插入語句,記錄一個任務的執行時間。

◇fs/read_write.c。修改sys_read( )和sys_write( ),記錄其被某任務調用的次數。

◇kernel/timer.c。修改sys_nanosleep( )和msleep( ),記錄任務主動休息的時間。

◇fs/ioctl.C。修改sys_ioctl( ),記錄其被調用的次數。

◇kernel/exit.c。修改do_exit( ),記錄任務主動退出的時間。

◇include/asm_xxx/system.h,arch/xxx/system.c。修改arch_idle( ),計算cpu_idle( )線程被調用的時間。

在預測下一時間段的系統負載時,需要利用採集到的前面幾個時間段的實際負載值,然後根據下面的公式進行預測:

根據h的不同,可以形成不同的預測算法,比如:

以上這些算法各有其優缺點。例如LMS算法類似於自適應濾波器,能夠自動調整參數,但是面臨着收斂速度的問題。

ARM公司爲了驗證其芯片的DVS(Dynamic VoltageScaling,動態電壓調節)特性,開發的軟件Vertigo中,採用了UH(Utilization History)算法,有關的公式如下:


該算法對那些性能需求變化較慢的任務比較實用,比如MPEG解碼器。

在Vertigo的實現中,一旦預測器完成性能預測,它將會把新的性能需求提交給策略管理器,由策略管理器決定是否調整當前的性能設置。Vertigo的架構如圖2所示。

具體實現可以參閱文獻[3]。

3 基於硬件的DVFS實現

正如前面所說的,CPU負載跟蹤與性能預測的工作都可以由硬件完成。這樣,一方面增強了負載計算的準確性;另一方面減輕了CPU用於負載跟蹤與性能預測的負擔。當然,這樣做也有一個弊端,就是無法靈活地選擇預測算法。但是,這個缺點可以通過設置不同的預測參數得到一定程度的彌補。

飛思卡爾的i.MX31就是這樣的一個例子。這是一款針對移動多媒體市場的應用處理器,具有強大的音頻和視頻處理能力。該芯片內部包含一個ARMll的CPU核,同時它也繼承了來自ARM的DVS技術並發展爲DVFS。在該芯片中,CPU負載跟蹤和性能預測都是由硬件完成的,其負載跟蹤模塊框圖如圖3所示。

在圖3中,16路CPU活動信號被採集之後,經過加權,被送到負載疊加器,與另外採集的CPU空閒信號(經過簡單平均)進行疊加。疊加器輸出的結果被送到EMA模塊,執行指數移動平均(Exponential Moving Average)算法,進行性能預測。EMA模塊得到的結果與預先沒置的門限值進行比較,如果預測的性能需求高於上限,則請求調高頻率;反之,如果預測的性能需求低於下限,則請求降低頻率。這種請求一般作爲中斷,發送給CPU自身或外接的處理器,由它們在其中斷處理程序中設置相應的頻率和電壓。圖4演示了整個處理流程。

在圖4中,CCM(Clock Control Module)爲時鐘控制模塊,負責涮節CPU的頻率。PMIC(Power ManagementIC)爲電源管理芯片,負責提供CPU所需要的電壓。該芯片提供兩種接口給CPU:常規的SPI(Serial ProgrammableInterface)和專用於動態電壓調節的DVS接口。該接口由兩根線組成。兩根線的狀態00表示電壓無變化,01表示電壓降低一格,10表示電壓升高一格,11表示電壓升到最高值。

圖4中的DPTC(Dynamic Process and TemperatureControI)指的是動態製程與溫度控制。該技術能夠根據該芯片的製程和當前的溫度動態調節電源電壓,從而也可以有效地節省能量。這也是i.MX31的一項創新。

4 DVFS應用的實際效果

爲了驗證DVFS的實際效果,需要在CPU上運行相應的應用程序,並測量使用DVFS技術和不使用DVFS技術時CPU的功耗。這裏,分別給出軟件實現的DVFS和硬件實現的DVFS在節省能量方面的實際測量數據。

Intrinsyc公司將ARM公司的IEM軟件移植到WinCE上,並測量了IEM使能或禁止時的CPU功耗。軟件運行在i.MX31的開發板上,但是因爲它沒有使用i.MX31內置的DVFS,因此可以將其看作軟件實現的DVFS。在計算CPU負載時,採用了簡單移動平均算法(即式(3)中的h恆爲1/N);同時,它通過一個GPIO來指示系統是否已經進入空閒狀態(cpu_i-dle()線程被調度)。如果Idle的比例越小,則表明CPU的利用率越高。表l和表2是實際的測量數據。

爲了驗證硬件實現的DVFS的功效,作者在i.MX31的開發板上進行了測量。所使用的操作系統是Linux。表3給出了實際的測量數據。

從表3中可以清楚地看出,無論軟件實現的DVFS還是硬件實現的DVFS,都可以有效地降低能量消耗。

5 影響DVFS應用的因素

動態電壓與頻率調節的技術提出很久了,在Linux上也有專門的開源項目cpufreq,但是這項技術並沒有得到廣泛的應用。其中一個最關鍵的因素就是預測的可靠性。沒有一種預測算法是100%準確的,也沒有一種算法可以應用於所有的程序;而對於實時類的應用(如音頻、視頻等),預測失敗的結果是不可接受的。因爲實時類的應用都有一個Deadline,錯過Deadline,就意味着程序的運行出了問題。比如音頻或視頻幀的播放時間錯過以後,用戶就能明顯地感覺到音頻或視頻的不連貫,這會極大地影響用戶的體驗,從而也會影響用戶對DVFS的信心。作者在進行DVFS的測試時,就碰到過這些問題。IEM測試中採用的簡單移動平均算法只對單一應用程序有效。但是i.MX31內置的移動指數平均算法EMA也不是萬能的。對於Pink Floyd的某些音樂,它就不能平滑地播放(也許通過修改一些加權參數,可以播放)。

但是作者相信,隨着預測算法的進步,DVFS技術必將得到廣泛的應用,因爲它能夠節省很多能量。而節能對許多便攜式設備來說,常常是第一要求。



http://www.eeworld.com.cn/designarticles/power/200706/14175.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章