APP下载

基于RapidIO的TIPC通信软件设计

2012-08-08王运盛

电讯技术 2012年12期
关键词:共享内存内存端口

王运盛,王 坚,周 红

(1.中电科航空电子有限公司,成都 611731;2.总参陆航部驻成都地区军事代表室,成都 610036)

1 引 言

随着硬件和软件技术的不断发展,越来越多的系统设计采用分布式处理体系结构,多个处理器、模块甚至机箱协同工作,这就对相互之间的数据交换网络提出了更高的要求。

RapidIO是一种开放标准的交换网络技术,提供高性能、可靠、高效、可扩展的互连网络,RapidIO得到了超过50家制造商和供应商的支持。RapidIO构架是一种基于高性能包交换的互连技术,主要功能是完成在一个系统内的微处理器、DSP、通信和网络处理器、系统存储器以及外设之间数据的高速传输。它成功解决了处理器集成芯片之间和线路板之间的互连问题。RapidIO采用通用的物理层、传输层、逻辑层和应用层划分,提供基于地址的读和写操作功能,也提供包括DMA控制器的通用数据传输和消息发送功能,同时流数据和封装过程倾向于采用DMA机制完成基本的数据传输。RapidIO的最新规范还提供了对原子操作、消息中断、服务质量和封装等功能。

但是,RapidIO规范并没有定义应用层的API,用户要使用RapidIO网络必须自己实现网络协议栈和应用程序接口函数[1]。RapidIO中必须附加开放的应用层协议和接口,才能充分发挥其高速传输、低开销和可移植等特点。同时开放的接口也有助于软件开发和系统集成,更加方便地实现网络容错和降级使用等功能,极大地提高嵌入式系统的网络和传输性能。TIPC就是满足这些功能要求的开放的网络协议和接口。笔者将TIPC网络协议与RapidIO总线相结合,在AMC8548上实现了基于RapidIO网络的TIPC通信软件,该通信软件在实际的软硬结合测试环境中表现良好。

2 TIPC工作原理

透明的处理器间通信(Transparent Inter-Processor Communication,TIPC)是一种开放的处理器间通信的协议,它提供面向消息的、与位置无关的通信服务。TIPC具有高速、实现代码量少和良好的可扩展性等特点。同时它还提供低效运行、可靠传输和系统监控能力,适合于高速、延时要求苛刻的实时处理系统。TIPC还符合标准的套接字API接口,支持从多核到簇系统规模的网络,支持动态的网络发现。TIPC最早由爱立信提出,并用在其电信基站等系统中完成数据收发和中继功能。除了普通的进程间的通信,TIPC的设计甚至考虑了多核处理器同一内核上的进程之间以及不同处理器内核之间通信,并保持寻址与接口的透明,因此TIPC的运行性能优于TCP/IP。

TIPC对网络的通信过程进行抽象,形成通用的通信模型,如图1所示。TIPC定义了端口、处理器节点、链路、传输设备等抽象模型。这些模型的抽象,不仅提高了TIPC在不同硬件平台上的可移植性,也使得TIPC实现了与位置无关的通信能力。

图1 TIPC的通信模型Fig.1 TIPC communication module

如图1所示,在TIPC通信系统中,端口与功能关联。处理器节点根据所提供的服务功能向外发布自己端口,其他处理器节点根据发布的服务和端口信息动态地维护本地的命名表,并将标志服务的端口与处理器的物理标识关联,通过高效的算法将逻辑端口转换成实际的物理地址。处理器通过物理ID确定通信的链路,最终由传输设备将数据发送出去。通信链路完成消息传输、序列排队和重发的任务;承载者是物理或者逻辑上的传输介质,是完成数据发送和接收的传输设备,如以太网的硬件设备或者是逻辑上的UDP通信协议,也可以是RapidIO传输设备。

TIPC对网络进行划分,从大到小分为区域、簇和节点,节点又分为主节点和从节点。TIPC支持消息路由,消息可以在不同的区域之间、不同的处理器之间以及主处理器和从处理器之间进行路由,最终到达消息被指定的接收方,如图2所示。

图2 TIPC的网络模型Fig.2 TIPC network module

TIPC网络中的每个节点都保留着所有的从处理器节点、外部组和外部簇的路由信息,这些信息都被TIPC实时维护。每个节点的路由表发生变化时都会向其他节点发出广播信息,通知路由表的变化,使得组内节点的路由表始终保持一致。TIPC也是采用这种方式来维护命名表的一致性。

3 基于RapidiO的TIPC

在RapidIO与TIPC的结合中,RapidIO总线协议的物理层、传输层和逻辑层实现ISO会话层以下的功能。在对RapidIO和操作系统接口做适当的改动后,将TIPC移植到RapidIO总线上,将为用户提供基于RapidIO的高效、完整的软硬件解决方案,支持与位置无关的数据传输。图3分别对RapidIO、TIPC以及硬件环境进行了说明。

图3 基于RapidIO的TIPC通信层次Fig.3 Layered TIPC communication protocol based on RapidIO

TIPC层不但完成通信的资源管理、数据缓存管理、发送接收队列管理和中断管理,还具有建立发送和接收的数据块描述字链表,通过链表的方式实现数据用户数据到底层驱动的零拷贝的功能。同时TIPC层还监控网络状态,一旦网络发生阻塞时,TIPC层会对要求发送的数据进行缓存,待网络恢复正常时再发送,并对发送出错的数据进行错误管理和重发管理。

