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