[/URL]
基于反射内存网的实时数据保存系统设计
摘委:反射内存具有严格的传输确定性和可预测性,广泛用于各种半实物仿真平台的构建.本文详细介绍了基于反射内存的半实物仿真平台中数据保存系统的设计思路、工作原理和关健技术.该系统通过对WindowsNT操作系统的实时性改造和软件架构的优化设计,改善了WindowsNT下中断响应和线程调度的实时性和确定性性能,实现了多节点、肠意数据量的同时保存.目前,该系统已研制成功并投入运行。
关健词:反射内存;半实物仿真;数据保存;多线程
1引言
大型复杂系统的研制过程中,半实物仿真己成为一个必不可少的环节。通过半实物仿真,可使无法准确建立模型的实物直接进入仿真回路,完成某些纯数字仿真无法完成的工作并提高仿真结果的准确性。
反射内存网是用于需要较高实时性要求的应用领域的专用网络。它除了具有严格的传输确定性和可预测性外,还具有速度高、通信协议简单、宿主机负载轻、软硬件平台适应性强、可靠的传输纠错能力、支持中断信号的传输等特点,本文以某研究所多网络半实物仿真平台研制为背景,详细介绍了基于反射内存网的实时数据保存系统设计过程和关键技术。
2反射内存技术
反射内存(VMIC)实质上是双口动态可读写内存,可以让具有不同总线结构、不同操作系统的计算机在网络上高速的共享实时数据。其基本原理是:本地计算机向内存写入数据时,反射内存板自动把数据从另外涪个口发出,通过光纤传播到网络内的所有节点,从而使整个网络内所有节点的数据得到同时更新.数据传播的速率为2.125Gbaud,其他反射内存节点可以在700ns内得到数据。不依赖于计算机操作系统,解决了由非确定性的操作所导致的内存竞争以致出现的程序执行随机阻塞现象;使用反射内存无需处理器额外开销,向某个节点中的写将自动分配到其他相连的系统,内存读在本地内存中进行,因此消除了内存存取所引发的竞争延迟。另外,由于消除了对共享资源的竞争,对应用程序具有可预测的执行速度。同时,数据的传输可以是自动、.并发和被动多种形式,因此几乎不需要额外的软件开销对系统共享数据进行更新。
反射内存网是一种基于环路结构的,高速复制共享内存网络,可按环形或星型拓扑结构组网。环型结构不需要Hub,节省设备、光纤使用量少;但每个节点都有延时,任意一个节点出现故障都将影响整个网络。星型结构需要一个专用Hub,可消除单点失效、实现故障隔离,且延时小;但光纤使用量多,Hub发生故障将导致整个网络瘫疾。采用环型连接时,网上所有反射内存卡都通过光纤串联起来:采用星型连接时,网络上所有反射内存卡都连接到Hub上。星型连接只是物理上的星型连接,从逻辑上看还是环型连接
3系统总体方案
该半实物仿真平台基于反射内存和广播内存两种实时网络构建,两种实时网均采用星形物理连接。网络之间用VMIC-SBS接口计算机实现互联,系统结构如图1所示.数据保存系统采用_L:控机硬件平台、WindowsNT操作系统,作为一个节点接入反射内存网,其他节点的数据通过反射内存网络传至数据保存节点并由其进行实时保存,广播内存网络节点上需要保存的数据由VMIC-SBS接口转发至反射内存网,再由数据保存节点保存。
http://www.vmic5565.com/uploadfile/20130918/20130918132938662.jpg
图1多网络半实物仿真系统示意图
4数据保存系统软件设计
数据保存系统软件是实现其功能的关键,综合考虑成本、研制周期、性能指标等因素后决定以工控机为平台,基于WindowsNT操作系统进行软件开发。
4.1总体架构
根据半实物仿真平台的设计指标,数据保存系统应具有同时保存四个不同节点数据的能力,每批数据最大长度为1600个字节,一次启动可保存任意批数据至磁盘。由于半实物仿真过程中时间标尺必须与真实时间标尺一致,且数据采集频率非常高,要求数据实时接收,实时保存。各个节点数据保存具有随机性和突发性。这要求软件系统必须具备多任务处理、快速中断响应能力.为满足以上要求,软件需采用多任务架构。每个节点的数据由一个任务负责保存。工作方式的选择上,有程序查询和中断驱动两种方案。程序查询方式可靠性高、编程简单,但CPU占用率高,系统资源浪费严重,查询时无法保存数据,若采用分时查询和分时保存方式,又可能在两次保存的间隔里,数据还未保存就己被下一批数据覆盖。此外,WindowsNT不属于强实时操作系统,其任务调度虽然是基于优先级抢占方式,但其总共只提供32个任务优先级,其中留给应用程序的只有巧个,这使得大量进程或线程不得不运行在相同优先级下,容易因争抢资源而发生阻塞。一般情况下只有当一个线程运行完毕或由于某种原因被阻塞或挂起时才会将另一个线程转入运行态。WindowsNT这种线程调度策略不仅使得4个数据保存线程的运行很难协调,而月.会严重影响整个系统的实时性。考虑到WindowsNT下中断服务程序的优先级高于所有线程优先级,而且在采取一定措施的条件下,其中断响应的实时性还是非常好的。若采用中断驱动方式工作,在中断服务程序中接收和保存数据,可大大提高软件实时性,但在该系统中,任意节点的数据都是平等的,中断优先级均相同,当一个节点的中断服务程序还未运行完成时,所有其他节点的中断请求都只能等待。这样将带来另一个问题:从反射内存读取数据时间很短,且不随数据长度线性增长(采用DMA方式)。但将数据保存到磁盘文件时,需要向磁盘写数据,耗时比较长,这在大数据量时更为明显。如果在中断服务程序里实现这一过程必将长时间阻塞其他线程的中断请求,易导致待保存数据被覆盖。
http://www.vmic5565.com/uploadfile/20130918/20130918132948382.jpg
图2数据保存软件总体架构图
根据以上分析,该软件最终采用“中断驱动读取数据—数据缓冲暂存数招—多线程保存数据的工作模式,如图2所示。利用木地内存对数据进行缓冲。在实时性较高的中断服务程序中将数据读取至缓冲区,既避免数据被覆盖,又避免其他节点中断请求长时间被阻塞。同时,将实时性要求不高的数据保存部分放到工作线程中完成,充分利用系统资源。这样,系统很好的避开了WndowsNT线程调度策略的不足,大大提高了实时性。
4.2工作原理
该系统作为一个节点接入反射内存网,系统启动后,首先创建4个工作线程并将其挂起,创建数据缓冲区和其他数据结构,然后使用其SDK函数RFM2gOpenO启动反射内存:RFM2gEnableEventO初始化中断控制器:RFM2gEnableEventCallback()安装中断回调函数。此时,系统初始化完成,开始等待中断请求。反射内存中断请求的发送由程序控制,即发送端将数据写入反射内存后,向数据保存节点发送中断请求信号,同时发送一个RFM2GEVENTINFO数据结构,其定义为:
typedefstructrfm2gEventlnfo
{
RFM2G_UINT32Extendedlnfo;
RFM2GEVENTTYPEEvent;
RFM2G_UINT32Timeout:
RFM2G_NODENodeld;
void*pDrvSpec;
}FRFM2GEVENTINFO;
其中包含了扩展信息、中断类型、等待时限、节点号和驱动指定数据等信息,各项详细定义在手册里均有说明,这里不再敖述。数据保存节点依据此结构体信息判断数据来源、数据类型、错误类型等信息数据保存系统收到中断后,转入中断回调函数,执行以下操作:
(1)判断数据源节点。将不同节点的数据放入相应的缓冲区:
(2)将数据读入缓冲区;
(3)相应工作线程转入就绪态。保存数据至磁盘。当有两个以上线程同时运行时,按时间片轮转方式协调。
其工作流程如图3所示。
数据缓冲区基于环形队列构造,数据从头指针处写入,工作线程从尾指针处取出数据并存于磁盘。这样,可边存边取,相对于静态缓冲区,消除了一次保存数据的上限问题,且缓冲区大小只需满足一次突发传输的数据量即可。
http://www.vmic5565.com/uploadfile/20130918/20130918133002602.jpg
图3数据保存软件工作流程
4.3实时性措施
半实物仿真需要将实物接入仿真回路,仿真时间标尺须与实际时间标尺相同,因而对半实物仿真系统的实时性提出了较高要求。对本系统系统而言,影响其实时性的主要技术颈瓶是WindowsNT操作系统的中断响应速度和线程调度策略。此外,其内存映射模型也严重影响实时性。但这是由Windows内核控制的,外界无法改变,只能通过API接口对其进实时性改造。具体有如下措施:
(1)将进程和线程优先级均提升至时间关键级。利用API函数SetPriorityClassQ提升进程优先级,SetThreadPriority()函数提升线程优先级。
(2)屏蔽多余外部中断,减小中断被阻塞的可能性。Windows操作系统响应一部分中断(如鼠标、键盘中断等)后将会产生相应的消息放到系统的消息队列,然后再分发到前台线程的线程消息队列,若此时前台线程发生阻塞,则会造成中断相应的延迟,甚至影响其他中断的响
应。该系统外部中断由两片8259芯片控制,通过对其进行设置即可屏蔽多余的外部中断。
(3)使用虚拟内存锁定技术。由于Windows的内存映射机制并非针对实时系统设计,数据缓冲区可能并没有映射到真正的物理内存上.需使用虚拟锁将这块区域锁定到物理内存。使用HeapLock()进行关键数据访问权限保护:VirtualLock()进行物理内存锁定。
(4)反射内存读写方式采用Peck/poke与DMA相结合。根据实际测试,反射内存在传输量小于120字节时Peek/poke方式读写速率较快,否则DMA方式较快。
(5)关闭多余的系统服务和进程。
通过以上改造,系统响应的确定性有很大改善,响应时间也有一定提高,能够满足半实物仿真平台实时仿真的需要。
5结束语
数据保存系统作为半实物仿真平台的节点接入VMIC实时通讯网络。软件采用“中断驱动读取数据—数据缓冲暂存数据—多线程保存数据”架构,解决了多节点大数据量实时保存的问题;通过对WindowsNT系统的实时性改造,较好的解决了操作系统响应时间和确定性问题。目前,该系统己在某研究所投入实际使用,并在半实物仿真中发挥了积极的作用。
参考文献
[1]顾颖彦.反射内存网实时通信技术的研究[J].计算机工程,Vol.28,No.7,143
[2]VMIC Microsystems
International Corporation.VMIPCI-5556 Reflective Memory Board Product
Manual[Z]
[3]刘志国,工仕成,金光军.基于实时网络的激光制导武器系统半实物仿真系统设计田.计算机仿真,2003,Vol.5,20
[4]肖卫国,尔联洁,谢延毅,曾宁.基于共享内存机制微机实时网的数据传输实时性研究.系统仿真学报,2004,Vol.16,No.8,1717
最后修改:2013/9/23 8:39:37