專利名稱::一種嵌入式系統(tǒng)實時任務(wù)的調(diào)度方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種嵌入式系統(tǒng)任務(wù)的調(diào)度方法,尤其是一種嵌入式系統(tǒng)實時任務(wù)的調(diào)度方法。
背景技術(shù):
:嵌入式系統(tǒng)的電池可用能量有限,能量消耗已成為其中重要的性能參數(shù),并且嵌入式系統(tǒng)經(jīng)常被放置在遙遠(yuǎn)的區(qū)域,當(dāng)系統(tǒng)中的能量耗盡時,更換的代價非常昂貴。所以,將能量消耗最小化從而使電池或電池組的壽命最大化對于嵌入式系統(tǒng)至關(guān)重要。大部分嵌入式系統(tǒng)具有一定的實時性,這些系統(tǒng)必須要滿足功能性和實時性兩方面的需求。也就是說,這些系統(tǒng)的正確性不僅依賴于計算的正確性,還依賴于它是否能夠按時完成任務(wù)。所以,系統(tǒng)中任何的調(diào)度策略都必須要滿足任務(wù)調(diào)度的及時性,保證所有任務(wù)能夠在截止時間前完成。能量消耗最小化為這些實時性設(shè)計增加了新的要求。雖然嵌入式系統(tǒng)的能量消耗最小化非常重要,但能量消耗必須滿足系統(tǒng)實時的相應(yīng)需要。保存能量的一種途徑是采用低功耗設(shè)計方法。從體系架構(gòu)到晶體管,許多低功耗設(shè)計技術(shù)已經(jīng)為不同的^:計層次所開發(fā)。在系統(tǒng)層空閑功能單元可以關(guān)閉電源,基于電源優(yōu)化技術(shù)的預(yù)言性停機技術(shù)在許多文獻(xiàn)中被提及。盡管這些方法容易實現(xiàn),但它們必須要與帶有固定電源電壓的系統(tǒng)相匹配。目前大多數(shù)嵌入式處理器都裝備了至少能為系統(tǒng)提供兩種不同電壓的電源供給,但上述方法不能使用這一特性。而且,由于這些方法通常在^:計/合成階段被采用并固化在系統(tǒng)中,佳_用更改它們很不方便,因而無法適應(yīng)變化的工作流環(huán)境。另一種節(jié)約能量的途徑是采用DPM(DynamicPowerManagement,動態(tài)電源管理)技術(shù),減少能量消耗由才喿作系統(tǒng)負(fù)責(zé)。由于針對桌面和筆記本系統(tǒng)的ACPI標(biāo)準(zhǔn)(AdvancedConfigurationandPowerInterface,高級配置與電源接口)的引入,DPM基本上是可行的。ACPI標(biāo)準(zhǔn)允許操作系統(tǒng)通過系統(tǒng)調(diào)用來控制石更件電源狀態(tài),從而有效地將功耗減少的責(zé)任從石更件(基本輸入輸出系統(tǒng))轉(zhuǎn)移到軟件(操作系統(tǒng))。ACPI標(biāo)準(zhǔn)有助于增加可變速處理器的可用性,這些處理器的速度可以通過才喿作系統(tǒng)的系統(tǒng)調(diào)用動態(tài)改變。在帶有可變速處理器的嵌入式系統(tǒng)中,操作系統(tǒng)可通過適當(dāng)?shù)卣{(diào)度任務(wù)減少能量消耗。眾所周知,CMOS(ComplementaryMetal-OxideSemiconductor,互補金屬氧化物半導(dǎo)體)電路的功耗與處理器電壓存在著二次方的關(guān)系,因而任務(wù)每個指令周期所消耗的電量與處理器電壓的平方成正比。換句話說,執(zhí)行任務(wù)所產(chǎn)生的功耗隨著處理器電壓的平方與該任務(wù)所包含的指令周期數(shù)目的乘積正比例變化。而大多數(shù)情況下,處理器速度的提高是通過增加電壓供給實現(xiàn)的。同樣,當(dāng)處理器的工作量低時,操作系統(tǒng)可以潛在地減少對處理器的電壓供給,利用能耗對處理器電壓的平方依賴可以有效減少能耗。目前,采用DPM技術(shù)減少能量消耗的系統(tǒng)種類繁多,具體的實現(xiàn)方法也各有特色,大多數(shù)都基于處理器可以在連續(xù)變化的電壓層次上運行。然而,在現(xiàn)有公開的方法中,有一些主要是針對系統(tǒng)低功耗設(shè)計合成,并不能解決任務(wù)在執(zhí)行期間能量最小化的問題。還有一部分實現(xiàn)方法只是單純地從減少功耗的角度來研究DPM技術(shù),并沒有把降低功耗與滿足系統(tǒng)實時性結(jié)合起來,無法弄清這些方法如何在嵌入式實時系統(tǒng)中應(yīng)用和它們能獲得怎樣有效的結(jié)果。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提供一種在滿足嵌入式系統(tǒng)實時性要求的同時能減少系統(tǒng)能量消耗的嵌入式系統(tǒng)實時任務(wù)的調(diào)度方法。本發(fā)明解決其技術(shù)問題所采用的4支術(shù)方案是一種嵌入式系統(tǒng)實時任務(wù)的調(diào)度方法,包括以下步驟1.1根據(jù)實時任務(wù)集中各任務(wù)的優(yōu)先級順序和截止時間確定就緒任務(wù)隊列,并選擇所述就緒任務(wù)隊列的隊首任務(wù)為當(dāng)前任務(wù);1.2根據(jù)所述當(dāng)前任務(wù)的截止時間和處理器可提供的速率確定調(diào)度所述當(dāng)前任務(wù)的速度;1.3釆用所述速度調(diào)度所述當(dāng)前任務(wù),若所述當(dāng)前任務(wù)運行結(jié)束或所述當(dāng)前任務(wù)的截止時間到達(dá),則進(jìn)入步驟l.4;1.4釋放所述當(dāng)前任務(wù),若所述當(dāng)前任務(wù)為所述就緒任務(wù)隊列的隊尾任務(wù),則結(jié)束任務(wù)的調(diào)度,否則選擇所述就緒任務(wù)隊列中所述當(dāng)前任務(wù)的下一個任務(wù)為新的當(dāng)前任務(wù),并回到步驟l.2。上述方案中,所述步驟l.1中確定就緒任務(wù)隊列包括以下步驟2.1根據(jù)所述實時任務(wù)集中各任務(wù)的優(yōu)先級順序按照遞減的順序排列確定任務(wù)優(yōu)先級隊列;2.2在所述任務(wù)優(yōu)先級隊列中,對于具有相同優(yōu)先級的等優(yōu)先級任務(wù),根據(jù)所述各等優(yōu)先級任務(wù)的截止時間按照遞增的順序進(jìn)行排列以確定所述就緒任務(wù)隊列。上述方案中,所述步驟l.2包:f舌以下步驟3.l獲取所述當(dāng)前任務(wù)的任務(wù)執(zhí)行長度,根據(jù)處理器提供的速率按照由高到低的順序計算得到所述當(dāng)前任務(wù)的執(zhí)行時間集;3.2獲取所述當(dāng)前任務(wù)的截止時間,將所述執(zhí)行時間集中^L行時間與所述截止時間相比較,選擇小于所述截止時間的執(zhí)行時間組成備選執(zhí)行時間集;3.3從所述備選執(zhí)行時間集中選擇與所迷截止時間差值的絕對值最小的執(zhí)行時間所對應(yīng)的處理器速度為調(diào)度所述當(dāng)前任務(wù)的速度。上述方案中,所述的處理器為可變電壓處理器。本發(fā)明的有益效果主要表現(xiàn)在本發(fā)明提供的技術(shù)方案使用簡單的調(diào)度策略而無需其它的輔助結(jié)構(gòu),^t人而減少了對內(nèi)存和存儲空間的需求。通過使用快速的優(yōu)先級排序方法和高效的處理器電壓分配算法,使得調(diào)度過程中延時穩(wěn)定,運行高效,并且提高了才喿作系統(tǒng)電源管理的靈活性。通過這些技術(shù)特點達(dá)到在滿足嵌入式系統(tǒng)實時性要求的同時還減少系統(tǒng)能量消耗的目的。圖1為本發(fā)明所述調(diào)度方法的流矛呈圖2為KLinux的軟件體系結(jié)構(gòu)圖3為本發(fā)明一實施例的任務(wù)集調(diào)度狀態(tài)圖。具體實施例方式本發(fā)明所提出的方法是嵌入式實時操作系統(tǒng)內(nèi)核的一部分,下面以EmbsysKLinux嵌入式實時操作系統(tǒng),基于AMDAthlon4處理器的硬件平臺環(huán)境為例,說明本發(fā)明任務(wù)調(diào)度方法的實現(xiàn)方案。壓,能夠提供了可變的處理器運行速度,大大提高了能量運用的效率。硬件平臺采用的是1.1GHz的AMD移動Athlon4處理器,它的核心電壓可以在l.2V到1.4V的范圍內(nèi)以0.05V的增量連續(xù)變化。盡管更低的時鐘頻率可以使用,但對于每個核心電壓都有一個預(yù)定的最大時鐘頻率。表1為Athlon4處理器電源狀態(tài)設(shè)置情況。本實施例即使用表1所示的電源狀態(tài)和電壓設(shè)置。<table>tableseeoriginaldocumentpage7</column></row><table>表1在不同電源狀態(tài)上產(chǎn)生的功耗可以采用CMOS功耗等式來計算,即戶=/"<^丄,等式中P是能量,f是運行頻率,a是平均轉(zhuǎn)換頻率,C是轉(zhuǎn)換電容,Vdd是運行電壓。對于相同的處理器和軟件,轉(zhuǎn)換容量和平均轉(zhuǎn)換頻率是固定的,所以我們只需要考慮運行頻率與核心電壓的平方。由表l所列數(shù)據(jù)通過計算可知,電源狀態(tài)2所產(chǎn)生的功耗大約是電源狀態(tài)1所產(chǎn)生功耗的76%,電源狀態(tài)3產(chǎn)生的功耗則占狀態(tài)1的51%,而該處理器12V的最低電源配置僅僅消耗最高電源狀態(tài)20%的能量??梢?,處理器電源電壓的降低會大大減少系統(tǒng)功耗。嵌入式系統(tǒng)能量驅(qū)動的主要目標(biāo)是為了在應(yīng)用程序、操作系統(tǒng)、底層硬件之間產(chǎn)生連續(xù)的對話環(huán)境,這個對話環(huán)境能夠在可行的能量限制下建立功能和性能的預(yù)期,中興EmbsysKLiimx操作系統(tǒng)就是基于這種理解而實現(xiàn)的,下面我們簡單描述一下KLinux的軟件體系結(jié)構(gòu)。如圖2所示,運行在AMD硬件平臺上的KLinux嵌入式實時操作系統(tǒng)采用分層式體系結(jié)構(gòu),主要的軟件層次從上到下分別包括能量驅(qū)動API(ApplicationProgrammerInterface,應(yīng)用禾呈序接口)、K-Libc(KLinuxC函數(shù))庫;KTH(KernelThread,內(nèi)核線程)庫、修錯的Linux才示準(zhǔn)內(nèi)對亥以及能量馬區(qū)動HAL(HardwareAbstractLayer,石更件抽象層)。總的說來,上面的軟件層作為操作系統(tǒng)和應(yīng)用程序之間的接口,下面的軟件層為操作系統(tǒng)提供了與能量相關(guān)的硬件抽象,這兩層通過相應(yīng)的能量驅(qū)動才喿作系統(tǒng)服務(wù)連接。在最上面的軟件層,能量驅(qū)動API為應(yīng)用程序提供了關(guān)于能量驅(qū)動的功能調(diào)用,這部分的某些功能是特別針對于特定的能量調(diào)度技術(shù);嵌入式應(yīng)用程序調(diào)用API接口函數(shù)并利用一系列的服務(wù),使得在執(zhí)行自己特定的功能中更為有效地使用能量。能量驅(qū)動API層包含以下主要的函數(shù)接口用于設(shè)置與實時性相關(guān)的參數(shù)的創(chuàng)建任務(wù)實例和類型接口、通知任務(wù)開始和結(jié)束接口和通知應(yīng)用程序由操作系統(tǒng)預(yù)測的執(zhí)行時間和告知揭:作系統(tǒng)由應(yīng)用程序估計的預(yù)測執(zhí)^f亍時間接口。K-Libc庫是標(biāo)準(zhǔn)Libc庫的一個子集,它的主要功能是為上層應(yīng)用提供標(biāo)準(zhǔn)的C語言函數(shù)庫,方便應(yīng)用程序更有效地調(diào)用操作系統(tǒng)功妙月匕oKTH庫負(fù)責(zé)嵌入式強實時操作系統(tǒng)所需的基本功能管理,包括線程管理、信號量管理、內(nèi)存管理、日志機制以及電源管理。KTH庫為應(yīng)用程序提供了一條通道,以便訪問操作系統(tǒng)內(nèi)核和能量驅(qū)動相關(guān)操作系統(tǒng)服務(wù)。無法在操作系統(tǒng)內(nèi)核中實現(xiàn)的某些功能也在這層被實現(xiàn)(如創(chuàng)建可以幫助操作系統(tǒng)管理電源的線程)。在KTH庫中,提供了操作與能量驅(qū)動調(diào)度策略相關(guān)信息的函數(shù),這些調(diào)度策略在內(nèi)核中運行。為提供修改后的操作系統(tǒng)內(nèi)核與底層能量驅(qū)動硬件之間的接口,KLinux中還定義了能量驅(qū)動HAL。能量驅(qū)動HAL為操作系統(tǒng)提供了使用與能量相關(guān)硬件的"手柄",這種方式也使得能量驅(qū)動HAL獨立于硬件。能量驅(qū)動HAL函數(shù)可以控制處理器頻率、電壓層次和系統(tǒng)提供的低能量狀態(tài)。這些函數(shù)能夠被操作系統(tǒng)內(nèi)核的調(diào)度器所調(diào)用,用于降低處理器速度或關(guān)閉處理器。給出一個在系統(tǒng)中運行的實時任務(wù)集,任務(wù)集中每一個任務(wù)都包含以下參數(shù)(l)截止時間,任務(wù)的終止時間,在此之后,若該任務(wù)還未完成,也不再調(diào)度;(2)任務(wù)執(zhí)行長度,由任務(wù)所包含的指令周期數(shù)目來表示;(3)任務(wù)優(yōu)先級,指示任務(wù)重要性和調(diào)配可用性的標(biāo)記。則如圖2所示,實時任務(wù)的調(diào)度按下迷方法進(jìn)行首先,根據(jù)實時任務(wù)集中各任務(wù)的優(yōu)先級順序按照遞減的順序排列確定任務(wù)優(yōu)先級隊列,并在任務(wù)優(yōu)先級隊列中,對于具有相同優(yōu)先級的等優(yōu)先級任務(wù),根據(jù)各等優(yōu)先級任務(wù)的截止時間按照遞增的順序進(jìn)行排列以確定所述就緒任務(wù)隊列。此時,KLinux系統(tǒng)內(nèi)核的調(diào)度器會選擇任務(wù)優(yōu)先級隊列中的隊首任務(wù)并準(zhǔn)備運行。在該當(dāng)前任務(wù)運行之前,一個4企查線程會凈皮啟動首先,獲取當(dāng)前任務(wù)的任務(wù)執(zhí)行長度及截止時間后,根據(jù)可變電壓處理器提供的速率按照由高到低的順序計算得到當(dāng)前任務(wù)的執(zhí)行時間集,并將執(zhí)行時間集中各執(zhí)行時間與截止時間相比較,選擇'J、于截止時間的執(zhí)行時間組成備選執(zhí)行時間集;最后,從備選執(zhí)行時間集中選擇與截止時間差值的絕對值最小的執(zhí)行時間所對應(yīng)的可變電壓處理器速度為調(diào)度所述當(dāng)前任務(wù)的速度。檢查線程結(jié)束后,KLinux系統(tǒng)內(nèi)核的調(diào)度器為當(dāng)前任務(wù)分配與可變電壓處理器調(diào)度當(dāng)前任務(wù)的速度相應(yīng)的電壓,同時開始執(zhí)行當(dāng)前任務(wù),在任務(wù)執(zhí)行期間,其它任務(wù)保持就緒狀態(tài)。若當(dāng)前任務(wù)運行結(jié)束或當(dāng)前任務(wù)的截止時間到達(dá),則釋放當(dāng)前任務(wù)。此時,若當(dāng)前任務(wù)為就緒任務(wù)隊列的隊尾,則結(jié)束任務(wù)的調(diào)度,否則調(diào)度器將選擇就緒任務(wù)隊列中當(dāng)前任務(wù)的下一個任務(wù),作為新的當(dāng)前任務(wù)并再次準(zhǔn)備運行。測試中采用在單電源狀態(tài)下運行結(jié)果作為比較版本,即在單一的電源狀態(tài)1上運行實時任務(wù)集,這樣能同時測試出完成一定工作量時系統(tǒng)所需花費的最大能量開銷。試驗中,分別基于2速可變電壓處理器和、3速可變電壓處理器對本發(fā)明進(jìn)行了測試,通過這種方式可以更好地觀察增加額外電源狀態(tài)時的準(zhǔn)確性和有效性。2速處理器版本使用了700MHZ和1100MHz的處理器運行頻率,3速處理器版本則在2速版本的基礎(chǔ)上增加了900MHz的處理器運行頻率。處理器的利用率從10%到80°/。以10%的增量變化。附圖3為3速處理器版本下一個具有14個任務(wù)的隨機任務(wù)集的運行狀態(tài),從圖中可以看出,本發(fā)明方法可有效地控制運行任務(wù)的能量消耗并滿足任務(wù)的截止時間。測試結(jié)果表明,本發(fā)明方法在2速和3速處理器環(huán)境下產(chǎn)生的功耗要比無電源管理調(diào)度策略產(chǎn)生的功耗低5%-20%,大大減少了系統(tǒng)能量消耗。同時,3速版本能夠比2速版本更準(zhǔn)確地控制電量,進(jìn)一步減小系統(tǒng)功耗。權(quán)利要求1、一種嵌入式系統(tǒng)實時任務(wù)的調(diào)度方法,其特征在于包括以下步驟1.1根據(jù)實時任務(wù)集中各任務(wù)的優(yōu)先級順序和截止時間確定就緒任務(wù)隊列,并選擇所述就緒任務(wù)隊列的隊首任務(wù)為當(dāng)前任務(wù);1.2根據(jù)所述當(dāng)前任務(wù)的截止時間和處理器可提供的速率確定調(diào)度所述當(dāng)前任務(wù)的速度;1.3采用所述速度調(diào)度所述當(dāng)前任務(wù),若所述當(dāng)前任務(wù)運行結(jié)束或所述當(dāng)前任務(wù)的截止時間到達(dá),則進(jìn)入步驟1.4;1.4釋放所述當(dāng)前任務(wù),若所述當(dāng)前任務(wù)為所述就緒任務(wù)隊列的隊尾任務(wù),則結(jié)束任務(wù)的調(diào)度,否則選擇所述就緒任務(wù)隊列中所述當(dāng)前任務(wù)的下一個任務(wù)為新的當(dāng)前任務(wù),并回到步驟1.2。2、如權(quán)利要求l所述的嵌入式系統(tǒng)實時任務(wù)的調(diào)度方法,其特征在于所述步驟l.1中確定就緒任務(wù)隊列包括以下步驟2.1根據(jù)所述實時任務(wù)集中各任務(wù)的優(yōu)先級順序按照遞減的順序排列確定任務(wù)優(yōu)先級隊列;2.2在所述任務(wù)優(yōu)先級隊列中,對于具有相同優(yōu)先級的等優(yōu)先級任務(wù),根據(jù)所述各等優(yōu)先級任務(wù)的截止時間按照遞增的順序進(jìn)行排列以確定所述就緒任務(wù)隊列。3、如權(quán)利要求2所述的嵌入式系統(tǒng)實時任務(wù)的調(diào)度方法,其特征在于所述步驟l.2包括以下步驟3.l獲取所述當(dāng)前任務(wù)的任務(wù)執(zhí)行長度,根據(jù)處理器提供的速率按照由高到低的順序計算得到所述當(dāng)前任務(wù)的執(zhí)行時間集;3.2獲取所述當(dāng)前任務(wù)的截止時間,將所述執(zhí)行時間集中^L行時間與所述截止時間相比較,選擇小于所述截止時間的執(zhí)行時間組成備選執(zhí)行時間集;3.3從所述備選執(zhí)行時間集中選擇與所述截止時間差值的絕對值最小的執(zhí)行時間所對應(yīng)的處理器速度為調(diào)度所述當(dāng)前任務(wù)的速度。4、如權(quán)利要求1至3其中之一所述的嵌入式系統(tǒng)實時任務(wù)的調(diào)度方法,其特征在于所述的處理器為可變電壓處理器。全文摘要本發(fā)明公開了一種嵌入式系統(tǒng)實時任務(wù)的調(diào)度方法,1.根據(jù)實時任務(wù)集中各任務(wù)的優(yōu)先級順序和截止時間確定就緒任務(wù)隊列,并選擇就緒任務(wù)隊列的隊首為當(dāng)前任務(wù);2.確定調(diào)度所述當(dāng)前任務(wù)的速度;3.采用該速度調(diào)度當(dāng)前任務(wù),若當(dāng)前任務(wù)運行結(jié)束或當(dāng)前任務(wù)的截止時間到達(dá),則進(jìn)入步驟4;4.釋放當(dāng)前任務(wù),若當(dāng)前任務(wù)為就緒任務(wù)隊列的隊尾任務(wù),則結(jié)束任務(wù)的調(diào)度,否則選擇就緒任務(wù)隊列中當(dāng)前任務(wù)的下一個任務(wù)為新的當(dāng)前任務(wù),并回到步驟2。本發(fā)明所述技術(shù)方案在滿足嵌入式系統(tǒng)實時性要求的同時還能實現(xiàn)減少系統(tǒng)能量消耗的目的。文檔編號G06F9/46GK101290585SQ20071007407公開日2008年10月22日申請日期2007年4月19日優(yōu)先權(quán)日2007年4月19日發(fā)明者楊永田,王繼剛,謝世波申請人:中興通訊股份有限公司