首页> 中国专利> 一种基于共享内存的高性能仿真系统实现方法

一种基于共享内存的高性能仿真系统实现方法

摘要

本发明公开了一种基于共享内存的高性能仿真系统实现方法,包括构建运行支撑环境,该支撑运行环境包括CRC模块、LRC模块和共享内存管理接口模块;基于实时操作系统和CPU独占策略初始化所述仿真系统;基于所述共享内存管理接口模块开辟所述共享内存区;通过所述共享内存区进行时间维护;通过所述共享内存区进行数据交互。本发明能够实现仿真系统的高效快速运行,其突出特点是仿真系统每个周期推进时间能够达到微秒量级,本发明技术方案将有良好的产业化前景。

著录项

  • 公开/公告号CN103077068A

    专利类型发明专利

  • 公开/公告日2013-05-01

    原文格式PDF

  • 申请/专利权人 北京仿真中心;

    申请/专利号CN201210580051.7

  • 发明设计人 杨晨;柴旭东;侯宝存;张智慧;

    申请日2012-12-27

  • 分类号G06F9/455(20060101);

  • 代理机构11257 北京正理专利代理有限公司;

  • 代理人张雪梅

  • 地址 100854 北京市海淀区永定路142信箱30分箱十一室

  • 入库时间 2024-02-19 18:38:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-07-27

    授权

    授权

  • 2013-06-05

    实质审查的生效 IPC(主分类):G06F9/455 申请日:20121227

    实质审查的生效

  • 2013-05-01

    公开

    公开

说明书

技术领域

本发明涉及一种高性能仿真系统的实现方法。更具体地,本发明涉及适应 于具有共享内存特点计算环境的高性能仿真系统的实现方法。

背景技术

目前,电力控制仿真系统、飞行器空气动力学模拟实验仿真系统等半实物 仿真系统对实时性要求比较高,甚至达到了微秒级。这些半实物仿真系统一般 包含多个子系统以协作完成仿真任务,而现有的协同软件HLA/RTI软件主要 基于UDP或TCP通信协议运行,难以满足高性能需求。HLA是High Level  Architecture,分布式仿真高层体系结构的简称,HLA的基本思想就是使用面向 对象的方法,设计、开发及实现系统不同层次和粒度的对象模型,来获得仿真 部件和仿真系统高层次上的互操作性与可重用性。RTI(Run Time Infrastructure) 是运行支撑环境,是HLA接口规范的具体实现,是HLA的核心部件。RTI包 括本地RTI模块(Local RTI Component,以下简称LRC),它为本地联邦成员 提供一个服务调用接口,这个接口叫做RTI大使(RTI Ambassador)并保持一个 联邦成员的回调接口,称之为联邦成员大使(Federation Ambassador),RTI还包 括核心RTI模块(Core RTI Component,以下简称CRC),负责全局性的联邦 管理和时间管理。

现有技术中已出现了一些基于共享内存方式的RTI实现,但结合联邦管理 服务、声明管理服务、对象管理服务、时间管理服务、所有权管理服务、数据 交互管理服务六大类管理服务深入挖掘共享内存变化带来的优势,同时充分利 用多核计算能力的仿真系统实现方法较少,况且近年来多核技术飞速发展,一 个CPU上可以有几个甚至几十个计算核,市场上涌现出大量多核计算机,特 别是基于多核技术的高端服务器。

针对上述问题,结合基于共享内存的多核高效能计算环境的特点,迫切需 要一种基于共享内存的高性能仿真系统实现方法,以促进仿真系统实时性的提 高。

发明内容

本发明目的在于提供本发明的目的在于提供一种基于共享内存的高性能 仿真系统实现方法,解决现有协同仿真系统的实时性瓶颈问题。

该方法包括以下步骤:

构建运行支撑环境,该支撑运行环境包括CRC模块、LRC模块和共享内 存管理接口模块;所述LRC模块用于基于共享内存通信方式自主计算本联邦 成员的时戳下限、更新仿真时间以及分发与管理数据;所述共享内存管理接口 模块用于管理共享内存区并维护共享内存地址的一致性;

基于实时操作系统和CPU独占策略初始化所述仿真系统;

基于所述共享内存管理接口模块开辟所述共享内存区;

通过所述共享内存区进行时间维护;

