• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 電源與新能源 > 設計應用 > 在μC/OS―II上實現動態電壓調節技術

    在μC/OS―II上實現動態電壓調節技術

    作者: 時間:2009-05-08 來源:網絡 收藏

    2 DVS系統模型
    2.1 DVS任務調度模型
    由1.2可知,當系統中任務之間存在松弛時間的時候,降低處理器的頻率可以縮短任務之間的松弛時間,同時由于頻率下降導致下降,進而可以減少處理器的能量開銷。然而,什么時候進行DVS的調度,處理器最低運行在哪個頻率上都需要進一步分析,為此,需要了解每個任務的相關信息。本文用一個五元組表示一個任務,τi=(Si,PTi,ETi,LETi,NPTi)。其中,Si表示第i個任務的狀態,是就緒還是阻塞;PTi表示第i個任務的執行周期;ETi表示第i個任務的執行時間,LETi表示第i個任務在當前周期內完成剩余指令所需要的時間;NPTi表示第i個任務距離下一個周期任務所需的時間。
    根據上述定義,系統處理器的利用率Uτ可以表示為:

    本文引用地址:http://www.czjhyjcfj.com/article/181415.htm


    當且僅當Uτ1時任務集可調度,任務間存在松弛時間。這是啟用DVS功能的前提。
    2.2 判斷是否需要進行DVS調度
    為了計算松弛時間存在時處理器最低可以運行在哪個頻率上,引入“變壓因子”這個概念。假設DVS模塊被調用時所有就緒任務需要的執行時間為TAllReady,距離下一個等待任務恢復的時間為TleastWaiting,那么定義變壓因子FlexibleRatio為:


    當FlexibleRatio>1時,表示當前就緒的任務可以在下一個任務從等待中恢復之前執行完畢,這時可以適當降低CPU的和頻率,減慢任務的執行速度;當FlexibleRatio1時,表示當前就緒的任務在下一個任務恢復之前都不能執行完畢,所以這個時候可以提高CPU的和頻率,使當前就緒的任務盡快執行完畢,從而使下一個恢復的任務可以得到盡快的執行;當FlexibleRatio=1時,不需要調整電壓和頻率。
    2.3 計算可運行的最低頻率
    處理器的頻率廠是和完成任務需要的時間T成正比的。它們之間遵循如下關系:


    假設當前處理器的運行頻率為fcur,完成已經就緒任務需要的時間為Tcur,使任務集可調度的最低頻率為fnew,以及在新的頻率下完成就緒任務的時間為Tnew,則它們有如下關系:


    即在某一時刻,滿足系統任務可調度的情況下,處理器頻率最低可以運行在FlexibleRatio?fcur。


    3 DVS在μC/上的詳細
    3.1 DVS在μC/的整體結構
    根據第2節的分析,一個完整的DVS模塊應包括兩大部分:一部分是更新DVS任務控制信息,另外一部分是可調度的最低頻率的計算。其中,第二個部分又可以分為兩個層次,即最低頻率的計算和頻率的硬件設置部分,這樣分層之后有助于改進后μC/的移植。DVS功能在μC/0S―II的總體結構如圖3所示,下面詳細描述各個部分的實現過程。

    3.2 更新DVS任務控制信息
    為了讓系統知道每個任務的詳細情況,實現過程中建立如下結構體保存任務的信息:


    該結構體作為任務控制塊的一部分,在任務創建時,將μC/OS―II自身預留的任務擴展指針OSTCBExtPtr指向該結構體。這些信息必須在每一個時鐘節拍之后都有變化,因此它們必須在每一個時鐘節拍進行更新。更新這部分信息的代碼被放在OSTimeTickHook()函數中。
    3.3 計算可運行的最低電壓和頻率
    計算可運行的最低電壓和頻率的算法是DVS功能的核心部分。算法的基本思想是,將所有任務產生的松弛時間給當前任務使用,使當前就緒的任務集以盡量低的電壓和頻率運行。系統最開始運行在最高頻率和電壓下。該算法的偽代碼如下:



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 竹北市| 申扎县| 登封市| 榆林市| 黄大仙区| 湟源县| 兴隆县| 宣汉县| 平罗县| 富裕县| 原平市| 喀喇沁旗| 松原市| 育儿| 宁城县| 翁源县| 永顺县| 涿鹿县| 平阳县| 墨玉县| 阿瓦提县| 庄河市| 盐城市| 商水县| 莱州市| 库尔勒市| 定西市| 尚义县| 博客| 台江县| 都江堰市| 新干县| 宽城| 社旗县| 彰化县| 武平县| 宁强县| 宝鸡市| 久治县| 兴文县| 文安县|