RapidIO及其驱动程序提供数据通信的通道,通过共享内存的方式将数据交给TIPC处理。在RapidIO规范定义的数据帧结构中RapidIO的地址定义如图4所示。RapidIO的地址定义使得RapidIO数据具有逻辑的地址空间,可以在处理器的内存空间与RapidIO的逻辑空间之间建立映射关系,从而将具有一定RapidIO逻辑地址的数据存放到目的端指定的内存中去。

图4 RapidIO数据包格式Fig.4 Format of RapidIO data packet

在RapidIO总线上实现的共享内存通信过程如图5所示。发送端首先将需要发送的数据的RapidIO地址设置成一段确定的RapidIO地址空间,并将数据通过 RapidIO网络发送到目的端的RapidIO节点。接收端的接口设备可以配置RapidIO地址窗口,建立本地处理器内存与RapidIO地址之间的对应关系,将符合该窗口地址的数据发送到相应的地址空间中去。通常发送端也是通过开窗的方式,建立本地的地址与发送的RapidIO地址之间的对应关系。RapidIO的内存映射是双向的过程,反之亦然,这样就建立了发送和接收的双向通道。

图5 RapidIO内存映射工作原理Fig.5 Principle of RapidIO memory mapping

4 实验平台及测试结果

笔者在AMC8548上实现了基于RapidIO总线的TIPC通信协议。首先通过采用一个AMC8548作为主节点,对RapidIO网络进行初始化,并扫描网络中其他的RapidIO节点,然后分配其他RapidIO节点的网络ID。当网络通信工作正常后,先对内存映射机制的数据发送速率进行测试,然后再对TIPC的功能进行测试。

在对内存映射机制的数据发送速率测试中,先由MPC8548处理器的ATMU单元建立发送接收的地址窗口,再将本地内存地址和RapidIO逻辑地址建立映射关系,采用共享内存的方式实现两个处理器之间的通信。在此基础上,对TIPC的承载者进行修改,使之能够驱动基于RapidIO的内存映射的数据收发。

测试的软件环境要求如下:

Wind River Workbench 3.0;

Wind River Compiler 5.6;

Wind River GNU Compiler 4.1.2 forVxWorks 6.6;

Wind River VxWorks 3.0;

Wind River TIPC 1.7 Source。

主AMC8548设置为INBOUND窗,从AMC8548设置为OUTBOUND窗,从AMC8548调用DMA控制器将本地空间的海量数据(512 Mbyte)通过OUTBOUND窗拷贝到主AMC8548的本地内存(NWRITE或NWRITE_R操作)。笔者分别对4k/8k/16k/32k/1M/2M/4M窗测试其数据吞吐率,测试结果如图6所示。

图6 基于RapidIO共享内存吞吐率Fig.6 Throughput of communication based on RapidIO memory mapping

NREAD读操作,因为需要发出读请求,数据才能读回,因此时间的开销比NWRITE写操作和NWRITE-R带响应的写操作多,所以在映射同样大小的窗口情况下,读操作的数据吞吐率最低。三种操作方式在映射窗口不断增大的情况下,数据吞吐率也随之增大,因为NWRITE写操作不带响应,所以其吞吐率最高。

对内存映射机制的数据发送速率的测试完成后,在WorkBench的开发环境中打开VxWorks-6.6的组件配置视图,添加对TIPC通信协议的支持,并在BSP中将TIPC的底层函数映射到基于RapidIO的共享内存数据收发函数接口上,进行对TIPC的功能测试。首先分别为两端绑定本地的TIPC地址和端口:

随后进行TIPC的端口建立,其接口函数与通用的socket接口一致。也可采用VxWorks中TIPC所提供的测试组建,在shell下输入 tipcTS进行测试。tipcTS集成了15个测试用例分别对TIPC的端口打开关闭、数据收发等功能进行测试,结果如下:

5 结 论

采用在RapidIO网络上实现共享内存并构建TIPC的通信层次是可实现的。需要指出的是,TIPC所面向的网络是类似于电信基站的大规模网络,相当一部分功能是对网络拓扑和路由信息的维护,而通常情况下面向嵌入式应用的RapidIO网络规模很小,且网络连接固定,直接将TIPC应用到RapidIO网络并不能完全发挥两者的优势。对TIPC进行有针对性地裁剪,并结合RapidIO的网络特点和基本操作,将有助于发挥两者优势,为嵌入式分布式系统提供高效方便的通信环境。

[1] Fuller S.RapidIO:The Embedded System Interconnect[M].北京:电子工业出版社,2006.Fuller S.RapidIO:The Embedded System Interconnect[M].Beijing:Publishing House of Electronic Industry,2006.

猜你喜欢

共享内存内存端口
一种端口故障的解决方案
通过QT实现进程间的通信
“春夏秋冬”的内存
基于Linux内核的文件服务器模型的研究与构建
端口阻塞与优先级
基于PCI总线的多处理器协同机制研究
内存搭配DDR4、DDR3L还是DDR3?
8端口IO-Link参考设计套件加快开发速度
卫星三端口DC-DC变换器技术综述
基于内存的地理信息访问技术