CPCI总线在分布式系统中的设计

时间:2011-08-26

    1. 引言

    Compact PCI(Compact Peripheral Component Interconnect)简称CPCI,中文又称紧凑型PCI,是国际工业计算机制造者联合会(PCI Industrial Computer Manufacturer's Group,简称PICMG)于1994提出来的一种总线接口标准。是以PCI电气规范为标准的高性能工业用总线。为了将PCI SIG的PCI总线规范用在工业控制计算机系统,1995年11月PCI工业计算机制造者联合会(PICMIG)颁布了CPCI规范1.0版,以后相继推出了PCI-PCI Bridge规范、Computer Telephony TDM规范和User-defined I/O pin assignment规范。

    随着网络及通信技术的高速发展,网络环境中数据运算和通信的任务不断增大,在越来越多的领域中需要大规模系统来承担繁重的数据任务并支持多种类型的任务处理。为能实时得处理大量数据业务,大规模系统需将数据分布到多个模块上进行并行处理,同时针对多种异构网络数据,通过不同功能模块对各类数据分别处理,再基于统一平台进行实时通信。针对这样的需求,大规模系统应采用分布式网络架构,同时应具有开放性和良好的可扩展性,以适应不断变化的应用环境和需求;系统中各模块分工处理不同类型数据,应具有相对的独立自主性,同时又在不同的层次上相互关联,能实现相互访问和协同工作;系统也应具有良好的集成性,在功能层次上需要有效的组件构造框架,在组件层次上则应有统一的数据交互平台。

    本文给出一种基于CPCI总线的通信系统设计,系统采用分布式网络架构,支持多种分组交换业务的处理及数据交互。文章首先给出系统结构及原理设计,并针对分布式业务处理模块跨总线通信的难点,提出基于“抽屉机制”的报文存储和地址信息维护策略,描述了数据无干扰传输等关键技术的实现,给出技术总结和展望。

    2. 系统总体设计

    2.1 系统结构特点

    系统中不同设备板卡独立对相应业务数据进行处理,将其转化为统一的IP数据进行互通,并维护各自的路由表独立完成数据转发。系统将与特定业务网络的接口分布到各种设备板卡中进行标准的接入信道适配,并将各类网络数据分布到各板卡进行处理和转发,实现了集中配置与分布式接入和数据处理的完美结合。

    在CPCI分布总线架构中,背板为总线交换提供物理连接、电路保证,背板上系统插槽提供总线仲裁、时钟分配和背板上各板卡重新启动等功能;外设插槽上可安放简单的接口板、智能从属装置或总线控制装置。


图1 数据通信系统结构图

    2.2系统资源共享与信息互通

    系统采用基于CPCI的单总线多处理器/多操作系统的分布式架构,系统中各块板卡均拥有独立的CPU和操作系统、地址和内存空间以及独立的I/O和中断,可独立完成数据操作,每块板卡可看作一台计算机主机。分布式系统形成的拓扑结构为一个全连通的网络,网络中每个节点都能够直接访问其它节点;针对这种基于总线的分布式架构,我们设计了跨总线的内存访问机制,将系统中其它板卡的系统内存或者设备内存(比如内存扩展卡)映射到本地地址空间,然后以与系统内存相同的方式访问被映射的内存,这样每块板卡都能够访问到总线上其他板卡的内存资源了。

    2.3统一规范的访问接口

    异构网络通过标准信道适配接入分布式系统,语音、X.25、串口数据等非IP数据经由数据适配模块转换成IP数据,系统中各板卡的嵌入式实时系统对数据进行处理和交互。各种异构网络挂接在嵌入式系统中相应网络设备上,网络设备驱动调用CPCI总线驱动提供的统一接口实现实时系统与总线之间的数据传输。发送数据时,网络设备驱动通过总线驱动控制桥芯片进行地址转换、数据转发、中断产生等工作,生成相应的总线操作将数据送往总线;接收数据时,总线驱动响应中断,接收总线上相应地址段的数据,在中断服务程序中进行数据解析、地址转换、数据转发、其他中断产生等操作。我们采用Linux操作系统,其网络系统主要是基于UNIX的socket机制,系统协议栈和驱动程序之间通过专门的数据结构(sk_buff)传递数据。实时系统内核与CPCI总线间数据传输流程如图2所示:


图2 数据传输流程图

    3. 关键技术

    3.1 报文存储的“抽屉机制”

    系统中各板卡共用一条CPCI总线,我们提出基于“抽屉机制”的报文存储策略,以保证板卡间数据无干扰传输。在板卡加入系统的初始化阶段,系统板为总线上每块板卡分配独立的PCI总线地址区间,其他板卡向其发送数据时将数据写往指定地址区域。一块板卡会接收来自不同板卡的数据,为避免各板卡往同一基址发送数据所引起的干扰,同一板卡地址区域内又为其他板卡分配大小相同的独立读写空间,我们将它命名为“抽屉”。


图3 板卡数据接收“抽屉”

    系统板上维护有静态的基址表,记载为每个卡槽上板卡预先分配的基址。所有板卡上都维护有板卡地址映射表和传输地址偏移表。板卡地址映射表为一个结构数组,数组中各项分别代表一个卡槽,里面包含板卡名称、卡槽号、基址和地址范围等地址信息以供数据传输时配置所用,其数据结构如下:

    typedef struct _BUS_ADDR_MAPPING_INFO{

    char board_name[BOARD_NAME_LENGTH];

    int slot_number;

    unsigned long base_addr;

    unsigned long range;

    }BUS_AddrMapping_Info, *P_BUS_AddrMapping_Info;

    3.2 数据传输实现

    我们定义了一种数据结构IPH(Internal Packet Header),包含数据类型、长度、来源卡槽号等属性,在传输数据前作为包头对报文进行封装,以便接收方解析包头后能根据数据业务类型区分处理。主要IPH类型有板卡配置信息,端口注册信息,路由信息,未知数据类型等。定义数据结构iph_attr区别不同IPH_info类型,位于数据包首,其数据结构如下:

    typedef struct _IPH_ATTR {

    u32 board_id; /*from which board*/

    int iph_type; /*datagram type*/

    unsigned long length; /*datagram length(without IPH)*/

    }IPH_ATTR, *P_IPH_ATTR;

    针对各种类型IPH信息又分别定义不同数据结构,在数据包头中依次存放于iph_attr结构之后。

    发送数据时,对数据进行IPH封装,根据前述的板卡地址映射表选择目的PCI地址,再调用总线接口函数完成数据传输。发送方通过写接收板卡桥芯片的mailbox寄存器,将传输地址及数据长度信息通知接收方,产生中断触发接收。PLX桥芯片支持local总线对PCI总线的直接访问,它有8个mailbox寄存器,前四个能产生中断,每个mailbox32位,传输地址和数据长度信息分别使用mailbox i 和mailbox i+4配合工作,这样接收方收到两个参数时会产生中断,进行数据接收[5]。这种机制使接收处理具有四个服务窗口,提高了系统吞吐量。

    接收板卡PLX芯片的mailbox被写入参数即产生本地中断检查 “抽屉”,产生中断前,数据实际上已被发到目标板卡上了。中断服务程序为接收端维护一个数据队列,它读取mailbox中的信息,分析地址找到相应数据并交由底半处理。底半解析数据包的IPH分辨数据类型,若为配置、端口、路由等信息则进行相应配置,若为数据信息则进行处理或转发。

    综上所述,系统通过 “抽屉机制”和对几种地址表的维护完成了各板卡之间PCI地址空间的映射,板卡将数据写往映射地址空间即能通过总线将数据传输到目标板卡上,实现了板卡的跨总线内存访问;自定义IPH数据包头来区分数据类型协助数据信息管理,完成了路由维护,转发引擎的逻辑功能,实现了数据的无干扰传输与有效通信管理。

    4. 总结及展望

    本文作者创新点为:给出了一种基于CPCI的分布式系统设计,同时提出了基于“抽屉机制”的报文存储机制和地址信息维护策略。文章所述的基于CPCI的分布式系统,可达到64bit总线宽度、264MB/s的峰值带宽,系统中各主机能独立完成数据处理及通信,能够承载语音、数据多种业务,用户还可通过用户接入板与语音业务板所连的PSTN网和数据业务板所连Internet进行数据通信,在通信、军事等领域有着较大的应用前景。为使本通信系统更具大规模实用价值,未来的工作包括:

    (1) 实现一套易操作的远程管理系统,以便完成通信业务的监控,调配;

    (2) 设计支持更多业务类型的CPCI接口板卡,如xDSL,H.264等;

    (3) 在外界干扰较大情况下,通过严格的性能测试以证明系统能够满足电信级的业务需求。

 


  
上一篇:一种ADμC7O26硬件系统开发及其在医疗仪器中的应用
下一篇:一种掌脉图像采集系统的设计和实现

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料