基于Windows平臺的分布式實時仿真系統(tǒng)
摘要 通過介紹基于Windows的實時擴展子系統(tǒng)RTX,提出了解決Windows下分布式仿真的兩種方案:基于RTX的反射內(nèi)存網(wǎng)分布式仿真和基于以太網(wǎng)的令牌環(huán)分布式仿真架構。并比較了兩種架構與傳統(tǒng)Windows方案在實時性能上的差別。兩種方案在滿足分布式仿真系統(tǒng)實時性要求的基礎上,能為不同要求的仿真提供靈活可靠的選擇。
關鍵詞 RTX;反射內(nèi)存網(wǎng);令牌環(huán)網(wǎng);實時;分布式仿真
基于Windows的分布式仿真系統(tǒng)當前面臨的最大問題,在于如何提高分布式網(wǎng)絡的實時性能。其內(nèi)容主要有兩方面:(1)如何最大限度的提高網(wǎng)絡傳輸性能,使數(shù)據(jù)盡可能的快速傳輸。(2)如何在盡可能小的影響傳輸性能的基礎上,滿足分布式系統(tǒng)數(shù)據(jù)傳輸確定性的需要。也即如何降低數(shù)據(jù)傳輸?shù)钠骄舆t和最壞情況下的延遲兩方面的內(nèi)容。
將RTX實時擴展子系統(tǒng)的技術引入Windows操作系統(tǒng),不僅可將Windows改造成一個確定響應的硬實時操作系統(tǒng),同時可以改造基于Windows平臺的以太網(wǎng)及反射內(nèi)存網(wǎng)的應用。實現(xiàn)在分布式仿真系統(tǒng)中數(shù)據(jù)傳輸?shù)目焖傩砸约按_定性的指標,達到構建基于Windows的分布式實時仿真系統(tǒng)的目的。
針對以太網(wǎng)和反射內(nèi)存網(wǎng),提出了基于RTX的實時數(shù)據(jù)傳輸?shù)母脑旆桨?,使得以上兩種方案都可以在Windows平臺上實現(xiàn)確定傳輸?shù)哪芰?,從而可以構建基于Windows平臺的分布式仿真系統(tǒng),以滿足不同客戶對于實時響應的不同需要。
1 RTX-基于Windows的實時擴展子系統(tǒng)
1.1 RTX實時擴展子系統(tǒng)簡介
RTX是Ardence公司研發(fā)的基于Windows的實時擴展子系統(tǒng)。是目前Windows平臺最優(yōu)秀的純軟件實時解決方案。RTX通過在Windows硬件抽象層增加實時擴展實現(xiàn)基于優(yōu)先級的搶占式實時任務管理和調(diào)度。使得整個Windows任務體系變成了RTX子系統(tǒng)下優(yōu)先級最低的任務。
1.2 RTX實時擴展子系統(tǒng)架構
圖1為RTX實時擴展子系統(tǒng)架構。
RTX被設計為Windows上的一個實時擴展子系統(tǒng),其本身并不是一個獨立的操作系統(tǒng)。它提供了對IRQ、I/O和內(nèi)存的精確控制,以確保實時任務執(zhí)行時具有100%的可靠性。由于其操作均在Ring 0級實現(xiàn),可以在保證性能的基礎上實現(xiàn)最少的配置操作。同時RTX還支持30 kHz的持續(xù)中斷觸發(fā)速度,最大IST延遲<16 μs。
RTX與Windows操作系統(tǒng)無縫兼容,可以利用Windows系統(tǒng)的各種優(yōu)勢。包括大量標準的API函數(shù)、高效的內(nèi)存管理機制以及各種Windows下的通用資源。作為一個完全的Windows擴展系統(tǒng),RTX并不對Windows系統(tǒng)架構作任何封裝和修改。
RTX子系統(tǒng)(RTSS,Real-time Sub-system)擁有精確高速的任務調(diào)度器,同時支持基于優(yōu)先級和時間片輪詢兩種調(diào)度算法。RTX最高支持1 000個獨立的進程,每個進程下可以運行的線程數(shù)不受限制。128個優(yōu)先級可以滿足幾乎所有用戶的編程需要,RTX調(diào)度器可以確保線程切換時間保持在500 ns~2μs之間。通過應用高速的IPC信息和同步機制,RTX可以實現(xiàn)和Windows之間的數(shù)據(jù)通訊。選用適合的時鐘,RTX的時鐘分辨率可達到100 ns,并且不會產(chǎn)生任何漂移現(xiàn)象。
2 構建分布式實時仿真系統(tǒng)
2.1 反射內(nèi)存網(wǎng)工作原理
反射內(nèi)存網(wǎng)主要由反射內(nèi)存卡通過光纖等傳輸介質連接而成。反射內(nèi)存卡是一組雙口內(nèi)存板。每個反射內(nèi)存卡都占有一段內(nèi)存地址,網(wǎng)上任何計算機向本地反射內(nèi)存卡寫數(shù)據(jù)時,該數(shù)據(jù)和相應的內(nèi)存地址將被反射到網(wǎng)上所有其他反射內(nèi)存卡,并存儲在相同的位置。計算機將數(shù)據(jù)寫入其本地反射內(nèi)存卡后,板上的高速邏輯會自動將此數(shù)據(jù)連同地址送到網(wǎng)上的其他反射內(nèi)存卡板上,數(shù)據(jù)傳遞完全由硬件驅動,不需要CPU干預,結果網(wǎng)上的下一結點在400 ns內(nèi)就會在相同地址處有相同數(shù)據(jù)。
當數(shù)據(jù)存儲到反射內(nèi)存卡時,反射內(nèi)存卡可看成是由網(wǎng)上所有結點共享的單元內(nèi)存,不存在訪問限制與仲裁,每個結點就像訪問本地內(nèi)存一樣,實現(xiàn)了結點間的數(shù)據(jù)共享。由于CPU對反射內(nèi)存操作如同讀寫標準的RAM,且反射內(nèi)存的數(shù)據(jù)更新是通過硬件實現(xiàn)的,因此其網(wǎng)絡延遲極小。
2.2 使用RTX技術改造反射內(nèi)存網(wǎng)
反射內(nèi)存卡有兩種工作方式:中斷或查詢。在基于Windows操作系統(tǒng)的分布式實時仿真中,通常使用查詢方式。
由于Windows操作系統(tǒng)并不具有確定性的響應機制,不能保證立刻響應外部中斷,如果Windows系統(tǒng)繁忙,對中斷響應的處理速度會顯著變慢,從而大大增加處理中斷的延遲時間。從仿真的穩(wěn)定性考慮,不宜采用中斷方式。因此,傳統(tǒng)的在Windows環(huán)境下使用反射內(nèi)存卡時,普遍采用基于定時器的查詢方式。然而這種不間斷的查詢方式,占用了大量的系統(tǒng)資源,Windows幾乎無法進行其他操作,用戶界面響應很慢,
從而影響了仿真用戶的使用。同時,這種方法由于放棄了響應速度較快的中斷處理方式,犧牲了反射內(nèi)存網(wǎng)硬件本身的良好性能,使其在Windows操作系統(tǒng)中,不能達到比較理想的數(shù)據(jù)傳輸指標。而RTX由于其對外設和中斷處理的確定性,可以在保證Windows操作系統(tǒng)正常響應的基礎上,實時地處理反射內(nèi)存卡的中斷響應。因此,采用基于RTX的反射內(nèi)存網(wǎng)方案可以達到構建基于Windows的分布式實時仿真系統(tǒng)的目的。
2.3 拓撲結構
基于RTX的反射內(nèi)存網(wǎng)有兩種拓撲結構,分別為環(huán)形結構和星形結構,如圖2,圖3所示。
2.4 與傳統(tǒng)Windows下反射內(nèi)存網(wǎng)的性能比較
表1是在Windows環(huán)境和RTX環(huán)境下的測試結果。
以上結果是在PentiumⅣ2.8 GHz雙核CPU的Pc上,基于VMIC-5565反射內(nèi)存卡,RTX獨占一個CPU核,數(shù)據(jù)發(fā)送出去,再收回來采用中斷傳輸方式的測試結果,即以上數(shù)據(jù)除以2為單次數(shù)據(jù)發(fā)送的結果。
圖4~圖8分別是在Windows環(huán)境和RTX環(huán)境下,通過實時網(wǎng)傳輸數(shù)據(jù)時所需時間的圖表。
3 構建分布式實時仿真系統(tǒng)
3.1 RTX下的RT-TCP/IP簡介
通過RTSS子系統(tǒng)(Real-time Subsystem)對底層網(wǎng)卡的實時支持,RTX在RTSS子系統(tǒng)中建立獨立的TCP/IP協(xié)議棧。為實現(xiàn)更好的實時性能,RTX對TCP/IP協(xié)議棧作了部分修改,同時對數(shù)據(jù)包大小進行了限制,使其更加適合于實時數(shù)據(jù)傳輸。RTX將TCP/P協(xié)議的實現(xiàn)和硬件的操作集成在網(wǎng)卡的實時驅動中,用戶無需加載額外的鏈接庫。通過底層的封裝機制,程序員在編寫網(wǎng)絡應用程序時可直接使用Windows Socket 1.1和2.0。
3.2 基于以太網(wǎng)的令牌環(huán)網(wǎng)原理
令牌環(huán)(Token Ring)的拓撲結構是一個環(huán)的形狀。環(huán)上有多個節(jié)點逐次相連,相鄰節(jié)點之間是點對點的鏈路。令牌環(huán)網(wǎng)與普通以太網(wǎng)的不同體現(xiàn)在兩個方面:(1)它是一種順次向下一站傳送的LAN,與廣播方式的以太網(wǎng)不同。(2)令牌環(huán)網(wǎng)可以在負載較大的情況下實現(xiàn)確定性的響應時間。
令牌環(huán)網(wǎng)下面的各個節(jié)點,按照標準方式連接在以太網(wǎng)下,通過軟件實現(xiàn)的令牌環(huán)將其組成拓撲結構為令牌環(huán)網(wǎng)的LAN。其中令牌環(huán)是一種特殊標示的數(shù)據(jù)包,只有當節(jié)點接收到這種數(shù)據(jù)包時才能發(fā)送數(shù)據(jù)。
令牌環(huán)網(wǎng)不同于標準以太網(wǎng),其數(shù)據(jù)傳輸具有確定性。在以太網(wǎng)上實現(xiàn)令牌環(huán)網(wǎng),可以在一定程度加大系統(tǒng)平均響應時間的基礎上,減少系統(tǒng)的最壞響應延遲,為基于網(wǎng)絡的數(shù)據(jù)傳輸提供確定性保證。
標準以太網(wǎng)的數(shù)據(jù)傳輸之所以不確定的原因在于網(wǎng)絡本身并不能控制當前發(fā)送數(shù)據(jù)包的節(jié)點數(shù)量,當大量節(jié)點要求發(fā)送數(shù)據(jù)時,網(wǎng)絡系統(tǒng)會出現(xiàn)擁堵,網(wǎng)絡仲裁會延遲其中某些節(jié)點的數(shù)據(jù)包發(fā)送行為,從而造成不確定的數(shù)據(jù)延遲。
采用令牌環(huán)的以太網(wǎng)架構,由于在軟件層實現(xiàn)了令牌環(huán)的架構,使得在任一瞬間最多只有一個節(jié)點在發(fā)送數(shù)據(jù)包,人為避免了數(shù)據(jù)沖突的檢測重發(fā)。從而以增大平均數(shù)據(jù)響應時間為代價降低了系統(tǒng)在最壞情況下的數(shù)據(jù)響應時間。
3.3 基于RTX的令牌環(huán)網(wǎng)的測試
測試環(huán)境使用百兆以太網(wǎng)卡進行測試,在RTX實時網(wǎng)絡環(huán)境下進行令牌網(wǎng)循環(huán)測試,實驗采用3臺主機,IP地址分別為192.168.1.51(A),192.168.1.52(B),192.168.1.53(C),測試時各采集10 000個數(shù)據(jù)進行采樣分析,測試結果如表2所示,單位s:設IP地址為192.168.1.51的主機為A主機,地址為192.168.1.52的主機為B主機,地址為192.168.1.53的主機為C主機。
將采集到的數(shù)據(jù)在Matlab中制作成散點圖的形式,如圖11所示。
4 結束語
由上述反射內(nèi)存網(wǎng)及令牌環(huán)網(wǎng)的統(tǒng)計數(shù)據(jù)和圖表可以看出,使用基于RTX的反射內(nèi)存網(wǎng)和令牌環(huán)網(wǎng)絡進行實時數(shù)據(jù)的傳輸,可以使網(wǎng)絡數(shù)據(jù)傳輸?shù)姆€(wěn)定性和確定性,得到進一步提高,從而滿足在Windows系統(tǒng)上進行實時仿真的需要。在仿真周期為毫秒級,傳輸數(shù)據(jù)量不大的情況下,可以使用基于以太網(wǎng)的令牌環(huán)網(wǎng);在仿真周期接近1 ms,甚至為μs級時,并且傳輸數(shù)據(jù)量較大的情況下,可以使用基于RTX的反射內(nèi)存方案。兩種方案在滿足分布式仿真系統(tǒng)實時性要求的基礎上,為具有不同要求的分布式仿真提供了靈活可靠的選擇。