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