Pci-e总线分布式系统单板内及单板间数据通讯方法

文档序号:7651970阅读:234来源:国知局
专利名称:Pci-e总线分布式系统单板内及单板间数据通讯方法
技术领域
本发明涉及一种数据通讯方法,特别是指一种PCI-E(PeripheralComponent Interconnect Express,即高速外围组件互连)总线分布式系统单板内及单板间数据通讯方法。
背景技术
在嵌入式通信领域中,高集成度和低成本日益成为设备制造商追求的目标。一个现代分布式通信系统中,通过不同的处理器实现不同的功能,通过这些处理器的分工协作来完成设计者实现整个系统功能的目的。
处理器之间如何实现高效的通信,历来是业界非常重视的问题。现有的基于以太网的通信方式,虽然提供了处理器间大流量通信的解决方案,但成本较高,且不利于空间压缩。现有基于传统PCI(Peripheral ComponentInterconnect,即外围组件互连)接口标准的通信方式,由于总线资源共享的限制,只能有限提高单板的集成度,而且数据传输速率较慢,扩展性不强。
第三代总线技术规格PCI Express(简称为PCI-E)给IT硬件的发展提供一种高性能的总线平台。PCI Express是最新的总线和接口标准,它原来的名称为“3GIO”,是由英特尔提出的,很明显英特尔的意思是它代表着下一代I/O接口标准。交由PCI-SIG(PCI特殊兴趣组织)认证发布后才改名为“PCI Express”。这个新标准将全面取代现行的PCI和AGP,最终实现总线标准的统一。
首先,PCI Express最大的优势就在于带宽的增加和灵活的扩展性能。与PCI所有设备共享同一条总线资源不同,PCI Express总线采用点对点技术,能够为每一块设备分配独享通道带宽,不需要在设备之间共享带宽,充分保障各设备的带宽资源,提高数据传输速率。其次PCI Express还具有灵活的扩展性、热插拔、多点虚拟通道、错误处理和错误报告等等优势。
对于分布式系统,对系统内各单元的分工协作要求较高,上层应用必须工作在可靠的传输层通信协议之上。现有的使用基于可靠网络MAC帧的传输层协议(Reliable Mac Protocol,以下简称RMP)进行通信,主要应用于网络拓扑简单的局域网中,上层发送/接收的都是一条完整的数据包,无须标准IP协议的ARP解析和路由转发功能。RMP协议负责建立端到端的通信连接,实现并包、按序发送、超时重传、分片重组、链路维护的功能。该协议主要应用于网络数据传输。
现有的PCI Express总线结构如图1所示,在单板内部多个处理器之间通过PCI Express总线连接。单板上只有一个处理器(主处理器)对外出千兆网口,负责对外通信;单板上其它处理器要对外通信,必须通过主处理器的转发才能完成。
在不同通信网络中实现跨网络通信的一般方法,是采用路由技术,通过在不同网络的两台主机之间设置相关的路由来完成。该方法的缺点是不同网络上的主机必须清楚其他主机通信网络组网的细节,不能方便的进行扩展。
现有的基于PCI-E总线的分布式存储系统,基于共享内存通信的一般方法,是在驱动中构造发送和接收两个环行队列管理缓存,在发送和接收中使用多次直接的内存拷贝方式实现数据传输,非常消耗CPU的资源,效率低下。