通过所述共享内存区进行数据交互。

进一步地,所述基于实时操作系统和CPU独占策略初始化所述仿真系统 包括以下步骤:

基于实时操作系统的中断屏蔽技术,将多核SMP服务器上的任一CPU处 理核指定为不响应所有的中断;

指定联邦成员或所述CRC模块进程任务独占该CPU处理核;

通过所述LRC模块设置其联邦成员的参数,该参数包括时间推进类型、 前瞻量、公布订购对象类、公布订购交互类。

进一步地,所述基于所述共享内存管理接口模块开辟所述共享内存区包括 以下步骤:

创建请求消息共享内存队列,该请求消息共享内存队列用于存储RTI大使 向所述CRC模块发送的请求消息;

创建接收顺序消息共享内存队列,该接收顺序消息共享内存队列用于存储 所述CRC模块向RTI大使发送的不带时戳消息;

创建时戳顺序消息共享内存队列,该时戳顺序消息共享内存队列用于存储 所述CRC模块向RTI大使发送的带时戳消息队列;

创建联邦信息共享内存队列,该联邦成员信息共享内存队列用于存储联邦 信息和时间推进类型;

创建时间推进请求信息共享内存队列,该时间推进请求信息共享内存队列 用于存储请求推进时间量;

创建数据交互共享内存区,该数据交互共享内存区用于存储联邦成员对象 实例属性或交互实例参数的具体数据内容。

进一步地,所述通过所述共享内存区进行时间维护进一步包括以下步骤:

当第i个联邦成员加入或退出联邦时,所述CRC模块向其他联邦成员通知 该第i个联邦成员的时间推进类型;

当所述第i个联邦成员的时间推进类型为时间控制且受限型时,该所述第 i个联邦成员通过所述时间推进请求信息共享内存队列分别读取第j个联邦成 员的请求推进时间量Tj+Lookaheadj

所述第i个联邦成员计算自己的时戳下限LBTSi

所述第i个联邦成员处理它在所述接收顺序消息共享内存队列中的所有所 述不带时戳消息,以及处理它在所述时戳顺序消息共享内存队列中的时戳小于 等于时戳下限LBTSi的所述带时戳消息;

判断所述第i个联邦成员当前的请求推进时间量Ti+Lookaheadi是否小于 等于所述时戳下限LBTSi,如果是,则将所述第i个联邦成员的仿真时间更新 到Ti+Lookaheadi,该第i个联邦成员切换为待接收模式;如果否,则返回所 述第i个联邦成员计算自己的时戳下限LBTSi

其中,i=1,2,……n,j=1,2,……n,n为联邦成员的个数,并且第j 个联邦成员是影响所述第i个联邦成员的调节型联邦成员。

进一步地,所述通过所述共享内存区进行数据交互进一步包括以下步骤:

将要订购的所述对象实例属性或交互实例参数分为具体数据内容和其在 所述数据交互共享内存区内的指针;

公布成员将所述具体数据内容写入所述数据交互共享内存区,并将所述指 针与该具体数据内容的长度通过所述请求消息共享内存队列传给所述CRC模 块;

所述CRC模块将所述指针和所述长度传给订购成员;

所述订购成员根据所述指针和所述长度读取所述数据交互共享内存区中 的所述具体数据内容。

本发明能够实现仿真系统的高效快速运行,其突出特点是仿真系统每个周 期推进时间能够达到微秒量级,该发明适用于构建高性能仿真系统,特别是有 半实物参与的软实时仿真系统,本发明技术方案将有良好的产业化前景。

附图说明

下面将参照附图并结合实施例对本发明进行具体说明。

图1本发明方法基本流程图。

具体实施方式

下面参照附图并借助本发明的实施例,对本发明的技术方案做详细描述。

如图1所示,一种基于共享内存的高性能仿真系统实现方法的具体步骤为:

