在μC/OS―II上實現(xiàn)動態(tài)電壓調(diào)節(jié)技術
2 DVS系統(tǒng)模型
2.1 DVS任務調(diào)度模型
由1.2可知,當系統(tǒng)中任務之間存在松弛時間的時候,降低處理器的頻率可以縮短任務之間的松弛時間,同時由于頻率下降導致電壓下降,進而可以減少處理器的能量開銷。然而,什么時候進行DVS的調(diào)度,處理器最低運行在哪個頻率上都需要進一步分析,為此,需要了解每個任務的相關信息。本文用一個五元組表示一個任務,τi=(Si,PTi,ETi,LETi,NPTi)。其中,Si表示第i個任務的狀態(tài),是就緒還是阻塞;PTi表示第i個任務的執(zhí)行周期;ETi表示第i個任務的執(zhí)行時間,LETi表示第i個任務在當前周期內(nèi)完成剩余指令所需要的時間;NPTi表示第i個任務距離下一個周期任務所需的時間。
根據(jù)上述定義,系統(tǒng)處理器的利用率Uτ可以表示為:本文引用地址:http://www.ex-cimer.com/article/181415.htm
當且僅當Uτ1時任務集可調(diào)度,任務間存在松弛時間。這是啟用DVS功能的前提。
2.2 判斷是否需要進行DVS調(diào)度
為了計算松弛時間存在時處理器最低可以運行在哪個頻率上,引入“變壓因子”這個概念。假設DVS模塊被調(diào)用時所有就緒任務需要的執(zhí)行時間為TAllReady,距離下一個等待任務恢復的時間為TleastWaiting,那么定義變壓因子FlexibleRatio為:
當FlexibleRatio>1時,表示當前就緒的任務可以在下一個任務從等待中恢復之前執(zhí)行完畢,這時可以適當降低CPU的電壓和頻率,減慢任務的執(zhí)行速度;當FlexibleRatio1時,表示當前就緒的任務在下一個任務恢復之前都不能執(zhí)行完畢,所以這個時候可以提高CPU的電壓和頻率,使當前就緒的任務盡快執(zhí)行完畢,從而使下一個恢復的任務可以得到盡快的執(zhí)行;當FlexibleRatio=1時,不需要調(diào)整電壓和頻率。
2.3 計算可運行的最低頻率
處理器的頻率廠是和完成任務需要的時間T成正比的。它們之間遵循如下關系:
假設當前處理器的運行頻率為fcur,完成已經(jīng)就緒任務需要的時間為Tcur,使任務集可調(diào)度的最低頻率為fnew,以及在新的頻率下完成就緒任務的時間為Tnew,則它們有如下關系:
即在某一時刻,滿足系統(tǒng)任務可調(diào)度的情況下,處理器頻率最低可以運行在FlexibleRatio?fcur。
3 DVS在μC/OS―II上的詳細實現(xiàn)
3.1 DVS在μC/OS―II上實現(xiàn)的整體結構
根據(jù)第2節(jié)的分析,一個完整的DVS模塊應包括兩大部分:一部分是更新DVS任務控制信息,另外一部分是可調(diào)度的最低頻率的計算。其中,第二個部分又可以分為兩個層次,即最低頻率的計算和頻率的硬件設置部分,這樣分層之后有助于改進后μC/OS―II的移植。DVS功能在μC/0S―II的實現(xiàn)總體結構如圖3所示,下面詳細描述各個部分的實現(xiàn)過程。
3.2 更新DVS任務控制信息
為了讓系統(tǒng)知道每個任務的詳細情況,實現(xiàn)過程中建立如下結構體保存任務的信息:
該結構體作為任務控制塊的一部分,在任務創(chuàng)建時,將μC/OS―II自身預留的任務擴展指針OSTCBExtPtr指向該結構體。這些信息必須在每一個時鐘節(jié)拍之后都有變化,因此它們必須在每一個時鐘節(jié)拍進行更新。更新這部分信息的代碼被放在OSTimeTickHook()函數(shù)中。
3.3 計算可運行的最低電壓和頻率
計算可運行的最低電壓和頻率的算法是DVS功能的核心部分。算法的基本思想是,將所有任務產(chǎn)生的松弛時間給當前任務使用,使當前就緒的任務集以盡量低的電壓和頻率運行。系統(tǒng)最開始運行在最高頻率和電壓下。該算法的偽代碼如下:
評論