发明内容
针对现有技术中的缺陷和不足,本发明的目的是提出一种基于PCI-E总线分布式系统板内及板间数据通讯方法,包括基于PCI-E总线分布式系统板内数据发送方法、基于PCI-E总线分布式系统板内数据接收方法以及基于PCI-E总线分布式系统板间数据通信方法,能够在降低拷贝次数或实现0拷贝通信,降低CPU开销,提高处理器间的通讯能力。
为了达到上述目的,本发明提出了一种PCI-E总线分布式系统单板内数据发送方法,包括步骤1、为单板上每一处理器分配MAC地址,并为每一处理器分配一个标识;步骤2、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E总线的处理器的个数;每一通道具有一环形队列作为数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,该数据缓冲描述符中至少包括了其对应的共享内存区的数据缓冲的地址和下一个数据缓冲的地址;为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;步骤3、当发送数据时,先确定目的处理器的标识,并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列第一个空闲共享内存区;步骤4、将待发送数据存储在该空闲共享内存区;步骤5、将该空闲共享内存区标识为已用,并将控制头地址字段移动到下一可用空闲共享内存区。
其中,所述步骤3具体为步骤31、当发送数据时,确定目的处理器的标识;步骤32、并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列;步骤33、判断该数据接收队列是否有空闲的共享内存区,如果是则进入步骤34;否则丢弃该数据,并返回错误信息;步骤34、判断空闲的共享内存区的数量是否为1个,如果是则丢弃该数据,并返回错误信息;否则进入步骤4。
其中,所述步骤4具体为将待发送数据直接拷贝或通过直接内存存储控制器传输到上述空闲的共享内存区。
同时,本发明还提出了一种PCI-E总线分布式系统单板内数据接收方法,包括步骤A、为单板上每一处理器分配MAC地址,并为每一处理器分配一个标识;步骤B、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E总线的处理器的个数;每一通道具有一环形队列作为数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,并为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;步骤C、当接收数据时,根据当前数据流量采用中断或定时的方式唤醒一驱动线程;步骤D、该驱动线程将带有数据的共享内存区从环行队列中摘除;步骤E、将上述有数据的共享内存区提交上层协议栈处理;处理完毕后归还该共享内存区。
其中,上述步骤D还包括该驱动线程申请新的空闲共享内存区,并用新的空闲共享内存区取代环行队列中有数据的共享内存区的位置。
同时,本发明还提出了一种PCI-E总线分布式系统单板间数据通讯方法,包括步骤(1)、为每一单板上的每一处理器分配MAC地址,并为每一处理器分配一个标识;步骤(2)、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E总线的处理器的个数;每一通道具有一环形队列作为数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,该数据缓冲描述符中至少包括了其对应的共享内存区的数据缓冲的地址和下一个数据缓冲的地址;为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;步骤(3)、将单板上每一从处理器及外部网口配置IP地址,从处理器IP地址网段为该单板的外部网口的IP地址网段的子集,且外部网口IP地址不属于从处理器IP地址网段;将每一单板上的主处理器作为该单板内从处理器对外通信的网关;步骤(4)、主处理器加载ARP代理服务,响应外部网络向从处理器发出的ARP解析请求。
其中,所述步骤(3)具体为步骤(31)、将单板上每一从处理器及外部网口配置IP地址,从处理器IP地址网段为该单板的外部网口的IP地址网段的子集,且外部网口IP地址不属于从处理器IP地址网段;步骤(32)、从处理器启动时,建立PCI-E通信通道,主动向主处理器请求配置,获取主处理器的内部网口IP地址,并将该IP地址设置为向外部网络通信的默认网关;
步骤(33)、从处理器启动后,主动将自己的内部PCI-E虚拟网口IP地址通知主处理器。
其中,该方法可以包括步骤(5)、当向单板上的从处理器发送数据时,由于单板主处理器上加载了ARP代理,外部网络认为该单板的外部网口即为从处理器的实际网口,将该数据发送到该单板的外部网口;步骤(6)、该单板的主处理器读取路由表并确定路由后将数据转发到单板内部网口,并将目的IP地址解析为目的MAC地址,并根据目的MAC地址确定目的从处理器的标识;步骤(7)、根据该标识查询本地的通道信息表获得目的从处理器的数据接收队列第一个空闲共享内存区;步骤(8)、将待发送数据存储在该空闲共享内存区;步骤(9)、将该空闲共享内存区标识为已用,并将控制头地址字段移动到下一可用空闲共享内存区。
其中,上述步骤(7)具体为步骤(71)、当发送数据时,确定目的处理器的标识;步骤(72)、并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列;步骤(73)、判断该数据接收队列是否有空闲的共享内存区,如果是则进入步骤(74);否则丢弃该数据,并返回错误信息;步骤(74)、判断空闲的共享内存区的数量是否为1个,如果是则丢弃该数据,并返回错误信息;否则进入步骤(8)。
其中,该方法也可以包括
步骤(5`)当从处理器接收数据时,根据当前数据流量采用中断或定时的方式唤醒一驱动线程;步骤(6`)、该驱动线程将带有数据的共享内存区从环行队列中摘除;步骤(7`)、将上述有数据的共享内存区提交上层协议栈处理;处理完毕后归还该共享内存区。
本发明提出了一种PCI-E总线分布式系统单板内数据发送方法和接收方法以及单板间数据通信方法。现有技术中,在发送和接收中使用多次直接的内存拷贝方式实现数据传输,非常消耗CPU的资源,效率低下。本发明提出的单板内的接收和发送的整个数据传输过程仅仅只经历了一次内存拷贝,如果采用DMA(Direct Memory Access,直接内存存取)技术甚至可以实现无内存拷贝,可以充分发挥PCI Express总线高效的共享内存通信的优势。其中该数据接收方法能够实现0拷贝接收。发送/接收的操作是完全独立的,由于在设计中采用PCI Express总线共享内存的单环行队列设计,实现了PCI Express驱动发送缓存、PCI Express驱动接收缓存和虚拟网络上层协议栈缓存三者的复用,在数据传送中减少了多余的内存拷贝,有利于充分发挥PCI Express总线的高带宽优势,提高了处理器间的通讯能力。
同时本发明还提出了一种单板之间数据通讯的方法,对内采用了上述的单板内数据发送和接收方法,提供特殊通信通道满足内部处理器之间高速通信;对外网络设计中采用了代理ARP技术,对外部主机看来单板内各处理单元如同连接在本地局域网中,屏蔽了单板内部PCI Express通信的差异,可以方便在外部网络对单板内各处理单元进行监控,调试和配置管理。
本发明可以将分布式系统的全部功能集成到一块或少量几块单板上,例如在电信领域中可以使用一块单板集成原先多块单板甚至一个网元的功能,通过节省单板对外千兆网口的数量,可以有效降低设备制造商的生产成本,而且该方法对业务(上层软件)没有影响,现有的所有上层软件都可以平稳移植。
下面结合附图,对本发明的具体实施方式
作进一步的详细说明。对于所属技术领域的技术人员而言,从对本发明的详细说明中,本发明的上述和其他目的、特征和优点将显而易见。


图1是现有的基于PCI Express通信系统结构图;图2是本发明方法中一条基于PCI Express的物理通道设计图;图3是本发明方法中基于PCI Express共享内存通信消息结构图;图4显示了本发明中单板内通信的协议处理框图;图5是本发明中板间通信的网络配置图;图6是本发明中板间通信初始化流程图。
具体实施例方式
下面结合附图对本发明进行详细的说明。
实现本发明的硬件结构如图1所示,属于现有技术,单板内部处理器之间通过PCI Express总线连接。单板上只有一个处理器(主处理器)对外出千兆网口,负责单板对外网络的通信,单板上其它从处理器对外通信,都必须经过主处理器的转发。
本发明提出的一种PCI-E总线分布式系统单板内数据发送方法和数据接收方法的优选实施例如图2所示,采用一个环形队列作为接收队列。
其中,本发明提出的一种基于PCI-E总线分布式系统的数据发送方法包括
步骤1、为单板上每一处理器分配MAC地址,并为每一处理器分配一个标识;步骤2、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E总线的处理器的个数;每一通道具有一环形队列作为数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,该数据缓冲描述符的结构可以如图3所示,包括了其对应的共享内存区的数据缓冲的地址和下一个数据缓冲的地址以及消息长度和消息地址;为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;步骤3、当发送数据时,先确定目的处理器的标识,并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列第一个空闲共享内存区;步骤4、将待发送数据存储在该空闲共享内存区;步骤5、将该空闲共享内存区标识为已用,并将控制头地址字段移动到下一可用空闲共享内存区。
需要注意,发送/接收的操作是完全独立的,但只有接收有共享内存区作为缓存,为了保证环行队列操作的正确性,发送在判断是否有空闲共享内存区时,需要保留一个共享内存区作为临界区。因此,所述步骤3具体为步骤31、当发送数据时,确定目的处理器的标识;步骤32、并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列;步骤33、判断该数据接收队列是否有空闲的共享内存区,如果是则进入步骤34;否则丢弃该数据,并返回错误信息;
步骤34、判断空闲的共享内存区的数量是否为1个,如果是则丢弃该数据,并返回错误信息;否则进入步骤4。
其中,数据拷贝的方式可以是将待发送数据直接拷贝或通过直接内存存储控制器传输到上述空闲的共享内存区。
本发明提出的一种PCI-E总线分布式系统单板内数据接收方法的优选实施例中包括步骤A、为单板上每一处理器分配MAC地址,并为每一处理器分配一个标识;步骤B、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E总线的处理器的个数;为每一通道具有一数据接收队列,每个环行队列由PCI-E通信的共享内存区组成,并为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;步骤C、当接收数据时,根据当前数据流量采用中断或定时的方式唤醒一驱动线程;步骤D、该驱动线程将带有数据的共享内存区从环行队列中摘除;步骤E、将上述有数据的共享内存区提交上层协议栈处理;处理完毕后归还该共享内存区。
其中,上述步骤D还包括该驱动线程申请新的空闲共享内存区,并用新的空闲共享内存区取代环行队列中有数据的共享内存区的位置。
需要注意,驱动提供的网络设备接口是与操作系统网络部分相关的,必须注意不同操作系统对网络设备接口的差异,提供不同的接口给上层协议栈。
还需要注意,单板内部各处理器都支持标准TCP/IP协议簇和RMP协议,底层设备接口使用上述步骤提供的标准网络设备接口,使单板内处理器工作在基于PCI Express的虚拟网络之上,可以以各种网络协议进行通信。如附图4所示,可以在板内处理器间通信时默认采用标准协议,在通信握手时根据具体物理通道协商采用哪种上层协议,当两个通信的处理器处于一个单板内且有PCI Express通道,则建立RMP通信链路,数据内容以特定的二层的网络帧类型在驱动中加以区分,和标准的协议数据不同,主要承载上层的业务单播消息。通过RMP协议实现进一步提高性能和可靠性。对多播,单板间通信以及其他方式的网络通信,按标准的TCP/IP网络协议进行处理。
本发明提出的基于PCI-E总线的分布式系统单板之间的数据通讯方法,实现的硬件结构如图5所示,每一单板只有一个对外通信的外部网口。每一处理器配置IP地址,其中每一单板的外部网口的IP地址与单板内所有处理器的IP地址不属于同一子网,且主处理器与该单板上的其他从处理器的IP地址属于同一子网。
本发明提出的基于PCI-E总线的分布式系统单板之间的数据通讯方法中,对内采用了上述的单板内数据发送和接收方法,提供特殊通信通道满足内部处理器之间高速通信;对外网络设计中采用了代理ARP技术,对外部主机看来单板内各处理单元如同连接在本地局域网中,屏蔽了单板内部PCI Express通信的差异。
本发明提出的基于PCI-E总线的分布式系统单板之间的数据通讯方法优选实施例包括
步骤(1)、为每一单板上的每一处理器分配MAC地址,并为每一处理器分配一个标识;步骤(2)、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E总线的处理器的个数;为每一通道具有一数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,该数据缓冲描述符中至少包括了其对应的共享内存区的数据缓冲的地址和下一个数据缓冲的地址;为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;步骤(3)、将单板上每一从处理器及外部网口配置IP地址,从处理器IP地址网段为该单板的外部网口的IP地址网段的子集,且外部网口IP地址不属于从处理器IP地址网段;将每一单板上的主处理器作为该单板内从处理器对外通信的网关;例如,单板外部网口IP地址的通信子网为A,单板内部处理器的IP地址的通信子网为B,则A网段包括B网段地址,B网段只是A网段的一个子集,且A和B不冲突;举例假设A网段为192.168.X.X网段,B网段为192.168.255.X网段,但A中不能配置B子网的IP地址;步骤(4)、主处理器加载ARP服务,响应ARP解析请求。
其中,上述步骤3可以在单板启动的时候可以采用如图6所示的流程完成配置,具体步骤为步骤(31)、单板启动时主处理器先启动,主处理器建立PCI-E通信通道;配置单板的外部网口的IP地址和内部虚拟网口IP地址和从处理器IP地址;将单板上每一从处理器及外部网口配置IP地址,从处理器IP地址网段为该单板的外部网口的IP地址网段的子集,且外部网口IP地址不属于从处理器IP地址网段;
步骤(32)、从处理器启动时,建立PCI-E通信通道;步骤(33)、从处理器通过PCI-E通讯主动向主处理器请求配置,获取主处理器的内部网口IP地址;步骤(34)、从处理器将该IP地址设置为向外部网络通信的默认网关;步骤(35)、从处理器通过虚拟网口,主动将自己的内部PCI-E虚拟网口IP地址和MAC地址通知主处理器;步骤(36)、主处理器根据从处理器上报的IP地址和MAC信息设置ARP代理对应表。
其中,该方法在单板间通讯时,采用了代理ARP技术,对外部主机看来单板内各处理单元如同连接在本地局域网中,屏蔽了单板内部PCIExpress通信的差异。且该方法在单板间通讯的数据到达单板主处理后,可以应用上述的单板内数据发送和接收的方法进行通讯。
其中,数据发送的方法具体为步骤(5)、当外部网络向单板上的从处理器发送数据时,由于单板主处理器上加载了ARP代理,通过单板主处理器上的ARP代理的″欺骗″,外部网络会误认为单板外部网口就是单板从处理器的实际网口,从而将该数据发送到该单板的外部网口;步骤(6)、该单板的主处理器读取路由表并确定路由后将数据转发到单板内部网口,并将目的IP地址解析为目的MAC地址,并根据目的MAC地址确定目的从处理器的标识;步骤(7)、根据该标识查询本地的通道信息表获得目的从处理器的数据接收队列第一个空闲共享内存区;步骤(8)、将待发送数据存储在该空闲共享内存区;
步骤(9)、将该空闲共享内存区标识为已用,并将控制头地址字段移动到下一可用空闲共享内存区。
其中,上述步骤(7)具体为步骤(71)、当发送数据时,确定目的处理器的标识;步骤(72)、并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列;步骤(73)、判断该数据接收队列是否有空闲的共享内存区,如果是则进入步骤(74);否则丢弃该数据,并返回错误信息;步骤(74)、判断空闲的共享内存区的数量是否为1个,如果是则丢弃该数据,并返回错误信息;否则进入步骤(8)。
其中,数据接收的方法具体为步骤(5`)当从处理器接收数据时,根据当前数据流量采用中断或定时的方式唤醒一驱动线程;步骤(6`)、该驱动线程将带有数据的共享内存区从环行队列中摘除;步骤(7`)、将上述有数据的共享内存区提交上层协议栈处理;处理完毕后归还该共享内存区。
其中,上述步骤(6`)还包括该驱动线程申请新的空闲共享内存区,并用新的空闲共享内存区取代环行队列中有数据的共享内存区的位置。
当然,本发明还可有其他实施例,在不背离本发明精神及其实质的情况下,所属技术领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。
权利要求
1.PCI-E总线分布式系统单板内数据发送方法,包括步骤1、为单板上每一处理器分配MAC地址,并为每一处理器分配一个标识;步骤2、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E即高速外围组件互连总线的处理器的个数;每一通道具有一环形队列作为数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,该数据缓冲描述符中至少包括了其对应的共享内存区的数据缓冲的地址和下一个数据缓冲的地址;为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;步骤3、当发送数据时,先确定目的处理器的标识,并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列第一个空闲共享内存区;步骤4、将待发送数据存储在该空闲共享内存区;步骤5、将该空闲共享内存区标识为已用,并将控制头地址字段移动到下一可用空闲共享内存区。
2.根据权利要求1所述的PCI-E总线分布式系统单板内数据发送方法,其特征在于,所述步骤3具体为步骤31、当发送数据时,确定目的处理器的标识;步骤32、并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列;步骤33、判断该数据接收队列是否有空闲的共享内存区,如果是则进入步骤34;否则丢弃该数据,并返回错误信息;步骤34、判断空闲的共享内存区的数量是否为1个,如果是则丢弃该数据,并返回错误信息;否则进入步骤4。
3.根据权利要求1或2所述的PCI-E总线分布式系统单板内数据发送方法,其特征在于,所述步骤4具体为将待发送数据直接拷贝或通过直接内存存储控制器传输到上述空闲的共享内存区。
4.PCI-E总线分布式系统单板内数据接收方法,包括步骤A、为单板上每一处理器分配MAC地址,并为每一处理器分配一个标识;步骤B、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E即高速外围组件互连总线的处理器的个数;每一通道具有一环形队列作为数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,并为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;步骤C、当接收数据时,根据当前数据流量采用中断或定时的方式唤醒一驱动线程;步骤D、该驱动线程将带有数据的共享内存区从环行队列中摘除;步骤E、将上述有数据的共享内存区提交上层协议栈处理;处理完毕后归还该共享内存区。
5.根据权利要求4所述的PCI-E总线分布式系统单板内数据接收方法,其特征在于,上述步骤D还包括该驱动线程申请新的空闲共享内存区,并用新的空闲共享内存区取代环行队列中有数据的共享内存区的位置。
6.PCI-E总线分布式系统单板间数据通讯方法,包括步骤(1)、为每一单板上的每一处理器分配MAC地址,并为每一处理器分配一个标识;步骤(2)、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E即高速外围组件互连总线的处理器的个数;每一通道具有一环形队列作为数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,该数据缓冲描述符中至少包括了其对应的共享内存区的数据缓冲的地址和下一个数据缓冲的地址;为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;步骤(3)、将单板上每一从处理器及外部网口配置IP地址,从处理器IP地址网段为该单板的外部网口的IP地址网段的子集,且外部网口IP地址不属于从处理器IP地址网段;将每一单板上的主处理器作为该单板内从处理器对外通信的网关;步骤(4)、主处理器加载ARP代理服务,响应外部网络向从处理器发出的ARP解析请求。
7.根据权利要求6所述的PCI-E总线分布式系统单板间数据通讯方法,其特征在于,所述步骤(3)具体为步骤(31)、单板启动时主处理器先启动,主处理器建立PCI-E通信通道;配置单板的外部网口的IP地址和内部虚拟网口IP地址和从处理器IP地址;将单板上每一从处理器及外部网口配置IP地址,从处理器IP地址网段为该单板的外部网口的IP地址网段的子集,且外部网口IP地址不属于从处理器IP地址网段;步骤(32)、从处理器启动时,建立PCI-E通信通道,主动向主处理器请求配置,获取主处理器的内部虚拟网口IP地址,并将该IP地址设置为向外部网络通信的默认网关;步骤(33)、从处理器启动后,主动将自己的内部PCI-E虚拟网口IP地址通知主处理器。
8.根据权利要求6或7所述的PCI-E总线分布式系统单板间数据通讯方法,其特征在于,该方法还包括步骤(5)、当外部网络向单板上的从处理器发送数据时,由于单板主处理器上加载了ARP代理,外部网络认为单板外部网口就是单板从处理器的实际网口,将该数据发送到该单板的外部网口;步骤(6)、该单板的主处理器读取路由表并确定路由后将数据转发到单板内部网口,并将目的IP地址解析为目的MAC地址,并根据目的MAC地址确定目的从处理器的标识;步骤(7)、根据该标识查询本地的通道信息表获得目的从处理器的数据接收队列第一个空闲共享内存区;步骤(8)、将待发送数据存储在该空闲共享内存区;步骤(9)、将该空闲共享内存区标识为已用,并将控制头地址字段移动到下一可用空闲共享内存区。
9.根据权利要求8所述的PCI-E总线分布式系统单板间数据通讯方法,其特征在于,上述步骤(7)具体为步骤(71)、当发送数据时,确定目的处理器的标识;步骤(72)、并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列;步骤(73)、判断该数据接收队列是否有空闲的共享内存区,如果是则进入步骤(74);否则丢弃该数据,并返回错误信息;步骤(74)、判断空闲的共享内存区的数量是否为1个,如果是则丢弃该数据,并返回错误信息;否则进入步骤(8)。
10.根据权利要求6或7所述的PCI-E总线分布式系统单板间数据通讯方法,其特征在于,该方法还包括步骤(5′)当从处理器接收数据时,根据当前数据流量采用中断或定时的方式唤醒一驱动线程;步骤(6′)、该驱动线程将带有数据的共享内存区从环行队列中摘除;步骤(7′)、将上述有数据的共享内存区提交上层协议栈处理;处理完毕后归还该共享内存区。
全文摘要
本发明公开了一种基于PCI-E总线分布式系统板内及板间数据通讯方法,针对现有技术中数据多次拷贝的问题而发明,包括基于PCI-E总线分布式系统板内数据发送方法、基于PCI-E总线分布式系统板内数据接收方法以及基于PCI-E总线分布式系统板间数据通信方法,采用PCI Express总线共享内存的单环行队列设计,实现了PCI Express驱动发送缓存、PCIExpress驱动接收缓存和虚拟网络上层协议栈缓存三者的复用。还提出了一种单板之间数据通讯的方法,对内采用了上述的单板内数据发送和接收方法,对外网络设计中采用了代理ARP技术,对外部主机看来单板内各处理单元如同连接在本地局域网中。本发明应用于基于PCI-E总线分布式系统。
文档编号H04L12/54GK101043510SQ200710097799
公开日2007年9月26日 申请日期2007年4月29日 优先权日2007年4月29日
发明者刘忱, 吴应祥, 童小九, 袁进坤, 闫新成 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1