專利名稱:一種基于共享內(nèi)存的高性能仿真系統(tǒng)實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種高性能仿真系統(tǒng)的實(shí)現(xiàn)方法。更具體地,本發(fā)明涉及適應(yīng)于具有共享內(nèi)存特點(diǎn)計(jì)算環(huán)境的高性能仿真系統(tǒng)的實(shí)現(xiàn)方法。
背景技術(shù):
目前,電力控制仿真系統(tǒng)、飛行器空氣動(dòng)力學(xué)模擬實(shí)驗(yàn)仿真系統(tǒng)等半實(shí)物仿真系統(tǒng)對實(shí)時(shí)性要求比較高,甚至達(dá)到了微秒級(jí)。這些半實(shí)物仿真系統(tǒng)一般包含多個(gè)子系統(tǒng)以協(xié)作完成仿真任務(wù),而現(xiàn)有的協(xié)同軟件HLA/RTI軟件主要基于UDP或TCP通信協(xié)議運(yùn)行,難以滿足高性能需求。HLA是High Level Architecture,分布式仿真高層體系結(jié)構(gòu)的簡稱,HLA的基本思想就是使用面向?qū)ο蟮姆椒?,設(shè)計(jì)、開發(fā)及實(shí)現(xiàn)系統(tǒng)不同層次和粒度的對象模型,來獲得仿真部件和仿真系統(tǒng)高層次上的互操作性與可重用性。RTI (Run TimeInfrastructure)是運(yùn)行支撐環(huán)境,是HLA接口規(guī)范的具體實(shí)現(xiàn),是HLA的核心部件。RTI包括本地RTI模塊(Local RTI Component,以下簡稱LRC),它為本地聯(lián)邦成員提供一個(gè)服務(wù)調(diào)用接口,這個(gè)接口叫做RTI大使(RTI Ambassador)并保持一個(gè)聯(lián)邦成員的回調(diào)接口,稱之為聯(lián)邦成員大使(Federation Ambassador), RTI還包括核心RTI模塊(Core RTIComponent,以下簡稱CRC),負(fù)責(zé)全局性的聯(lián)邦管理和時(shí)間管理。現(xiàn)有技術(shù)中已出現(xiàn)了一些基于共享內(nèi)存方式的RTI實(shí)現(xiàn),但結(jié)合聯(lián)邦管理服務(wù)、聲明管理服務(wù)、對象管理服務(wù)、時(shí)間管理服務(wù)、所有權(quán)管理服務(wù)、數(shù)據(jù)交互管理服務(wù)六大類管理服務(wù)深入挖掘共享內(nèi)存變化帶來的優(yōu)勢,同時(shí)充分利用多核計(jì)算能力的仿真系統(tǒng)實(shí)現(xiàn)方法較少,況且近年來多核技術(shù)飛速發(fā)展,一個(gè)CPU上可以有幾個(gè)甚至幾十個(gè)計(jì)算核,市場上涌現(xiàn)出大量多核計(jì)算機(jī),特別是基于多核技術(shù)的高端服務(wù)器。針對上述問題,結(jié)合基于共享內(nèi)存的多核高效能計(jì)算環(huán)境的特點(diǎn),迫切需要一種基于共享內(nèi)存的高性能仿真系統(tǒng)實(shí)現(xiàn)方法,以促進(jìn)仿真系統(tǒng)實(shí)時(shí)性的提高。
發(fā)明內(nèi)容
本發(fā)明目的在于提供本發(fā)明的目的在于提供一種基于共享內(nèi)存的高性能仿真系統(tǒng)實(shí)現(xiàn)方法,解決現(xiàn)有協(xié)同仿真系統(tǒng)的實(shí)時(shí)性瓶頸問題。該方法包括以下步驟:構(gòu)建運(yùn)行支撐環(huán)境,該支撐運(yùn)行環(huán)境包括CRC模塊、LRC模塊和共享內(nèi)存管理接口模塊;所述LRC模塊用于基于共享內(nèi)存通信方式自主計(jì)算本聯(lián)邦成員的時(shí)戳下限、更新仿真時(shí)間以及分發(fā)與管理數(shù)據(jù);所述共享內(nèi)存管理接口模塊用于管理共享內(nèi)存區(qū)并維護(hù)共享內(nèi)存地址的一致性;基于實(shí)時(shí)操作系統(tǒng)和CPU獨(dú)占策略初始化所述仿真系統(tǒng);基于所述共享內(nèi)存管理接口模塊開辟所述共享內(nèi)存區(qū);通過所述共享內(nèi)存區(qū)進(jìn)行時(shí)間維護(hù);通過所述共享內(nèi)存區(qū)進(jìn)行數(shù)據(jù)交互。
進(jìn)一步地,所述基于實(shí)時(shí)操作系統(tǒng)和CPU獨(dú)占策略初始化所述仿真系統(tǒng)包括以下步驟:基于實(shí)時(shí)操作系統(tǒng)的中斷屏蔽技術(shù),將多核SMP服務(wù)器上的任一 CPU處理核指定為不響應(yīng)所有的中斷;指定聯(lián)邦成員或所述CRC模塊進(jìn)程任務(wù)獨(dú)占該CPU處理核;通過所述LRC模塊設(shè)置其聯(lián)邦成員的參數(shù),該參數(shù)包括時(shí)間推進(jìn)類型、前瞻量、公布訂購對象類、公布訂購交互類。進(jìn)一步地,所述基于所述共享內(nèi)存管理接口模塊開辟所述共享內(nèi)存區(qū)包括以下步驟:創(chuàng)建請求消息共享內(nèi)存隊(duì)列,該請求消息共享內(nèi)存隊(duì)列用于存儲(chǔ)RTI大使向所述CRC模塊發(fā)送的請求消息;創(chuàng)建接收順序消息共享內(nèi)存隊(duì)列,該接收順序消息共享內(nèi)存隊(duì)列用于存儲(chǔ)所述CRC模塊向RTI大使發(fā)送的不帶時(shí)戳消息;創(chuàng)建時(shí)戳順序消息共享內(nèi)存隊(duì)列,該時(shí)戳順序消息共享內(nèi)存隊(duì)列用于存儲(chǔ)所述CRC模塊向RTI大使發(fā)送的帶時(shí)戳消息隊(duì)列;創(chuàng)建聯(lián)邦信息共享內(nèi)存隊(duì)列,該聯(lián)邦成員信息共享內(nèi)存隊(duì)列用于存儲(chǔ)聯(lián)邦信息和時(shí)間推進(jìn)類型; 創(chuàng)建時(shí)間推進(jìn)請求信息共享內(nèi)存隊(duì)列,該時(shí)間推進(jìn)請求信息共享內(nèi)存隊(duì)列用于存儲(chǔ)請求推進(jìn)時(shí)間量;創(chuàng)建數(shù)據(jù)交互共享內(nèi)存區(qū),該數(shù)據(jù)交互共享內(nèi)存區(qū)用于存儲(chǔ)聯(lián)邦成員對象實(shí)例屬性或交互實(shí)例參數(shù)的具體數(shù)據(jù)內(nèi)容。進(jìn)一步地,所述通過所述共享內(nèi)存區(qū)進(jìn)行時(shí)間維護(hù)進(jìn)一步包括以下步驟:當(dāng)?shù)趇個(gè)聯(lián)邦成員加入或退出聯(lián)邦時(shí),所述CRC模塊向其他聯(lián)邦成員通知該第i個(gè)聯(lián)邦成員的時(shí)間推進(jìn)類型;當(dāng)所述第i個(gè)聯(lián)邦成員的時(shí)間推進(jìn)類型為時(shí)間控制且受限型時(shí),該所述第i個(gè)聯(lián)邦成員通過所述時(shí)間推進(jìn)請求信息共享內(nèi)存隊(duì)列分別讀取第j個(gè)聯(lián)邦成員的請求推進(jìn)時(shí)間量 Tj+Lookaheadj ;所述第i個(gè)聯(lián)邦成員計(jì)算自己的時(shí)戳下限LBTSi ;所述第i個(gè)聯(lián)邦成員處理它在所述接收順序消息共享內(nèi)存隊(duì)列中的所有所述不帶時(shí)戳消息,以及處理它在所述時(shí)戳順序消息共享內(nèi)存隊(duì)列中的時(shí)戳小于等于時(shí)戳下限LBTSi的所述帶時(shí)戳消息;判斷所述第i個(gè)聯(lián)邦成員當(dāng)前的請求推進(jìn)時(shí)間量TjLookaheadi是否小于等于所述時(shí)戳下限LBTSi,如果是,則將所述第i個(gè)聯(lián)邦成員的仿真時(shí)間更新到Ti+Lookaheadi,該第i個(gè)聯(lián)邦成員切換為待接收模式;如果否,則返回所述第i個(gè)聯(lián)邦成員計(jì)算自己的時(shí)戳下限 LBTSi ;其中,i=l,2,......n, j = 1,2,......η, η為聯(lián)邦成員的個(gè)數(shù),并且第j個(gè)聯(lián)邦成
員是影響所述第i個(gè)聯(lián)邦成員的調(diào)節(jié)型聯(lián)邦成員。進(jìn)一步地,所述通過所述共享內(nèi)存區(qū)進(jìn)行數(shù)據(jù)交互進(jìn)一步包括以下步驟:將要訂購的所述對象實(shí)例屬性或交互實(shí)例參數(shù)分為具體數(shù)據(jù)內(nèi)容和其在所述數(shù)據(jù)交互共享內(nèi)存區(qū)內(nèi)的指針;公布成員將所述具體數(shù)據(jù)內(nèi)容寫入所述數(shù)據(jù)交互共享內(nèi)存區(qū),并將所述指針與該具體數(shù)據(jù)內(nèi)容的長度通過所述請求消息共享內(nèi)存隊(duì)列傳給所述CRC模塊;所述CRC模塊將所述指針和所述長度傳給訂購成員;所述訂購成員根據(jù)所述指針和所述長度讀取所述數(shù)據(jù)交互共享內(nèi)存區(qū)中的所述具體數(shù)據(jù)內(nèi)容。本發(fā)明能夠?qū)崿F(xiàn)仿真系統(tǒng)的高效快速運(yùn)行,其突出特點(diǎn)是仿真系統(tǒng)每個(gè)周期推進(jìn)時(shí)間能夠達(dá)到微秒量級(jí),該發(fā)明適用于構(gòu)建高性能仿真系統(tǒng),特別是有半實(shí)物參與的軟實(shí)時(shí)仿真系統(tǒng),本發(fā)明技術(shù)方案將有良好的產(chǎn)業(yè)化前景。
下面將參照附圖并結(jié)合實(shí)施例對本發(fā)明進(jìn)行具體說明。圖1本發(fā)明方法基本流程圖。
具體實(shí)施例方式下面參照附圖并借助本發(fā)明的實(shí)施例,對本發(fā)明的技術(shù)方案做詳細(xì)描述。如圖1所示,一種基于共享內(nèi)存的高性能仿真系統(tǒng)實(shí)現(xiàn)方法的具體步驟為步驟S1、構(gòu)建運(yùn)行支撐環(huán)境,該支撐運(yùn)行環(huán)境包括CRC模塊、LRC模塊和共享內(nèi)存管理接口模塊。所述CRC模塊負(fù)責(zé)聯(lián)邦管理、對象管理中的全局名及全局標(biāo)識(shí)管理、所有權(quán)管理以及時(shí)間管理中的仿真聯(lián)邦成員時(shí)間類型設(shè)置工作。所述LRC模塊,除負(fù)責(zé)RO消息隊(duì)列處理、TSO消息隊(duì)列排序、消息處理、數(shù)據(jù)更新交互外,還用于基于共享內(nèi)存通信方式自主計(jì)算本聯(lián)邦成員的時(shí)戳下限(Lower Bound Time Stamp,以下簡稱LBTS)、更新仿真時(shí)間以及分發(fā)與管理數(shù)據(jù)。共享內(nèi)存管理接口模塊,對外提供對共享內(nèi)存區(qū)塊的統(tǒng)一分配和管理,并維護(hù)共享內(nèi)存地址的一致性,這里地址一致性是指多個(gè)內(nèi)存區(qū)塊之間訪問時(shí)會(huì)映射到統(tǒng)一的地址空間內(nèi)本發(fā)明的所述支撐環(huán)境統(tǒng)一使用所述共享內(nèi)存管理接口模塊創(chuàng)建共享內(nèi)存區(qū)。RO (Receive Order)是指消息以接收順序傳遞,RO消息也可稱為不帶時(shí)戳消息;TSO(Time Stamp Order)是指消息以時(shí)戳順序傳遞,TSO消息也可稱為帶時(shí)戳消息。所述CRC模塊主要負(fù)責(zé)聯(lián)邦管理、對象管理中的全局名及全局標(biāo)識(shí)管理、所有權(quán)管理以及時(shí)間管理中的仿真聯(lián)邦成員時(shí)間類型設(shè)置等工作。在本發(fā)明中,現(xiàn)有CRC的功能被部分地分解到LRC中進(jìn)行并行處理了,這樣可以降低CRC全局工作的瓶頸。步驟S2、基于實(shí)時(shí)操作系統(tǒng)和CPU獨(dú)占策略初始化所述仿真系統(tǒng)。為了保證高性能仿真中納秒級(jí)讀取共享內(nèi)存的通信速度要求,基于實(shí)時(shí)操作系統(tǒng)的中斷屏蔽技術(shù),將多核SMP (即Symmetrical Mult1-Processing,對稱多處理的簡稱)服務(wù)器上的任一 CPU處理核指定為不響應(yīng)所有的中斷,同時(shí)指定聯(lián)邦成員或所述CRC模塊進(jìn)程任務(wù)獨(dú)占該CPU處理核。各聯(lián)邦成員被分配執(zhí)行后,通過所述LRC模塊完成了其參數(shù)的初始化設(shè)置,這些設(shè)置包括〈FederationName,F(xiàn)ederateNamejFomFilejFomFilePathjTimeAdvTypejLookAhead,TimeStepj PubSubObjClsj PubSubIntrClsj〈InstanceName,0b jClsName〉〉,這些信息組成了仿真成員初始化的所有要素,其中元素的語義分別為聯(lián)邦仿真系統(tǒng)的名稱,仿真成員名稱,Fom (Federation object model,即聯(lián)邦對象模型)文件,Fom文件路徑,時(shí)間推進(jìn)類型,前瞻量,推進(jìn)步長,公布訂購對象類,公布訂購交互類,< 注冊實(shí)例名稱,對象類名稱>。上述初始化信息密切關(guān)系到共享內(nèi)存區(qū)的開辟,特別是其中的時(shí)間推進(jìn)類型、前瞻量、公布訂購對象類和/或公布訂購交互類等。步驟S3、基于所述共享內(nèi)存管理接口模塊開辟共享內(nèi)存區(qū)。也就是通過共享內(nèi)存管理接口模塊創(chuàng)建共享內(nèi)存區(qū)的各個(gè)共享內(nèi)存區(qū)塊,建立所述CRC模塊、所述LRC模塊以及聯(lián)邦成員之間的高速通信鏈路,進(jìn)一步包括:(I)創(chuàng)建請求消息共享內(nèi)存隊(duì)列,該請求消息共享內(nèi)存隊(duì)列用于存儲(chǔ)RTI大使向所述CRC模塊發(fā)送的請求消息,所用共享內(nèi)存名為“RTI_SMB_i”,其中,i表示第i個(gè)聯(lián)邦成員,i=l,2,..., η-1, η, η為聯(lián)邦成員的數(shù)量;(2)創(chuàng)建接收順序消息共享內(nèi)存隊(duì)列,該接收順序消息共享內(nèi)存隊(duì)列用于存儲(chǔ)CRC模塊向RTI大使發(fā)送的不帶時(shí)戳消息,所用共享內(nèi)存名為“R0_SMB_i ”,其中i=l,2,…,η-1,η ;(3)創(chuàng)建時(shí)戳順序消息共享內(nèi)存隊(duì)列,該時(shí)戳順序消息共享內(nèi)存隊(duì)列用于存儲(chǔ)CRC模塊向RTI大使發(fā)送的帶時(shí)戳消息隊(duì)列,所用共享內(nèi)存名為“TS0_SMB_i”,其中i=l,2,…,η-1, η ;(4)創(chuàng)建聯(lián)邦信息共享內(nèi)存隊(duì)列,該聯(lián)邦成員信息共享內(nèi)存隊(duì)列用于存儲(chǔ)聯(lián)邦信息和時(shí)間推進(jìn)類型,所用共享內(nèi)存名為“Federati0n_SMB”。所述CRC模塊周知共享內(nèi)存隊(duì)列Federation_SMB,所述CRC模塊``通過該共享內(nèi)存隊(duì)列Federation_SMB進(jìn)行聯(lián)邦管理服務(wù)和時(shí)間管理服務(wù)中的仿真聯(lián)邦成員的時(shí)間推進(jìn)類型設(shè)置信息管理。( 5)創(chuàng)建時(shí)間推進(jìn)請求信息共享內(nèi)存隊(duì)列,該時(shí)間推進(jìn)請求信息共享內(nèi)存隊(duì)列用于存儲(chǔ)請求推進(jìn)時(shí)間量,所用共享內(nèi)存名為“Federati0n_TL_SMB”,所述LRC模塊通過讀取該時(shí)間推進(jìn)請求信息共享內(nèi)存隊(duì)列中的請求推進(jìn)時(shí)間量,進(jìn)行時(shí)間管理服務(wù)中并行計(jì)算聯(lián)邦成員的LBTS。(6)創(chuàng)建數(shù)據(jù)交互共享內(nèi)存區(qū),該數(shù)據(jù)交互共享內(nèi)存區(qū)用于存儲(chǔ)聯(lián)邦成員對象實(shí)例屬性或交互實(shí)例參數(shù)的具體數(shù)據(jù)內(nèi)容,所用共享內(nèi)存名為“UpdatingData_SMB_i”,所述CRC模塊和所述LRC模塊利用該數(shù)據(jù)交互共享內(nèi)存區(qū)進(jìn)行對象管理中聯(lián)邦成員對象實(shí)例屬性或交互實(shí)例參數(shù)的數(shù)據(jù)交互,并且進(jìn)行數(shù)據(jù)分發(fā)管理中基于共享內(nèi)存的訂購成員并行數(shù)據(jù)過濾方法。步驟S4、通過所述共享內(nèi)存區(qū)進(jìn)行時(shí)間維護(hù);以及步驟S5、通過所述共享內(nèi)存區(qū)進(jìn)行數(shù)據(jù)交互。仿真系統(tǒng)的高效運(yùn)行需要時(shí)間維護(hù)和數(shù)據(jù)交互兩方面處理的支持。步驟S4中,基于共享內(nèi)存的高效時(shí)間管理算法中,當(dāng)?shù)趇個(gè)聯(lián)邦成員加入或退出聯(lián)邦時(shí),該第i個(gè)聯(lián)邦成員的RTI大使向所述CRC模塊發(fā)送請求消息,所述CRC模塊將該第i個(gè)聯(lián)邦成員的時(shí)間推進(jìn)類型存入所述聯(lián)邦信息共享內(nèi)存隊(duì)列Federation_SMB中,并通知其它成員該第i個(gè)聯(lián)邦成員的時(shí)間推進(jìn)類型是調(diào)節(jié)型的還是受控型的。在本發(fā)明中,聯(lián)邦成員間的時(shí)間信息的分發(fā)不通過CRC模塊,而是各成員通過對所述共孚內(nèi)存區(qū)的聞速讀與完成的。具體地,當(dāng)所述第i個(gè)聯(lián)邦成員的時(shí)間推進(jìn)類型為時(shí)間控制且受限型時(shí),該第i個(gè)聯(lián)邦成員從所有影響它的第j個(gè)聯(lián)邦成員的所述時(shí)間推進(jìn)請求信息共享內(nèi)存隊(duì)列Federation_TL_SMB中分別讀取推進(jìn)時(shí)間量(Tj+Lookaheadj ),其中,所述第j個(gè)聯(lián)邦成員
是影響所述第i個(gè)聯(lián)邦成員的調(diào)節(jié)型聯(lián)邦成員,j = 1,2,......η且j古i。時(shí)間控制型聯(lián)
邦成員是指該成員將影響其他成員;受限型聯(lián)邦成員是指該成員受到其他成員的影響;時(shí)間控制和受限型的聯(lián)邦成員既影響部分聯(lián)邦成員又受部分聯(lián)邦成員的影響。所述第i個(gè)聯(lián)邦成員根據(jù)各個(gè)所述請求推進(jìn)時(shí)間量Tj+Lookaheadj計(jì)算自己的LBTSi,也就是LBTSi=Min(Tj+Lookaheadj);然后該成員將處理自己的所述接收順序消息共享內(nèi)存隊(duì)列R0_SMB_i中的所有不帶時(shí)戳消息,以及所述時(shí)戳順序消息共享內(nèi)存隊(duì)列TS0_SMB_i中所有時(shí)戳小于等于LBTSi的帶時(shí)戳消息。判斷所述第i個(gè)聯(lián)邦成員當(dāng)前的請求推進(jìn)時(shí)間量TjLookaheadi是否小于等于所述時(shí)戳下限LBTSi,如果其當(dāng)前請求推進(jìn)時(shí)間量Ti+Lookaheadi小于等于LBTSi,則更新該第i個(gè)聯(lián)邦成員的仿真時(shí)間到(Ti +Lookaheadi ),所述CRC模塊調(diào)用聯(lián)邦大使的時(shí)間推進(jìn)允許回調(diào)函數(shù),該第i個(gè)聯(lián)邦成員退出tick函數(shù)切換為待接收模式;如果該第i個(gè)聯(lián)邦成員的當(dāng)前請求推進(jìn)時(shí)間量Ti+Lookaheadi大于LBTSi,則返回所述第i個(gè)聯(lián)邦成員計(jì)算自己的時(shí)戳下限LBTSi的步驟,重復(fù)執(zhí)行上述過程。步驟S5中,為了有效利用共享內(nèi)存通信方式,本發(fā)明將訂購成員要訂購的對象實(shí)例屬性或者交互實(shí)例參數(shù)分為兩部分:具體數(shù)據(jù)內(nèi)容及其在共享內(nèi)存區(qū)的指針,所述具體數(shù)據(jù)內(nèi)容是對象實(shí)例屬性的值或交互實(shí)例參數(shù)的值。公布成員將所述具體數(shù)據(jù)內(nèi)容寫入所述數(shù)據(jù)交互共享內(nèi)存區(qū)UpdatingData_SMB_i,并將該具體數(shù)據(jù)內(nèi)容在所述數(shù)據(jù)交互共享內(nèi)存區(qū)UpdatingData_SMB_i的指針和長度進(jìn)行傳遞。具體地,公布成員將對象實(shí)例屬性的值或交互實(shí)例參數(shù)的值寫入所述數(shù)據(jù)交互共享內(nèi)存區(qū)UpdatingData_SMB_i,并將所述指針與該具體數(shù)據(jù)內(nèi)容的長度通過所述請求消息共享內(nèi)存隊(duì)列RTI_SMB_i傳給所述CRC模塊。本發(fā)明具體實(shí)施方式
是通過調(diào)用所述LRC模塊的屬性值更新函數(shù)或交互實(shí)例發(fā)送函數(shù)將所述指針和所述長度傳給所述CRC模塊的。接著所述CRC模塊將所述指針和所述長度發(fā)送給訂購該對象實(shí)例屬性或者交互實(shí)例參數(shù)的訂購成員,本發(fā)明具體實(shí)施方式
是所述CRC模塊通過反射屬性值回調(diào)函數(shù)或接收交互實(shí)例回調(diào)函數(shù)將所述指針和所述長度發(fā)送給所述訂購成員。然后所述訂購成員根據(jù)該指針和該長度讀取所述數(shù)據(jù)交互共享內(nèi)存區(qū)UpdatingData_SMB_i中的所述具體數(shù)據(jù)內(nèi)容從而更新對象實(shí)例屬性值或交互實(shí)例參數(shù)值。應(yīng)當(dāng)理解,以上借助優(yōu)選實(shí)施例對本發(fā)明的技術(shù)方案進(jìn)行的詳細(xì)說明是示意性的而非限制性的。本領(lǐng)域的普通技術(shù)人員在閱讀本發(fā)明說明書的基礎(chǔ)上可以對各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。本發(fā)明的保護(hù)范圍僅由隨附權(quán)利要求書限定。
權(quán)利要求
1.一種基于共享內(nèi)存的高性能仿真系統(tǒng)實(shí)現(xiàn)方法,其特征在于,包括以下步驟: 構(gòu)建運(yùn)行支撐環(huán)境,該支撐運(yùn)行環(huán)境包括CRC模塊、LRC模塊和共享內(nèi)存管理接口模塊;所述LRC模塊用于基于共享內(nèi)存通信方式自主計(jì)算本聯(lián)邦成員的時(shí)戳下限、更新仿真時(shí)間以及分發(fā)與管理數(shù)據(jù);所述共享內(nèi)存管理接口模塊用于管理共享內(nèi)存區(qū)并維護(hù)共享內(nèi)存地址的一致性; 基于實(shí)時(shí)操作系統(tǒng)和CPU獨(dú)占策略初始化所述仿真系統(tǒng); 基于所述共享內(nèi)存管理接口模塊開辟所述共享內(nèi)存區(qū); 通過所述共享內(nèi)存區(qū)進(jìn)行時(shí)間維護(hù); 通過所述共享內(nèi)存區(qū)進(jìn)行數(shù)據(jù)交互。
2.根據(jù)權(quán)利要求1所述的基于共享內(nèi)存的高性能仿真系統(tǒng)實(shí)現(xiàn)方法,其特征在于,所述基于實(shí)時(shí)操作系統(tǒng)和CPU獨(dú)占策略初始化所述仿真系統(tǒng)包括以下步驟: 基于實(shí)時(shí)操作系統(tǒng)的中斷屏蔽技術(shù),將多核SMP服務(wù)器上的任一 CPU處理核指定為不響應(yīng)所有的中斷; 指定聯(lián)邦成員或所述CRC模塊進(jìn)程任務(wù)獨(dú)占該CPU處理核; 通過所述LRC模塊設(shè)置其聯(lián)邦成員的參數(shù),該參數(shù)包括時(shí)間推進(jìn)類型、前瞻量、公布訂購對象類、公布訂購交互類。
3.根據(jù)權(quán)利要求2所述的基于共享內(nèi)存的高性能仿真系統(tǒng)實(shí)現(xiàn)方法,其特征在于,所述基于所述共享內(nèi)存管理接口模塊開辟所述共享內(nèi)存區(qū)包括以下步驟: 創(chuàng)建請求消息共享內(nèi)存 隊(duì)列,該請求消息共享內(nèi)存隊(duì)列用于存儲(chǔ)RTI大使向所述CRC模塊發(fā)送的請求消息; 創(chuàng)建接收順序消息共享內(nèi)存隊(duì)列,該接收順序消息共享內(nèi)存隊(duì)列用于存儲(chǔ)所述CRC模塊向RTI大使發(fā)送的不帶時(shí)戳消息; 創(chuàng)建時(shí)戳順序消息共享內(nèi)存隊(duì)列,該時(shí)戳順序消息共享內(nèi)存隊(duì)列用于存儲(chǔ)所述CRC模塊向RTI大使發(fā)送的帶時(shí)戳消息隊(duì)列; 創(chuàng)建聯(lián)邦信息共享內(nèi)存隊(duì)列,該聯(lián)邦成員信息共享內(nèi)存隊(duì)列用于存儲(chǔ)聯(lián)邦信息和時(shí)間推進(jìn)類型; 創(chuàng)建時(shí)間推進(jìn)請求信息共享內(nèi)存隊(duì)列,該時(shí)間推進(jìn)請求信息共享內(nèi)存隊(duì)列用于存儲(chǔ)請求推進(jìn)時(shí)間量; 創(chuàng)建數(shù)據(jù)交互共享內(nèi)存區(qū),該數(shù)據(jù)交互共享內(nèi)存區(qū)用于存儲(chǔ)聯(lián)邦成員對象實(shí)例屬性或交互實(shí)例參數(shù)的具體數(shù)據(jù)內(nèi)容。
4.根據(jù)權(quán)利要求3所述的基于共享內(nèi)存的高性能仿真系統(tǒng)實(shí)現(xiàn)方法,其特征在于,所述通過所述共享內(nèi)存區(qū)進(jìn)行時(shí)間維護(hù)進(jìn)一步包括以下步驟: 當(dāng)?shù)趇個(gè)聯(lián)邦成員加入或退出聯(lián)邦時(shí),所述CRC模塊向其他聯(lián)邦成員通知該第i個(gè)聯(lián)邦成員的時(shí)間推進(jìn)類型; 當(dāng)所述第i個(gè)聯(lián)邦成員的時(shí)間推進(jìn)類型為時(shí)間控制且受限型時(shí),該所述第i個(gè)聯(lián)邦成員通過所述時(shí)間推進(jìn)請求信息共享內(nèi)存隊(duì)列分別讀取第j個(gè)聯(lián)邦成員的請求推進(jìn)時(shí)間量Tj+Lookaheadj ; 所述第i個(gè)聯(lián)邦成員計(jì)算自己的時(shí)戳下限LBTSi ; 所述第i個(gè)聯(lián)邦成員處理它在所述接收順序消息共享內(nèi)存隊(duì)列中的所有所述不帶時(shí)戳消息,以及處理它在所述時(shí)戳順序消息共享內(nèi)存隊(duì)列中的時(shí)戳小于等于時(shí)戳下限LBTSi的所述帶時(shí)戳消息; 判斷所述第i個(gè)聯(lián)邦成員當(dāng)前的請求推進(jìn)時(shí)間量TjLookaheadi是否小于等于所述時(shí)戳下限LBTSi,如果是,則將所述第i個(gè)聯(lián)邦成員的仿真時(shí)間更新到Ti+Lookaheadi,該第i個(gè)聯(lián)邦成員切換為待接收模式;如果否,則返回所述第i個(gè)聯(lián)邦成員計(jì)算自己的時(shí)戳下限LBTSi ; 其中,i=l,2,......n, j = 1,2,......η, η為聯(lián)邦成員的個(gè)數(shù),并且第j個(gè)聯(lián)邦成員是影響所述第i個(gè)聯(lián)邦成員的調(diào)節(jié)型聯(lián)邦成員。
5.根據(jù)權(quán)利要求4所述的基于共享內(nèi)存的高性能仿真系統(tǒng)實(shí)現(xiàn)方法,其特征在于,所述通過所述共享內(nèi)存區(qū)進(jìn)行數(shù)據(jù)交互進(jìn)一步包括以下步驟: 將要訂購的所述對象實(shí)例屬性或交互實(shí)例參數(shù)分為具體數(shù)據(jù)內(nèi)容和其在所述數(shù)據(jù)交互共享內(nèi)存區(qū)內(nèi)的指針; 公布成員將所述具體數(shù)據(jù)內(nèi)容寫入所述數(shù)據(jù)交互共享內(nèi)存區(qū),并將所述指針與該具體數(shù)據(jù)內(nèi)容的長度通過所述請求消息共享內(nèi)存隊(duì)列傳給所述CRC模塊; 所述CRC模塊將所述指針和所述長度傳給訂購成員; 所述訂購成員根據(jù) 所述指針和所述長度讀取所述數(shù)據(jù)交互共享內(nèi)存區(qū)中的所述具體數(shù)據(jù)內(nèi)容。
全文摘要
本發(fā)明公開了一種基于共享內(nèi)存的高性能仿真系統(tǒng)實(shí)現(xiàn)方法,包括構(gòu)建運(yùn)行支撐環(huán)境,該支撐運(yùn)行環(huán)境包括CRC模塊、LRC模塊和共享內(nèi)存管理接口模塊;基于實(shí)時(shí)操作系統(tǒng)和CPU獨(dú)占策略初始化所述仿真系統(tǒng);基于所述共享內(nèi)存管理接口模塊開辟所述共享內(nèi)存區(qū);通過所述共享內(nèi)存區(qū)進(jìn)行時(shí)間維護(hù);通過所述共享內(nèi)存區(qū)進(jìn)行數(shù)據(jù)交互。本發(fā)明能夠?qū)崿F(xiàn)仿真系統(tǒng)的高效快速運(yùn)行,其突出特點(diǎn)是仿真系統(tǒng)每個(gè)周期推進(jìn)時(shí)間能夠達(dá)到微秒量級(jí),本發(fā)明技術(shù)方案將有良好的產(chǎn)業(yè)化前景。
文檔編號(hào)G06F9/455GK103077068SQ20121058005
公開日2013年5月1日 申請日期2012年12月27日 優(yōu)先權(quán)日2012年12月27日
發(fā)明者楊晨, 柴旭東, 侯寶存, 張智慧 申請人:北京仿真中心