<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 在μC/OS―II上實(shí)現動(dòng)態(tài)電壓調節技術(shù)

在μC/OS―II上實(shí)現動(dòng)態(tài)電壓調節技術(shù)

作者: 時(shí)間:2009-05-08 來(lái)源:網(wǎng)絡(luò ) 收藏

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

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


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


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


假設當前處理器的運行頻率為fcur,完成已經(jīng)就緒任務(wù)需要的時(shí)間為T(mén)cur,使任務(wù)集可調度的最低頻率為fnew,以及在新的頻率下完成就緒任務(wù)的時(shí)間為T(mén)new,則它們有如下關(guān)系:


即在某一時(shí)刻,滿(mǎn)足系統任務(wù)可調度的情況下,處理器頻率最低可以運行在FlexibleRatio?fcur。


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

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


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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>