實時系統中混合任務集的動態電壓調節算法
在實時嵌入式系統中,核心處理器的能耗占據整個能耗的相當大一部分。動態電壓調節被看作是降低處理器能耗的關鍵技術,介紹實時系統和動態電壓調節的基本概念,并在CMOS器件功耗理論和實時系統下任務調度理論的基礎上,提出基于混合任務集的減慢因子DVS算法。
本文引用地址:http://www.104case.com/article/150621.htm嵌入式實時操作系統在目前的嵌入式應用中用得越來越廣泛,尤其在功能復雜、系統龐大的應用中顯得愈來愈重要。人們要求實時嵌入式產品能夠提供更為強勁的計算能力,以滿足無線通信、多媒體應用的要求,然而高性能的代價就是高能耗,因此延長實時嵌入式系統電池使用時間已經成為實時嵌入式系統設計普遍關注的問題。在實時嵌入式系統中,核心處理器的能耗占據整個能耗的相當大一部分。動態電壓調節被看作是降低處理器能耗的關鍵技術,其原理是在系統運行時態通過動態改變處理器的電壓和頻率,降低系統中的無用能耗,從而提高能量的有效利用率[1]。
當前,基于任務的動態電壓調節算法主要集中在對周期性任務集合的研究,其中只有很少一部分是對周期性任務和非周期性任務的混合任務集進行研究。另外,基于工作負荷的DVS算法盡管能從系統級上解決無用能耗問題,但卻很少考慮到系統的實時性。
1 動態電壓調節算法理論背景
1.1 動態電壓調節算法的必要性
由于CMOS電路的能量消耗E與電路電壓V的平方成正比,因此降低電壓是降低線路能耗的最有效的方法之一。DVS算法的基本原理: 系統在運行時間內根據性能的不同要求而相應地執行降低或者提高電壓和工作頻率的操作,從而降低能耗。
傳統的電源管理技術只是在空閑時間內降低功耗十分有效,而在運行時間內卻無能為力。目前,一些操作系統內核對動態電壓管理(DPM)的支持還是局限于不能調整核心電壓,主要是通過調整CPU頻率和支持開關外圍設備的供電來實現。但是近年來,隨著半導體技術的發展,在運行時態動態改變處理器的工作電壓和/或時鐘頻率已經變成了現實。很多商用嵌入式處理支持動態電壓調節DVS這一技術,比如TI公司的OMAP系列處理器、Intel公司的StrongARM處理器、Transmeta公司的Crusoe處理器,還有IBM公司的PowerPC 405LP處理器等。
1.2 實時操作系統與任務調度
在實時系統軟件中,最基本的軟件是實時操作系統。它是實時系統軟件的基礎,所有的實時應用軟件都是在實時操作系統的支撐下運行的。與通用操作系統相比,實時操作系統有其特有的一些重要特征,包括規模較小、中斷時間很短、進程切換很快、中斷被屏蔽時間很短、能管理ms級或μs級的多個定時器。因此它能適應各種實時應用的需求,從快速的實時響應到慢速的實時響應,都能應付自如。
實時系統的實時性通過周期(period)和時限(deadline)來體現。周期是均勻重復性任務每兩次調用開始的時間間隔。任務必須在某個時刻前完成操作,啟動時刻與該時刻的時間間隔被稱為“時限”。均勻重復性任務又稱為“周期性任務(periodic task)”。周期性任務在一個周期內的一次調用可以看作是一個作業。通常,周期性任務的作業周期和時限是相等的。
實時操作系統的核心就是任務調度。它提供給系統一個決策機制,決定在某個瞬間時刻下,系統作業池中哪一個作業占用處理器?;诰€程的任務間DVS算法就是以實時系統的任務調度為主要理論基礎。
1.3 服務器
然而,現實的情況是實時系統中并非所有的任務都是非周期性的。對于兩種任務的混合調度情況,在基于優先級的方案中,簡單地使非周期性任務的優先級低于周期性的任務[2]。這樣,非周期性任務作為后臺活動運行;而在搶占式系統中,它就不能掠奪周期性任務的資源。盡管這是一個安全的方案,但是考慮到非周期性任務的時限,如果讓它們只作為后臺運行,往往會錯過它們的時限。為了改善非周期性任務的這種狀況,可利用服務器(server)來解決。在RM策略下,最廣泛研究的是可延期服務器(Deferred Server,DS)和偶發服務器[3](Sporadic Server,SS)。
在DS中,引進一個新的最高優先級任務,這個任務也就是服務器。它有一個周期Ts和一個容量(Budget)Es。在運行時態,當一個非周期性任務達到時,如果服務器有可用容量,就立即開始執行,直到任務完成或服務器容量耗盡;如果服務器沒有可用容量,那么非周期進程會被掛起(或轉換為后臺優先級)。在DS模型中,服務器容量每Ts個單位被補充一次。
SS的操作不同于DS在于它的容量補充策略。在SS中,如果一個任務在t時刻到達,并要求使用容量e,那么服務器在時間t后的Ts個時間單位補充容量e。通常,SS能提供比DS更高的容量,但同時也增加了實現的開銷。
2 基于混合任務集的減慢因子DVS算法
在實時系統中可調度性是保證系統可靠的重要參數,對任務集進行可調度性分析是減慢因子算法的必要部分。在進行可調度性分析的過程中,本文把非周期性任務的服務器看作固定優先級的周期性任務,將服務器的周期Ts作為任務周期和周期性任務一起分析。假設在系統S中存在著n個周期性任務t1、t2、t3、K、tn和個非周期性任務a1、a2、a3、K、an,所有的非周期性任務受可延期服務器DS的調度。如果系統S運行于固定速度處理器上,混合任務集在單調速率可搶占的調度方案下調度,那么可以用周期性任務集的單調速率可搶占調度方案的響應時間分析方法對這個混合任務集進行可調度分析。
減慢因子即任務的運行頻率和最高頻率之間的比值。在系統運行期間,即使所有任務按照最壞情況執行時間(WCET)運行,大多數情況下處理器的利用率也遠低于100%,任務集在某個任務時限前,系統處于空閑調度循環中。因此,對處理器的電壓和工作頻率進行減慢因子計算,使空閑時間間隔大大縮短甚至消失,這樣就達到了降低能耗的目的。
在下面的減慢DVS算法中,當任何新的周期性任務或者服務器進入系統并且在調度器中登記后,將會執行Compute_Slowdown_Factors過程,進行整個系統的可調度性分析,并且為每一個任務計算出最低的工作頻率,從而保證所有任務在其工作頻率下運行仍舊是可調度的,不會影響整個系統的實時性需求。
下面給出計算靜態減慢因子αs算法的偽代碼(其中0αs≤1):
//Algorithm Compute_Slowdown_Factors
Inputs:
S//將要進行減慢因子計算的任務集,包括周期性任務和非周期性任務的服務器
Outputs:
Slowdown_Factors[]//任務集的靜態減慢因子
{
Sm//計算出減慢因子后,將要超過時限的任務集,初始化為空集
Current_Scaling _Factor=1;
For S中的每一個任務i
Slowdown_Factor[i]=1;
評論