CPCI总线的分布式系统设计应用
图3板卡数据接收“抽屉”本文引用地址:https://www.eepw.com.cn/article/162663.htm
基于这种报文存储机制,我们定义几种地址表来维护数据传输相关地址信息。系统板上维护有静态的基址表,记载为每个卡槽上板卡预先分配的基址。所有板卡上都维护有板卡地址映射表和传输地址偏移表。板卡地址映射表为一个结构数组,数组中各项分别代表一个卡槽,里面包含板卡名称、卡槽号、基址和地址范围等地址信息以供数据传输时配置所用,其数据结构如下:
typedefstruct_BUS_ADDR_MAPPING_INFO{
charboard_name[BOARD_NAME_LENGTH];
intslot_number;
unsignedlongbase_addr;
unsignedlongrange;
}BUS_AddrMapping_Info,*P_BUS_AddrMapping_Info;
传输地址偏移表为一无符号整型数组,用于记录板卡间数据传输时各板卡的地址偏移,初值均为零,每次传输完毕,接收板卡的地址偏移就增加当次数据传输长度,当地址空间不足以存放即将传输的数据时,则将偏移地址设为零,重新从区域起始处写入。其数据结构定义如下:
u32current_offset_table[NUM_OF_SLOT]={0,0,0,0,0,0,0,0};
3.2数据传输实现
我们定义了一种数据结构IPH(InternalPacketHeader),包含数据类型、长度、来源卡槽号等属性,在传输数据前作为包头对报文进行封装,以便接收方解析包头后能根据数据业务类型区分处理。主要IPH类型有板卡配置信息,端口注册信息,路由信息,未知数据类型等。定义数据结构iph_attr区别不同IPH_info类型,位于数据包首,其数据结构如下:
typedefstruct_IPH_ATTR{
u32board_id;/*fromwhichboard*/
intiph_type;/*datagramtype*/
unsignedlonglength;/*datagramlength(withoutIPH)*/
}IPH_ATTR,*P_IPH_ATTR;
针对各种类型IPH信息又分别定义不同数据结构,在数据包头中依次存放于iph_attr结构之后。
发送数据时,对数据进行IPH封装,根据前述的板卡地址映射表选择目的PCI地址,再调用总线接口函数完成数据传输。发送方通过写接收板卡桥芯片的mailbox寄存器,将传输地址及数据长度信息通知接收方,产生中断触发接收。PLX桥芯片支持local总线对PCI总线的直接访问,它有8个mailbox寄存器,前四个能产生中断,每个mailbox32位,传输地址和数据长度信息分别使用mailboxi和mailboxi+4配合工作,这样接收方收到两个参数时会产生一次中断,进行数据接收[5]。这种机制使接收处理具有四个服务窗口,提高了系统吞吐量。
接收板卡PLX芯片的mailbox被写入参数即产生本地中断检查“抽屉”,产生中断前,数据实际上已被发到目标板卡上了。中断服务程序为接收端维护一个数据队列,它读取mailbox中的信息,分析地址找到相应数据并交由底半处理。底半解析数据包的IPH分辨数据类型,若为配置、端口、路由等信息则进行相应配置,若为数据信息则进行处理或转发。
综上所述,系统通过“抽屉机制”和对几种地址表的维护完成了各板卡之间PCI地址空间的映射,板卡将数据写往映射地址空间即能通过总线将数据传输到目标板卡上,实现了板卡的跨总线内存访问;自定义IPH数据包头来区分数据类型协助数据信息管理,完成了路由维护,转发引擎的逻辑功能,实现了数据的无干扰传输与有效通信管理。
4.总结及展望
本文作者创新点为:给出了一种基于CPCI的分布式系统设计,同时提出了基于“抽屉机制”的报文存储机制和地址信息维护策略。文章所述的基于CPCI的分布式系统,可达到64bit总线宽度、264MB/s的峰值带宽,系统中各主机能独立完成数据处理及通信,能够承载语音、数据多种业务,用户还可通过用户接入板与语音业务板所连的PSTN网和数据业务板所连Internet进行数据通信,在通信、军事等领域有着较大的应用前景。为使本通信系统更具大规模实用价值,未来的工作包括:
(1)实现一套易操作的远程管理系统,以便完成通信业务的监控,调配;
(2)设计支持更多业务类型的CPCI接口板卡,如xDSL,H.264等;
(3)在外界干扰较大情况下,通过严格的性能测试以证明系统能够满足电信级的业务需求。
评论