實(shí)時(shí)操作系統(tǒng)軟件調(diào)度器/硬件調(diào)度器的設(shè)計(jì)與實(shí)現(xiàn)
實(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)行了測(cè)試。測(cè)試結(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í)測(cè)的調(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的有效工作效率。
評(píng)論