步骤S1、构建运行支撑环境,该支撑运行环境包括CRC模块、LRC模块 和共享内存管理接口模块。所述CRC模块负责联邦管理、对象管理中的全局 名及全局标识管理、所有权管理以及时间管理中的仿真联邦成员时间类型设置 工作。所述LRC模块,除负责RO消息队列处理、TSO消息队列排序、消息 处理、数据更新交互外,还用于基于共享内存通信方式自主计算本联邦成员的 时戳下限(Lower Bound Time Stamp,以下简称LBTS)、更新仿真时间以及分 发与管理数据。共享内存管理接口模块,对外提供对共享内存区块的统一分配 和管理,并维护共享内存地址的一致性,这里地址一致性是指多个内存区块之 间访问时会映射到统一的地址空间内本发明的所述支撑环境统一使用所述共 享内存管理接口模块创建共享内存区。RO(Receive Order)是指消息以接收顺 序传递,RO消息也可称为不带时戳消息;TSO(Time Stamp Order)是指消息 以时戳顺序传递,TSO消息也可称为带时戳消息。

所述CRC模块主要负责联邦管理、对象管理中的全局名及全局标识管理、 所有权管理以及时间管理中的仿真联邦成员时间类型设置等工作。在本发明 中,现有CRC的功能被部分地分解到LRC中进行并行处理了,这样可以降低 CRC全局工作的瓶颈。

步骤S2、基于实时操作系统和CPU独占策略初始化所述仿真系统。

为了保证高性能仿真中纳秒级读取共享内存的通信速度要求,基于实时操 作系统的中断屏蔽技术,将多核SMP(即Symmetrical Multi-Processing,对称 多处理的简称)服务器上的任一CPU处理核指定为不响应所有的中断,同时 指定联邦成员或所述CRC模块进程任务独占该CPU处理核。

各联邦成员被分配执行后,通过所述LRC模块完成了其参数的初始化设 置,这些设置包括:

<FederationName,FederateName,FomFile,FomFilePath,TimeAdvType, LookAhead,TimeStep,PubSubObjCls,PubSubIntrCls,<InstanceName, ObjClsName>>,这些信息组成了仿真成员初始化的所有要素,其中元素的语 义分别为联邦仿真系统的名称,仿真成员名称,Fom(Federation object model, 即联邦对象模型)文件,Fom文件路径,时间推进类型,前瞻量,推进步长, 公布订购对象类,公布订购交互类,<注册实例名称,对象类名称>。

上述初始化信息密切关系到共享内存区的开辟,特别是其中的时间推进类 型、前瞻量、公布订购对象类和/或公布订购交互类等。

步骤S3、基于所述共享内存管理接口模块开辟共享内存区。也就是通过共 享内存管理接口模块创建共享内存区的各个共享内存区块,建立所述CRC模 块、所述LRC模块以及联邦成员之间的高速通信链路,进一步包括:

(1)创建请求消息共享内存队列,该请求消息共享内存队列用于存储RTI 大使向所述CRC模块发送的请求消息,所用共享内存名为“RTI_SMB_i”,其 中,i表示第i个联邦成员,i=1,2,…,n-1,n,n为联邦成员的数量;

(2)创建接收顺序消息共享内存队列,该接收顺序消息共享内存队列用 于存储CRC模块向RTI大使发送的不带时戳消息,所用共享内存名为 “RO_SMB_i”,其中i=1,2,…,n-1,n;

(3)创建时戳顺序消息共享内存队列,该时戳顺序消息共享内存队列用 于存储CRC模块向RTI大使发送的带时戳消息队列,所用共享内存名为 “TSO_SMB_i”,其中i=1,2,…,n-1,n;

(4)创建联邦信息共享内存队列,该联邦成员信息共享内存队列用于存 储联邦信息和时间推进类型,所用共享内存名为“Federation_SMB”。所述CRC 模块周知共享内存队列Federation_SMB,所述CRC模块通过该共享内存队列 Federation_SMB进行联邦管理服务和时间管理服务中的仿真联邦成员的时间 推进类型设置信息管理。

(5)创建时间推进请求信息共享内存队列,该时间推进请求信息共享内 存队列用于存储请求推进时间量,所用共享内存名为“Federation_TL_SMB”, 所述LRC模块通过读取该时间推进请求信息共享内存队列中的请求推进时间 量,进行时间管理服务中并行计算联邦成员的LBTS。

(6)创建数据交互共享内存区,该数据交互共享内存区用于存储联邦成 员对象实例属性或交互实例参数的具体数据内容,所用共享内存名为 “UpdatingData_SMB_i”,所述CRC模块和所述LRC模块利用该数据交互共 享内存区进行对象管理中联邦成员对象实例属性或交互实例参数的数据交互, 并且进行数据分发管理中基于共享内存的订购成员并行数据过滤方法。

