μC/OS-II實時性能測試與分析
任務切換時間和中斷響應時間是嵌入式實時操作系統實時性能的重要指標。本文對μC/OS-II的上述指標進行了測試,并給出了測試方法;分析了不同的情況對μC/OS-II實時性能的影響。實驗結果表明:實時性能與CPU運行頻率成正比,而CPU利用率對實時性能影響較小。
關鍵詞 實時性能 μC/OS-II 任務切換時間 中斷響應時間
實時性是指系統能夠在限定的時間內完成任務并對外部的異步事件作出及時響應。在大多數工業控制中,對實時性的要求非常高。
實時操作系統是能夠滿足實時系統中實時任務的處理響應時間要求的操作系統。實時操作系統是事件驅動(event?driven)的,能對來自外界的作用和信號在限定的時間范圍內作出響應。它強調的是實時性、可靠性和靈活性,與實時應用軟件相結合成為有機的整體,起著核心作用;由它來管理和協調各項工作,為應用軟件提供良好的運行軟件環境及開發環境。在多任務實時系統中,必然由實時操作系統來對實時任務進行管理。
μC/OS-II是一種結構小巧、具有可剝奪實時內核的實時操作系統。其內核提供任務調度與管理、時間管理、任務間同步與通信、內存管理和中斷服務等功能。
現在許多工業控制系統用到了μC/OS-II,為了對其實時性有更深入具體的了解,本文對μC/OS-II的實時性進行了測試和分析,在實時系統設計中具有現實意義。
1? μC/OS-II實時性能測試指標
衡量嵌入式實時操作系統的好壞一般主要參考以下主要性能指標參數: 任務切換時間、中斷響應時間、任務響應時間、任務創建/刪除時間、交替信號量時間、取得/釋放信號量時間、交替消息隊列傳輸時間等。本文僅對前2個最重要的指標參數進行測試分析。
1.1? 任務切換時間
任務切換時間(Task Content Switch Time)可以反映出RTOS執行任務的速度。
μC/OS-II使用的是占先式內核,以保證系統的響應時間。每個任務都被賦予一定的優先級,最高優先級的任務一旦就緒,就能得到CPU的控制權。當一個運行著的任務通過信號量等機制使一個更高優先級的任務進入了就緒態,μC/OS-II會進行任務調度。這時當前任務的CPU使用權就要被剝奪,那個高優先級的任務會立刻得到CPU的控制權。
每個任務都有自己的一套CPU寄存器和棧空間。任務的切換實際上就是CPU寄存器內容的切換。CPU內部寄存器越多,額外負荷就越重。
在任務切換之前還需要在就緒表中查找出優先級最高的任務,它由任務調度函數OSSched()完成,是比較花費時間的。因為這個函數有固定長度的語句,所以它的執行時間是常數,與應用程序建立了多少個任務沒有關系。
所以任務切換時間取決于CPU有多少寄存器要出入棧,以及相關調度函數的執行速度。
1.2? 中斷響應時間
中斷響應時間(Interrupt Response Time)可以反映出RTOS對外界變化的反應速度,是指從中斷發生起到執行中斷處理程序的第一條指令所用的時間。它是衡量嵌入式實時操作系統實時性能的最主要、最具有代表性的性能指標。
中斷響應時間=中斷延遲時間+保存CPU狀態的時間+該內核的ISR進入函數的執行時間
中斷延遲時間=關中斷的最長時間+開始執行中斷服務子程序(ISR)的第1條指令的時間
關中斷的最長時間取決于運行時不同的情況,其他參數在其系統中都有固定長度代碼。中斷響應是系統在最壞情況下響應中斷的時間。
2? μC/OS-II實時性能測試原理
2.1? 任務切換時間測試原理
任務切換時間測試是利用系統內部的定時器計算任務切換時間。給定時器一個初始值a1,并建立兩個任務;在任務1中開啟定時器,利用消息郵箱切換到任務2,停止計時,記錄定時器的值為a2。設系統時鐘的計數頻率為f,任務切換時間為Ttcst,則:
2.2? 中斷響應時間測試原理
中斷響應時間測試同樣也是利用定時器計算中斷響應時間。給定時器一個初始值a1,建立一個任務和定時器中斷服務函數,在任務中開啟定時器;當定時器自減為0時,進入中斷服務子函數,在該子函數中關閉定時器,記錄定時器的值為a2。注意: 定時器歸0后自動變為初始值a1。設系統時鐘的計數頻率為f,中斷響應時間為Tirt,則:
3? μC/OS-II實時性能測試步驟及結果
本文測試使用的硬件平臺為2410開發板,其中處理器采用Samsung公司的S3C2410X。S3C2410X是一款基于ARM920T內核的16/32位RISC嵌入式處理器,系統主頻是202.8 MHz。
3.1? 任務切換時間測試步驟及結果
① ?系統時鐘初始化。這里只用到定時器0。PCLK = FCLK /4 = 202.8 MHz /4 = 50.7 MHz,預分頻值設置為0,除法器設為1/4,所以最小分頻為0.08 μs,f = 12.5 MHz。計時器0初始值TCNTB0設為60 000,即a1=60 000。
② ?如圖1所示,建立兩個任務:? Task_TCST_Start()和Task_TCST_End()。Task_TCST_End優先級高,運行后因等待郵箱的消息而掛起等待;然后Task_TCST_Start開始運行,向郵箱發送一則消息,同時定時器開始計時;之后該任務延時一段時間,進入掛起狀態。Task_TCST_End收到郵箱消息,由等待狀態進入就緒態,因為擁有就緒態隊列中的最高優先級,所以獲得CPU使用權。它進入運行態后立即停止計時,記為a2。
③? 根據式(1)計算結果。
④? 重復10次實驗,取最大值為5.36 μs。
需要注意2點: 其一,有意義的任務切換時間和中斷響應時間是系統在最壞情況下發生的,所以不能取平均值,應該取最大值。其二,因為定時器是循環計數的,即從初始值自減到0,然后恢復初始值,繼續自減。所以停止計時時,定時器可能經過了兩次或多次循環。設計程序時要注意這一點。在本次實驗中,循環最大間隔為60 000×0.08 μs = 4 800 μs,遠大于一次任務切換時間或中斷響應時間,所以定時器沒有經過多次循環。
3.2? 中斷響應時間測試步驟及結果
①? 同任務切換時間測試。
②? 如圖2所示,建立一個任務Task_IRT_Test和定時器0對應的中斷服務子程序Timer0_IRT_Test。在任務中開啟定時器0,當定時器0自減到0時,CPU響應該中斷,CPU的中斷向量跳轉到定時器0的中斷服務子程序Timer0_IRT_Test,由它保存CPU的全部寄存器;然后通知內核進入中斷服務子程序,同時將堆棧指針保存到當前任務控制塊OS_TCB中,之后用戶的中斷服務代碼開始執行,在此停止定時器0,讀出它的數值a2。
③? 根據式(2)計算結果。
④? 重復10次實驗,取最大值0.24 μs。
4? CPU運行頻率對μC/OS-II實時性的影響
將CPU運行頻率分別降低到152.00 MHz、101.25 MHz、67.50 MHz和33.75 MHz。
測試方法不變,其測試結果分別如圖3和圖4所示。其中,任務切換時間的最大值分別為7.14 μs、10.74 μs、16.35 μs、32.71 μs;中斷響應時間的最大值分別為0.32 μs、0.47 μs、0.95 μs、1.90 μs。
測試結果分析: 總體上,隨著CPU運行頻率的增加,任務切換時間和中斷響應時間都會減小,且呈非線性變化。特別是CPU運行頻率較低時,其變化對實時性能影響較大;當CPU運行在較高的頻率時,其變化幅度相對要小些。其非線性變化是與最小分頻時間相關的。
這說明CPU運行頻率對實時性能起著非常重要的作用。因為它直接決定指令的處理周期,頻率增加時,指令周期減小,系統用于同步等待的時間縮短,CPU執行每條語句的速度加快,保存和恢復CPU寄存器內容的速度也相應加快,因此實時性能變得更好。
5? CPU利用率對μC/OS-II實時性能的影響
之前的測試都是在CPU負荷較小的情況下進行的,當CPU負荷增大(即利用率升高)時,實時性又會如何變化呢?這里建立了N個相同的任務,同時進行大批量的浮點運算。再建立一個任務,利用μC/OS-II自帶函數OSStat()計算CPU利用率。對應不同的N值,有不同的CPU利用率,分別測試其實時性,得到的結果如圖5所示。測試結果表明: 當CPU負荷增大時,任務切換時間會增加,中斷響應時間也會略有增加。CPU利用率對系統的實時性能有一定的影響,但不是很大。
6? 結論
本文在特定的硬件平臺上測得μC/OS-II在不同情況下的任務切換時間和中斷響應時間,能較好地反映出它的實時性能。測試方法在沒有精密儀器的條件下即可完成,具有簡單易行、硬件依賴性低、可信度高的特點,為開發人員將μC/OS-II用于嵌入式操作系統的實時應用提供了依據。
評論