?摘要:
將MIPS體系結構的處理器應用在數控系統上,可以降低系統的成本,增強數控系統的國產化水平.但不同的硬件結構會對實時操作系統的調度抖動產生不同的影響,而運動控制器的調度抖動是數控系統的重要性能指標之一.本文討論了MIPS平臺上運動控制器的調度抖動的測試方法,分析產生抖動的原因,并針對這些原因對系統進行了優化.最終測試結果表明,在MIPS平臺下,RTAI的調度抖動能夠滿足數控系統的需要.
1 前言
目前,國內外的數控系統大多采用X86體系結構的CPU,主要是因為X86體系結構上擁有豐富的應用軟件,開
發環境和技術積累,可以在一定程度上縮短數控系統的開發周期.但X86體系結構也有其自身的缺點,比如其指令集體系結構過于復雜,成本高.而且X86技術一直被國外的幾家大公司所壟斷,將其應用在數控系統這樣的戰略資源上,存在一定的安全隱患.
M1PS體系結構具有靈活開放,成本低的優點,在工業控制、網絡、通信、多媒體娛樂等領域得到了廣泛的應用.我國已經研制出了具有自主知識產權的MIPS通用CPU.因此將MIPS結構的CPU應用在數控系統上,不僅可以降低數控系統的成本,還增加了數控系統特別是高檔數控系統國產化的水平.
實時操作系統是數控系統的軟件基礎,數控軟件中的運動控制器部分需要實時操作系統對其進行周期性的調度,對
實時操作系統的性能要求很苛刻.一般來說,應用于數控系統中的實時操作系統需要具有高實時性,時間確定性以及高可靠性,安全性和容錯性?.
在硬實時操作系統中,主要是依靠時鐘硬件產生的中斷對周期進程進行調度.雖然時鐘可以精確的給出定時中斷,但硬件和操作系統的運作方式會對中斷響應和進程調度產生影響,從而使周期進程每次開始執行的時間變的不確定,這就是調度抖動.調度抖動直接影響到數控加工的精度,如果數控系統的加工速度為10米/分鐘,那么5O微秒的抖動就可能產生約8.3微米的隨動誤差.針對特定的體系結構研究與分析運動控制器的調度抖動,對掌握并改善數控系統的性能具有重要的意義.
RTAI(Real Time Application Interface)是由意大利米蘭理工學院航天工程系發起開發的一個遵循GNU GPL的開源項目,RTAI已經支持i386,MIPS,PowerPC,ARM 和M68k-~ommu等處理器,是目前支持處理器最多的linux實時解決方案之一.RTAI具有豐富的功能和良好的硬實時性能.本文針對數控系統的運動控制器,討論了在MIPS平臺上RTAI操作系統的調度抖動測試,并分析了產生調度抖動的原因.
2 抖動測試
2.1 抖動測試方法
在本文中,用于測試的硬件平臺是龍芯2E處理器,主頻為664.32MHz.該處理器擁有64KB的一級緩存和512KB的二級緩存.系統內存為256M.
本文在抖動測試中采用了內部軟件測試技術:記錄運動控制器的第一條指令每次執行的時間戳,并存儲在共享內存中,在測試完畢后,再讀取共享內存中的數據以供分析 】.時間戳從CPU內部的高精度計時器獲取,它是一個32位的寄存器(cp0L9 ),每個指令周期自動加1,類似于pentium系列CPU上的TSC(Time Stamp Count) .可以使用MFC0指令讀出該計時器的值.但32位的計時器在664.32MHz的主頻下,每隔6.47秒就會發生一次翻轉,因此需要對得到的數據進行溢出處理.本文處理方法是維護一個64位的虛擬計時器:
union{
unsigned long long tsc;
unsigned long hltsc[2];
}tsc;
該結構將一個64位的長整型變量分成了兩個32位的長整型變量,低32位用來獲取計時器的值,高32位在計時器溢
出時加1,這樣就得到了一個虛擬的64位的高精度計時器.在664.32MHz的主頻下,64位的計時器需要880年的時間才會發生一次翻轉.可以采用下面的函數讀取虛擬計時器csc的值:
inline unsigned long long rdtsc(void)
{
unsigned long count;
一
asm
一 volatile一(”mfcO/t%0, $9/n/t“ :”=f”
(count));
tsc.hltsc[1]+=(count tSC.~tscf0]=count;
return tsc.tsc;
}
在MIPS中,CP0協處理器中的11號寄存器可以作為實時時鐘使用.11號寄存器又稱為compare寄存器,它用來在
特定的時刻產生一個中斷,該寄存器被寫入一個初值后,便不斷的將此值與計時器中的值進行比較,一但二者相等,便觸發63號中斷 3.因此MIPS CPU的定時精度可以達到納秒級.
2.2 數據分析
通過上述方法獲得的時間序列是一個遞增數列,相鄰兩個元素之問的差值即是運動控制器的實際周期.為了盡可能
的減小測試誤差的影響,本文采用最小二乘法對時間序列進行擬合,得到時間序列的一條最佳逼進線,使用這條最佳逼進線來計算各周期的名義值 J.時問序列中的每一個元素與最佳逼進線之間的差值就是各個周期的調度抖動.
圖1是在正常負載下,前100個測試點與最佳逼進線的偏離值.剛開始的幾個點反映了較大的抖動,其中最大的抖動達到了228微秒.這個現象是正常的,因為運動控制器在剛開始運行的時候沒有將指令和數據加載到cache中,相應的頁表也沒加載到TLB(Translation l_x~okaside Buffer)中,因此會不斷發生cache失效異常和TLB重填異常,這加重了系統的負擔,并延遲了運動控制器的執行.從第40組數據以后,抖動趨于平穩.在后面的測試中,均將前100組數據舍棄,從而可以更好的統計一般情況.
RTAI提供了兩種調度模式,分別是單觸發模式(oneshotmode)和周期模式(periodic mode) .在單觸發模式下,在每次執行調度函數時,系統都需要根據當前的情況重新計算下次觸發定時中斷的時間,并對定時器進行編程.而周期模式只在時鐘初始化的時候對定時器進行編程,以后便始終依賴這個固定的時鐘周期進行調度.單觸發模式下,系統的負擔較重,會在一定程度上影響系統的性能.本文分別在單觸發模式和周期模式下測試了運動周期的抖動.
在單觸發模式下,調度中加入了補償,如果上一次的調度被延遲了,那么下次便會提前調度,以消除調度抖動的累積.比如上次的實際周期為2010微秒,那么下次的實際周期就應該是1990微秒.圖2是在10000組測試樣例中抽取的100組數據,從中可以看出,所有的測試點均以標準值為中心對稱分布,反映了上面描述的調度方法.單觸發模式下最大抖動為23.476微秒,平均抖動為414納秒.
周期模式下的調度沒有補償,實時進程不會提前執行,因此調度抖動會在每次調度的時間戳上累積.由于硬件定時器的定時周期在運動控制器的執行期間是固定的,抖動的下限是0.圖3(見下頁)是從10000組樣例中抽取的100組數據.在所測的10000組數據中,所有元素均為正值,抖動的最大值為73.8微秒,平均抖動為3.298微秒.周期模式下的平均抖動時間是單觸發模式下的8倍.單觸發模式的調度雖然較精確,但需要耗費大量的cpu時間,加重了系統的負擔,在硬件性能較差的環境下,其性能可能會低于周期模式.因此,在選用調度模式時,需要針對特定的硬件平臺和軟件環境進行抖動測試 .
3 抖動產生的原因分析
RTAI采用了2種調度算法,分別為單調速率算法和最早時限優先算法.本文采用的是單調速率算法,因為該算法基于
靜態優先級,能夠保證最高優先級進程的穩定調度-6j.調度程序每次選擇的進程總是優先級最高的進程,在同等優先級的各進程之間則采用時間片輪轉的方法進行調度.在數控系統的所有進程中,運動控制器的優先級最高,因此,我們只需要研究高優先級的進程產生抖動的原因即可.根據RTAI的調度機制,運動控制器可以搶占其他進程,并且不會被其它任何進程搶占,因此沒有進程可以延遲運動控制器的執行.但是存在其它因素可以延緩它的執行,比如總線上鎖,關中斷,中斷嵌套,資源競爭,cache失效,以及操作系統中存在不可搶占的關鍵區域等.在設計良好的實時系統中,不可搶占的臨界區很少,且運動控制器幾乎不需要內存以外的其他資源,能夠對運動控制器產生影響的主要因素只有關中斷,中斷嵌套和cache失效.
前面已經介紹過了cache失效會在運動控制器剛加載時對調度抖動產生影響,實際上在運動控制器的運行過程中,其他的非實時進程,如圖形顯示,網絡訪問,磁盤讀寫等都會影響cache,從而間接的影響運動控制器.為了降低cache失效對調度抖動的影響,可以盡量減少除數控軟件以外的其它程序的運行.比如使用TinyX代替具有圖形加速功能的XServer前面已經介紹過了cache失效會在運動控制器剛加載時對調度抖動產生影響,實際上在運動控制器的運行過程中,其他的非實時進程,如圖形顯示,網絡訪問,磁盤讀寫等都會影響cache,從而間接的影響運動控制器.為了降低cache失效對調度抖動的影響,可以盡量減少除數控軟件以外的其它程序的運行.比如使用TinyX代替具有圖形加速功能的XServer
RTAI的進程調度是由硬件時鐘的定時中斷驅動的.圖4簡略地說明了從時鐘給出中斷,到運動控制器開始執行的過
程.這個過程包括,系統關中斷的時間,中斷準備時間和中斷處理時間.在關中斷的時間內,系統不能對其他任何優先級的中斷進行響應,所以時鐘中斷必須等待,直到系統開中斷.中斷準備階段是指,從CPU開始響應時鐘中斷到進入時鐘中斷的處理程序所需要的時間,中斷處理階段是指執行中斷處理程序rt—timer—handler(),即調度程序所需要的時間 J.中斷準備時問和中斷處理時間在特定的系統上是固定的,只有幾微秒的時間,而且在我們的測試方法中不會對測試結果產生影響.單從時鐘中斷處理的過程來看,調度延遲主要取決于系統的最大關中斷時問 J.在本文的測試平臺上最大關中斷時間為13.24微秒.
現代操作系統均允許中斷嵌套,以便及時響應緊急的中斷.那么在中斷準備和中斷處理階段,時鐘中斷的處理有可能被其他的中斷搶占,這也會對運動控制器的抖動產生影響.為了降低這種影響,應該盡可能的減少系統中的中斷數量,這樣不僅可以降低時鐘中斷被搶占的可能性,也可以降低系統的負載.在數控系統中,由于不需要大批量的讀寫磁盤數據,不需要電源管理,可以將DMA,APM 和ACPI禁用.這些設備會產生大量的中斷,并頻繁的對總線上鎖.如果該數控系統無需網絡通信,也可以將網絡禁用.
在禁用了上述設備后,本文在單觸發模式下,對運動控制器的調度抖動進行了重新測試.最大抖動為8.02微秒,平均抖動為392納秒.最大抖動接近沒禁用設備以前的1/4.圖5是10000組測試樣列的散點圖.從圖上可以看出大部分的測試點都分布在微秒內,這樣的抖動在數控系統中是可以接受的.當數控系統以10米/分的速度加工的時候,8微秒的抖動最多能產生1.3微米的隨動誤差.
4 總結
對實時系統而言,調度抖動是不可避免的.調度抖動的大小與硬件體系結構和操作系統的運作方式密切相關.在數控系統中,大的調度抖動會對加工精度產生影響.本文針對M1PS平臺,在不同的調度模式下測試了運動控制器的調度抖動,并采用最小二乘法對結果進行了分析.實驗表明,在該數控系統中,周期模式下的平均抖動是單觸發模式的8倍多.在數控系統中,可能引起抖動的因素有cache失效,系統關中斷以及中斷嵌套等,本文針對這些因素對系統做了優化,禁用了DMA,APM,ACPI等與數控系統的運行關系甚微的設備,并將具有圖形加速功能的X Server替換成了對資源占用很小的Tiny X.結果在單觸發模式下,最大抖動可以縮短到原來的四分之一,平均抖動也有所改善.測試結果證實,在MIPS平臺下,RTAI完全能夠滿足數控系統的需要.
評論
查看更多