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