• 沒有找到結果。

2.1 DVS電壓排程

DVS的目地是將task在執行時的速度降低以至於CPU主電壓的降低而達到節省耗電量。 在 即時系統方面目前在DVS中被提出的方法是針對TASK在執行時間的限制下,尋求最小的 電源消耗。 目前有許多即時系統方面相關的排程理論[12,13]都是將CPU的執行速度當 作為常數, 因此,並不符合現在實際上的應用。

要將CPU執行的速度降低得要多方面的考慮。首先是靜態的DVS:是將一堆TASK以最長的 執行時間計算其所需最低的執行速度。

關於DVS排程方面, 其中EDF (Earliest Deadline First)算是一種蠻簡單且排程效果 不錯的一種方法,有些較為複雜的方法是採用經驗法則,也就是說系統利用過去執行的 經驗做為下次決定執行參數的依據,這些經驗的取得可以由設計者介入調整或動態的經 由一套回授的機制將相關資料予以保留以供未來的執行週期運用。在相關的應用或研究 上,各家的結果若跟不使用DVS的排程系統比較下,大約能夠節省1.4%到90%的能量[14,

15,16,17,18,19,20]。

這一方面過去的研究中 Yao 等人[21]曾提出了靜態的離線(static off-line)的演算 法,其假設在獨立非週期的情況下,TASK滿足所有的時間限制,能夠獲得最低的電源消 耗量。 這演算法在n個TASK的時間複雜度為:

O

(

n

log2

n

)。

與此相關的研究在[22]中提出了一種非週期性的在線(on line)排程方法,這種演算法 是計算全部TASK所需執行效率的總和,然後設定固定的執行速度給所有的TASK。然而,

此方法將不會影響到離線(off-line)排程的結果。 在論文[23]中則對非先佔式多工 (Non-preemptive)的能源排程做了討論。 論文[24]則討論有一堆週期性的工作並具有 相同的工作週期則CPU的電壓變化率則有其上限。因為作者提到,這類問題即使是線性 變化的還是難以控制,因此提出了方法來解決這個問題。關於上述靜態排程方法在一般 週期性的工作模式中其電緣消耗的特性有潛在的不同[25], Aydin等人[26]最近則說明 了靜態的動態電壓排程與回餽式的排程有著相同的問題。

2.2 即時系統的排程設計

設計即時系統時,基本上都考慮系統在最差的狀況下運作,但是系統實際運作時其運作 應處於較佳的狀況也就是說時間上或資源上都比最差期況下要寬裕。 因此,大多數的 研究專門使用最差狀況的執行時間(WCET, Worst-Case Execution Time)去保證系統執 行時的時間限制,所以可以從那些執行後所剩下時間或CPU的運算能力中獲得好處。事

靜態的電壓排程(Static voltage scheduling)又稱為離線電壓排程(Off-line Voltage Scheduling),是指系統在離線的狀況下將利用Task τi在時間的限制下需執行最多的週 期藉以計算出CPU執行的速度,若所需週期為Ci則在Smax的執行速度下若是在時間限制內

以下還是針對Task Level及System Level這兩種層次討論靜態電壓排程:

針對Task level的電源管理, Task τi它的時間限制(deadline)為Di,則τi在執行速度

還是要被設定為Si=Smin因為,CPU的執行速度有其上下限,Smin為下限,因此必須額外考慮 臨界點的問題。

基於以上說明,單一的Task Level之電壓調整最好在程式開啟始的位置就利用相關的參 數將速度計算出來,使得往後在執行時就能節省電源。

System Level方面, 若有N個週期性的Task使用EDF的方式排程,若是其執行速度的設 定落在g(S)的函數圖型上,那麼所有task的時間限制都能滿足而且耗電量的總合也會是

上述的式子是說明τi在執行時的速度為Si,那麼τi的執行時間為

C

。 EDF排程只要是將每個Task的利用率累加,其結果小於等於1則不

會產生miss-deadline的情況。

在解決以上最佳化的問題之後(詳細的推導過程可以參考[29]),所得的相關參數,例如:

速度的參數。可以保存在Task的參數表內,當Task執行時再透過系統去設定相對的速 度。所以OS也要做點小改變,在做Context Switch時也要跟著改CPU的執行速度。

針對靜態電壓排程做點小的總結:在靜態排程中從系統的角度或單一Task的角度來看排

2.4.1 空閒時間(slacks)

有一種估計slack的方法是利用過去同一Task被執行後的情況下加以統計,換句話說,

就是從歷史中找答案。

動態的調整電壓和執行時的頻率都會造成系統在時間上的延遲,所以若WCET的時間為 twc, 經 過 調 整 後 實 際 所 花 費 的 時 間 為 tac, 那 麼

t

ac

t

wc 才 行 , 否 則 會 因 調 整 而 miss-deadline,然而slackearly=twc-tac,這slackearly就是實際上可以節省能量的時間長度。

此外,有另一種計算的方式是以執行的cycle數來做計算,假設對最多需要執行的cycle 度的依據。要預測下一次的執行過後的slackspeculate為:

wc av deadline,因此,在速度的計算上要做一些補救的措施;以執行的cycle而言為C,Cwc為 最多需執行的cycle數,那麼我起碼要有CwcC 的時間用最高執行速度來做補救。因此,

max

slack slack D t

S S

為了決定執行的速度,電壓調節的程式必需瞭解Task的相關參數,在許多的研究中都將 此參數稱為task profile information,例如: 在時間和效率的限制下最差的執行情況 與平均的執行情況以及執行時期的資料,例如:使用CPU的時間或者程式提早被結束。

task profile information可以先被計算並加以儲存,但是執行時期的資料得在真正被 執行的時候才有辦法搜集得到而且也許需要OS或硬體上的幫忙,才能順利的搜集到。

不同執行速度管理的方法主要基於以下兩個主要觀念:第一,找出系統執行時有空閒的 地方,第二,如何充份運用這些空閒的地方來達成電源管理的目地。

相關文件