實(shí)時(shí)操作系統(tǒng)軟件調(diào)度器/硬件調(diào)度器的設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
實(shí)時(shí)操作系統(tǒng)(RTOS),在整個(gè)嵌入式系統(tǒng)中扮演著十分重要的角色,它就像人的大腦支配人的行為一樣,控制著整個(gè)系統(tǒng)的工作與運(yùn)轉(zhuǎn),一個(gè)RTOS性能的優(yōu)劣將對(duì)整個(gè)系統(tǒng)的性能產(chǎn)生直接的影響。衡量一個(gè)RTOS的好壞有多種標(biāo)準(zhǔn),實(shí)時(shí)性則為一個(gè)關(guān)鍵指標(biāo),并且隨著實(shí)時(shí)操作系統(tǒng)實(shí)際運(yùn)用的加深及拓廣,對(duì)RTOS提出了更加嚴(yán)格的要求。在系統(tǒng)限定時(shí)間內(nèi)響應(yīng)處理外部事件已經(jīng)成為了對(duì)RTOS的一個(gè)基本要求。
任務(wù)調(diào)度,是RTOS的核心所在,任務(wù)間的通信、外部事件的處理以及中斷處理等都離不開任務(wù)調(diào)度的參與。而且隨著系統(tǒng)功能的完善與增強(qiáng),任務(wù)間的關(guān)系變得更加復(fù)雜,需要與更多的外圍設(shè)備打交道,這就需要任務(wù)調(diào)度不斷地參與其中,從而導(dǎo)致系統(tǒng)性能的急劇下降、對(duì)事件實(shí)時(shí)響應(yīng)能力的降低。任務(wù)調(diào)度則成為了RTOS性能的瓶頸,提高RTOS的整體性能則首先應(yīng)當(dāng)從提高任務(wù)調(diào)度的性能著手。將任務(wù)調(diào)度硬件化,無疑可以提升任務(wù)調(diào)度的性能,從而提高整個(gè)RTOS的性能。本文討論了三種任務(wù)調(diào)度的實(shí)現(xiàn)方法,分別為:軟件調(diào)度器模型、協(xié)處理器調(diào)度模型、硬件調(diào)度器模型,并在文章最后對(duì)其性能進(jìn)行了測試。測試結(jié)果表明,硬件調(diào)度器模型具有良好的性能,相對(duì)協(xié)處理器方式需要更少的硬件實(shí)現(xiàn)邏輯單元。
系統(tǒng)功能的增強(qiáng),使得任務(wù)間的調(diào)度以及任務(wù)之間的通信變得更加復(fù)雜,必將導(dǎo)致系統(tǒng)性能急劇降低。而且,隨著系統(tǒng)不斷完善,在實(shí)時(shí)嵌入式系統(tǒng)中,計(jì)算結(jié)果的正確性已經(jīng)不再是整個(gè)系統(tǒng)追求的目標(biāo),而實(shí)時(shí)性則成為整個(gè)系統(tǒng)面對(duì)的首要難題。如果將RTOS的調(diào)度功能由原來的純軟件實(shí)現(xiàn)轉(zhuǎn)變?yōu)橛布?shí)現(xiàn),將極大的提高實(shí)時(shí)系統(tǒng)的實(shí)時(shí)性以及處理能力。
設(shè)計(jì)與實(shí)現(xiàn)
邏輯時(shí)序關(guān)系
圖1是操作系統(tǒng)以及應(yīng)用程序都由單CPU運(yùn)行的邏輯時(shí)序圖。由時(shí)序圖可以看出,在單CPU運(yùn)行RTOS以及應(yīng)用程序條件下,CPU不斷地在RTOS內(nèi)核以及應(yīng)用程序之間切換。即使在沒有外部中斷的情況下,CPU的運(yùn)行都將在確定的時(shí)刻執(zhí)行任務(wù)調(diào)度程序(由系統(tǒng)時(shí)鐘觸發(fā)),例如t2、t4、t6等時(shí)刻。每次的任務(wù)調(diào)度都至少執(zhí)行以下四步操作:(1) 當(dāng)前任務(wù)上下文內(nèi)容的保存;(2) 操作系統(tǒng)內(nèi)核態(tài)的恢復(fù);(3) 操作系統(tǒng)內(nèi)核態(tài)信息保存;(4) 新任務(wù)上下文內(nèi)容恢復(fù)。即便調(diào)度前后,例如t1與t3時(shí)刻,CPU執(zhí)行相同的任務(wù),也同樣要執(zhí)行上述的四步操作。很明顯,這樣的操作浪費(fèi)了大量的CPU處理時(shí)間,執(zhí)行了大量的無謂的內(nèi)容保存工作。
Ti為第i個(gè)任務(wù)運(yùn)行時(shí)間; CS+OS為任務(wù)上下文轉(zhuǎn)換時(shí)間以及RTOS所占用時(shí)間;INT中斷服務(wù)程序時(shí)間;C ST 為當(dāng)前任務(wù)上下文內(nèi)容保存時(shí)間; CR RTOS 為操作系統(tǒng)上下文恢復(fù)時(shí)間;RTOS為操作系統(tǒng)運(yùn)行內(nèi)核程序以及調(diào)度時(shí)間; CS RTOS 操作系統(tǒng)上下文保存時(shí)間; CR T 調(diào)度后新任務(wù)上下文恢復(fù)時(shí)間。
圖2為協(xié)處理器運(yùn)行調(diào)度程序,而應(yīng)用程序由主CPU運(yùn)行,這樣調(diào)度程序和應(yīng)用程序在時(shí)間上為并行執(zhí)行。當(dāng)主CPU需要進(jìn)行任務(wù)調(diào)度時(shí),將會(huì)引發(fā)中斷,通知協(xié)處理器。在完成中斷處理以及任務(wù)上下文保存與恢復(fù)之后,主CPU 繼續(xù)執(zhí)行新的任務(wù),這樣去除了RTOS進(jìn)出內(nèi)核態(tài)的上下文保存時(shí)間,無疑可以提升RTOS的整體性能。
設(shè)計(jì)實(shí)現(xiàn)
在上文中,已經(jīng)提到,將RTOS的調(diào)度以三種方式進(jìn)行實(shí)現(xiàn),分別為純軟件實(shí)現(xiàn)、協(xié)處理器實(shí)現(xiàn)以及純硬件實(shí)現(xiàn)。
為了實(shí)現(xiàn)這三種調(diào)度方法,采用了Xilinx公司的Virtex-II Pro系列的 XC2VP30 芯片,軟件平臺(tái)為EDK(embeded development kit)功能以及時(shí)序仿真采用Modelsim軟件。CPU采用EDK提供的MicroBlaze處理器模型,并集成64K的SRAM以及1M的FLASH建立一個(gè)最小的核心系統(tǒng),作為該調(diào)度算法的核心硬件平臺(tái)。MicroBlaze為32位的哈佛結(jié)構(gòu)的處理器,采用RISC指令集,為便于計(jì)算,設(shè)置其工作頻率為50MHz。
1.軟件調(diào)度模型實(shí)現(xiàn)
軟件調(diào)度模型系統(tǒng)由以下幾部分組成:1)MicroBlaze處理器;2)RAM存儲(chǔ)區(qū);3)片上總線;4)中斷以及時(shí)間控制模塊;5)監(jiān)控模塊;6)UART接口。MicroBlaze處理器用于運(yùn)行RTOS以及應(yīng)用程序。應(yīng)用程序的執(zhí)行具有周期性的特點(diǎn),而外部的中斷則將打斷這種周期性具有突發(fā)性的特點(diǎn)。MicroBlaze需實(shí)時(shí)處理兩種不同類型的事件,這與實(shí)際應(yīng)用情況相符合。監(jiān)控模塊是在EDK中一個(gè)特定模型的實(shí)現(xiàn),用于監(jiān)控外部單元與主CPU的通信過程(以中斷方式或者輪詢方式)。監(jiān)控模塊具有兩個(gè)特定功能,獲取當(dāng)前系統(tǒng)時(shí)間以及向CPU發(fā)送中斷信號(hào)。最后,將實(shí)測的調(diào)度時(shí)間數(shù)據(jù)通過UART接口發(fā)送至上位機(jī),進(jìn)行分析處理,以驗(yàn)證模型的性能。
2.協(xié)處理器調(diào)度模型實(shí)現(xiàn)
協(xié)處理器調(diào)度模型在軟件調(diào)度模型基礎(chǔ)上增加協(xié)處理器模塊。該模型中,將RTOS的任務(wù)調(diào)度模塊從主CPU中分離出來,并將該部分代碼完全運(yùn)行于協(xié)處理器中。協(xié)處理器需要完成任務(wù)狀態(tài)以及任務(wù)堆棧管理,并通過DMA方式與主內(nèi)存之間通信,實(shí)現(xiàn)同主CPU中任務(wù)各種狀態(tài)以及信息的同步。
在協(xié)處理器調(diào)度模式下,當(dāng)系統(tǒng)時(shí)鐘產(chǎn)生中斷時(shí),不需要進(jìn)行任務(wù)調(diào)度的工作,只有當(dāng)主CPU需要進(jìn)行任務(wù)調(diào)度時(shí),通知協(xié)處理器等待掛起的任務(wù)號(hào)以及其上下文內(nèi)容,協(xié)處理器將該任務(wù)完整保存之后,將處于最高優(yōu)先級(jí)的就緒態(tài)任務(wù)及其上下文內(nèi)容送入主CPU,完成任務(wù)調(diào)度。
由協(xié)處理器模式下調(diào)度的整個(gè)流程可以看出,任務(wù)的調(diào)度完全由主CPU發(fā)起,任務(wù)的調(diào)度只是發(fā)生在需要調(diào)度的時(shí)刻,同時(shí)由于協(xié)處理器參與了調(diào)度的工作,主CPU不需要進(jìn)入內(nèi)核態(tài)來實(shí)現(xiàn)任務(wù)調(diào)度,這極大的提高了主CPU的有效工作效率。
3.硬件調(diào)度器模型實(shí)現(xiàn)
硬件調(diào)度器模型將調(diào)度的功能完全用專用的硬件IP核實(shí)現(xiàn)。見圖3,整個(gè)系統(tǒng)包含圖3中去除協(xié)處理器的所有部分。調(diào)度模塊具有與協(xié)處理器相同的功能,但是調(diào)度模塊完全由時(shí)序以及邏輯模塊組成,不具有協(xié)處理器智能化的特性,其開發(fā)難度也相對(duì)較大。但是正是由于調(diào)度模塊采用的時(shí)序以及邏輯模塊組合的結(jié)構(gòu),其實(shí)現(xiàn)無需程序控制,故調(diào)度速度要高于協(xié)處理器調(diào)度模式。
整個(gè)調(diào)度模塊由三部分組成,見圖4:調(diào)度核、任務(wù)管理、通信接口。通信接口將CPU傳送過來以及調(diào)度核的指令進(jìn)行翻譯轉(zhuǎn)換,實(shí)現(xiàn)CPU與調(diào)度核之間的通信。調(diào)度核控制任務(wù)管理,將等待掛起的任務(wù)以及最高就緒態(tài)的任務(wù)號(hào)發(fā)送給任務(wù)管理器,同時(shí)與CPU交互信息,從CPU獲取系統(tǒng)時(shí)間等各種有用信息。任務(wù)管理則負(fù)責(zé)各種任務(wù)狀態(tài)的切換,將調(diào)度核發(fā)送過來的等待掛起的任務(wù)置入等待隊(duì)列,而將最高優(yōu)先級(jí)的任務(wù)標(biāo)志為運(yùn)行態(tài),交由調(diào)度核并發(fā)送給CPU。
性能測試及結(jié)論
為了驗(yàn)證三種調(diào)度模型的性能,采用了如下的測試方法。應(yīng)用程序由10個(gè)相同功能的任務(wù)組成,任務(wù)的序號(hào)分別為1到10,每個(gè)任務(wù)運(yùn)行確定時(shí)間之后,掛起自身而運(yùn)行任務(wù)號(hào)加1的任務(wù)。異步中斷通過外部按鍵人為觸發(fā),一個(gè)始終處于掛起態(tài)的任務(wù)用于接收按鍵消息,并處理。按鍵消息處理之后,任務(wù)將自身掛起。圖5為主機(jī)通過串口獲取的任務(wù)切換信息,并通過matlab繪制的圖形。從圖可以看出,三種調(diào)度器性能由低到高分別為軟件調(diào)度模型、協(xié)處理器調(diào)度模型、硬件調(diào)度模型。
結(jié)語
本文介紹了三種RTOS的調(diào)度器實(shí)現(xiàn)模型,軟件調(diào)度模型為當(dāng)前最常用的也最穩(wěn)定的調(diào)度模型,其實(shí)現(xiàn)簡單,且硬件成本低;協(xié)處理器調(diào)度模型具有較高的性能,但是由于采用協(xié)處理器的支持,無疑增加了硬件成本,RTOS的調(diào)度由協(xié)處理器完成,減輕了主CPU的負(fù)擔(dān),但是協(xié)處理器的調(diào)度過程實(shí)際上也由軟件實(shí)現(xiàn),其整體的調(diào)度速度不是很高,其性能提升 只是在減小主CPU的調(diào)度次數(shù)以及避免進(jìn)入內(nèi)核態(tài)上;硬件調(diào)度模型具有最高的效率,雖然模塊開發(fā)調(diào)試復(fù) 雜繁瑣,但是與協(xié)處理器調(diào)度模式相比,占用更少的硬件資源,而且效率高于協(xié)處理器方式,必將極大地提高系統(tǒng)性能。綜上所述,三種RTOS各具有自身特點(diǎn),在具體的實(shí)現(xiàn)過程中,需要考慮系統(tǒng)的特性折中選擇實(shí)現(xiàn)方式。與當(dāng)前流行的調(diào)度模式相比,硬件調(diào)度模型具有更高的性能,必將成為今后RTOS發(fā)展的一個(gè)方向。