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