步骤S4、通过所述共享内存区进行时间维护;以及步骤S5、通过所述共 享内存区进行数据交互。仿真系统的高效运行需要时间维护和数据交互两方面 处理的支持。

步骤S4中,基于共享内存的高效时间管理算法中,当第i个联邦成员加 入或退出联邦时,该第i个联邦成员的RTI大使向所述CRC模块发送请求消 息,所述CRC模块将该第i个联邦成员的时间推进类型存入所述联邦信息共享 内存队列Federation_SMB中,并通知其它成员该第i个联邦成员的时间推进类 型是调节型的还是受控型的。

在本发明中,联邦成员间的时间信息的分发不通过CRC模块,而是各成 员通过对所述共享内存区的高速读写完成的。

具体地,当所述第i个联邦成员的时间推进类型为时间控制且受限型时, 该第i个联邦成员从所有影响它的第j个联邦成员的所述时间推进请求信息共 享内存队列Federation_TL_SMB中分别读取推进时间量(Tj+Lookaheadj),其中, 所述第j个联邦成员是影响所述第i个联邦成员的调节型联邦成员,j=1,2,…… n且j≠i。时间控制型联邦成员是指该成员将影响其他成员;受限型联邦成员 是指该成员受到其他成员的影响;时间控制和受限型的联邦成员既影响部分联 邦成员又受部分联邦成员的影响。

所述第i个联邦成员根据各个所述请求推进时间量Tj+Lookaheadj计算自 己的LBTSi,也就是LBTSi=Min(Tj+Lookaheadj);然后该成员将处理自己的 所述接收顺序消息共享内存队列RO_SMB_i中的所有不带时戳消息,以及所述 时戳顺序消息共享内存队列TSO_SMB_i中所有时戳小于等于LBTSi的带时戳 消息。

判断所述第i个联邦成员当前的请求推进时间量Ti+Lookaheadi是否小于 等于所述时戳下限LBTSi,如果其当前请求推进时间量Ti+Lookaheadi小于等 于LBTSi,则更新该第i个联邦成员的仿真时间到(Ti+Lookaheadi),所述CRC 模块调用联邦大使的时间推进允许回调函数,该第i个联邦成员退出tick函数 切换为待接收模式;如果该第i个联邦成员的当前请求推进时间量Ti+ Lookaheadi大于LBTSi,则返回所述第i个联邦成员计算自己的时戳下限LBTSi的步骤,重复执行上述过程。

步骤S5中,为了有效利用共享内存通信方式,本发明将订购成员要订购 的对象实例属性或者交互实例参数分为两部分:具体数据内容及其在共享内存 区的指针,所述具体数据内容是对象实例属性的值或交互实例参数的值。公布 成员将所述具体数据内容写入所述数据交互共享内存区UpdatingData_SMB_i, 并将该具体数据内容在所述数据交互共享内存区UpdatingData_SMB_i的指针 和长度进行传递。

具体地,公布成员将对象实例属性的值或交互实例参数的值写入所述数据 交互共享内存区UpdatingData_SMB_i,并将所述指针与该具体数据内容的长 度通过所述请求消息共享内存队列RTI_SMB_i传给所述CRC模块。本发明具 体实施方式是通过调用所述LRC模块的属性值更新函数或交互实例发送函数 将所述指针和所述长度传给所述CRC模块的。

接着所述CRC模块将所述指针和所述长度发送给订购该对象实例属性或 者交互实例参数的订购成员,本发明具体实施方式是所述CRC模块通过反射 属性值回调函数或接收交互实例回调函数将所述指针和所述长度发送给所述 订购成员。

然后所述订购成员根据该指针和该长度读取所述数据交互共享内存区 UpdatingData_SMB_i中的所述具体数据内容从而更新对象实例属性值或交互 实例参数值。

应当理解,以上借助优选实施例对本发明的技术方案进行的详细说明是示 意性的而非限制性的。本领域的普通技术人员在阅读本发明说明书的基础上可 以对各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同 替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例 技术方案的精神和范围。本发明的保护范围仅由随附权利要求书限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号