一种基于PCIe信号接口扩展的数据包转发方法及装置与流程

文档序号:14847692发布日期:2018-06-30 16:56阅读:263来源:国知局
一种基于PCIe信号接口扩展的数据包转发方法及装置与流程

本申请涉及通信领域,尤其涉及一种基于PCIe信号接口扩展的数据包转发方法及装置。



背景技术:

PCIe(peripheral component interconnect express,高速串行计算机扩展总线标准)总线作为处理器系统的局部总线,其主要目的是用来连接处理器系统中的终端设备。一般设备的芯片组会提供几个PCIe信号接口,这些接口可以用来外接网卡、显卡、视频音频采集卡、3G卡等终端设备。随着设备的系统性能和功能的日益增长,需要设备能够同时提供对多种功能的支持,即需要更多的终端设备与芯片组相连。但是对于PCIe信号接口来说,一个PCIe信号接口只能连接一台发送设备和一台接收设备,现有的芯片组提供的PCIe信号接口数量有限,因此需要对PCIe信号接口进行扩展,来满足现阶段设备对多种功能的支持。

现有的技术方案是采用PCIe Switch芯片对PCIe信号接口进行扩展,将一组PCIe信号接口扩展成多组PCIe信号接口,以此来连接多个终端设备。但是现有的PCIe Switch芯片是按照规定的功能与性能要求,对电路的布局与布线进行专门的优化,其接口数量是固定的,能够连接的终端设备也是固定的,PCIe Switch芯片的功能比较单一,灵活性较差。



技术实现要素:

有鉴于此,本申请提供一种基于PCIe信号接口扩展的数据包转发方法及装置。

具体地,本申请是通过如下技术方案实现的:

一种基于PCIe信号接口扩展的数据包转发方法,所述方法包括:

当FPGA所连接的终端设备启动时,CPU对FPGA所连接的终端设备进行扫描;

根据扫描结果,向FPGA下发终端设备配置数据包;

FPGA对所述终端设备配置数据包进行解析,并根据PCIe协议对解析得到的配置信息进行存储;

对CPU下发的数据包进行解析,将对所述CPU下发的数据包的解析结果与所述存储的配置信息进行比较,以选择相应的PCIe信号接口,所述PCIe信号接口为通过FPGA内置的接口与CPU的PCIe信号接口相连,将CPU提供的一个PCIe信号接口扩展为M个PCIe信号接口中的任意PCIe信号接口,其中M≥2;

通过所选择的PCIe信号接口,将所述CPU下发的数据包转发到终端设备。

一种基于PCIe信号接口扩展的数据包转发装置,所述装置包括:

设备扫描单元,用于当FPGA所连接的终端设备启动时,CPU对FPGA所连接的终端设备进行扫描;

下发单元,用于根据扫描结果,向FPGA下发终端设备配置数据包;

解析单元,用于FPGA对所述终端设备配置数据包进行解析;

存储单元,用于根据PCIe协议对解析得到的配置信息进行存储;

接口选择单元,用于对CPU下发的数据包进行解析,将对所述CPU下发的数据包的解析结果与所述存储的配置信息进行比较,以选择相应的PCIe信号接口,所述PCIe信号接口为通过FPGA内置的接口与CPU的PCIe信号接口相连,将CPU提供的一个PCIe信号接口扩展为M个PCIe信号接口中的任意PCIe信号接口,其中M≥2;

数据包转发单元,用于通过所选择的PCIe信号接口,将所述CPU下发的数据包转发到终端设备。

通过本申请的技术方案,通过使用FPGA代替了PCIe Switch,避免了PCIe Switch功能单一的缺点,可以根据用户的需求定制PCIe信号接口的数量。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是本申请一示例性实施例示出的一种应用场景示意图;

图2是本申请一示例性实施例示出的一种实现PCI协议的示意图;

图3是本申请一示例性实施例示出的基于PCIe信号接口扩展的数据包转发方法的一种实施流程图;

图4是本申请一示例性实施例示出的一种PCIe信号接口扩展的结构图;

图5是本申请一示例性实施例示出的基于PCIe信号接口扩展的数据包转发的一种结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先对本申请实施例提供的一种基于PCIe信号接口扩展的数据包转发方法进行说明,该方法可以包括以下步骤:

当FPGA所连接的终端设备启动时,CPU对FPGA所连接的终端设备进行扫描;

根据扫描结果,向FPGA下发终端设备配置数据包;

FPGA对所述终端设备配置数据包进行解析,并根据PCIe协议对解析得到的配置信息进行存储;

对CPU下发的数据包进行解析,将对所述CPU下发的数据包的解析结果与所述存储的配置信息进行比较,以选择相应的PCIe信号接口,所述PCIe信号接口为通过FPGA内置的接口与CPU的PCIe信号接口相连,将CPU提供的一个PCIe信号接口扩展为M个PCIe信号接口中的任意PCIe信号接口,其中M≥2;

通过所选择的PCIe信号接口,将所述CPU下发的数据包转发到终端设备。

在背景技术中提到,PCIe总线主要目的是用来连接处理器系统中的终端设备,一般的芯片组会提供几个PCIe信号接口,这些信号接口可以用来外接网卡、显卡、视频音频采集卡、3G卡等终端设备。但是随着设备的系统性能和功能的日益增长,需要设备能够同时提供对多种功能的支持,即需要外接更多的终端设备。对于PCIe信号接口来说,一个PCIe信号接口只能连接一台发送设备和一台接收设备,现有的芯片组提供的PCIe信号接口数量有限,需要对PCIe信号接口进行扩展,来满足现阶段设备对多种功能的支持。但是采用PCIe Switch芯片对PCIe信号接口进行扩展,其接口数量是固定的,能够连接的终端设备也是固定的,功能比较单一,灵活性差。基于上述问题,本申请采用FPGA替代了PCIe Switch芯片,如图1所示,避免了PCIe Switch芯片功能单一的缺点,而且还可以灵活的根据用户的需求,对PCIe信号接口数量进行定制。

具体的在基于PCIe信号接口扩展的数据包转发的过程中,FPGA通过内置的SerDes接口与CPU的PCIe信号接口相连,将CPU提供的一个PCIe信号接口扩展成M个PCIe信号接口,其中M≥2,其中所说扩展后的任意一个PCIe信号接口都可以连接终端设备。当FPGA所连接的终端设备启功时,CPU对FPGA内部的总线拓扑结构以及所连接的终端设备进行扫描;根据扫描得到的FPGA内部的总线拓扑结构以及终端设备逻辑号,向FPGA下发终端设备配置数据包;FPGA对所述终端设备配置数据包进行解析,并根据PCIe协议对解析得到的配置信息进行存储;对CPU下发的数据包进行解析,根据解析得到的终端设备逻辑号与所述存储的配置信息进行比较,以选择相应的PCIe信号接口,所述PCIe信号接口为通过FPGA内置的接口与CPU的PCIe信号接口相连,将CPU提供的一个PCIe信号接口扩展为M个PCIe信号接口中的任意PCIe信号接口;通过所选择的PCIe信号接口,将所述CPU下发的数据包转发到终端设备。为了对本申请进一步说明,提供下列实施例对本申请进行说明:

其中在进行数据包转发前,需要使用FPGA内部的SerDes接口与CPU提供的一个PCIe信号接口相连,使用FPGA实现PCIe协议中物理层、数据链路层、事务层的功能,以实现对PCIe协议的支持。如图2所示,从FPGA的角度来看,在接收方向,CPU下发的PCIe数据包,经过物理层接口、物理层、数据链路层和事务层,最终达到用户层;从FPGA的角度来看,在发送方向,用户层发出的数据,经过事务层、数据链路层、物理层和物理层接口,最终到达FPGA内部的SerDes接口,由FPGA内部的SerDes接口与CPU之间的通道发送给CPU。

如图3所示,为本申请基于PCIe信号接口扩展的数据包转发方法的一种实施流程图,其具体可以包括以下步骤:

S101,当FPGA所连接的终端设备启动时,CPU对FPGA所连接的终端设备进行扫描;

在一实施例中,如图1所示,当与FPGA所连接的任意一台终端设备启动时,例如网卡、显卡、视频音频采集卡、3G卡等终端设备启动时,CPU对FPGA内部的总线拓扑结构以及所连接的终端设备进行扫描。例如其中对于CPU提供的一个PCIe信号接口,其对应的总线在CPU中有一个总线号,假设CPU中主总线的总线号为0,所提供的一个PCIe信号接口对应的总线的总线号为1。在对FPGA内部的总线拓扑结构进行扫描时,通过P2P桥可以连接到另一条PCI总线,通过使用P2P桥,就构筑起了一个层次的、树状的总线拓扑结构,对于上层的总线而言,连接在这条总线上的PCI桥也是一个设备。但是这是一种特殊的设备,它既是上层总线上的一个设备,实际上又是上层总线的延伸。所谓枚举就是从PCI桥开始进行探测和扫描,逐个枚举连接在第一条PCI总线上的所有设备并记录在案,如果其中的某个设备是P2P桥,则又进一步再探测和扫描连接在这个桥上的次级PCI总线。就这样递归下去,直到穷尽系统中的所有PCI设备,即终端设备,最终在内存中建立起代表着这些PCI总线和设备的总线拓扑结构。例如如图4所示,上游接口连接CPU,下游接口连接终端设备,其中对于与上游接口连接的P2P桥,其上级总线的总线号记为1,则其下级总线的总线号记为1-1、1-2,分别对应下游接口连接的P2P桥,在下游端口分别连接终端设备1和终端设备2。当终端设备1启动时,对FPGA内部的总线拓扑结构以及所连接的终端设备进行扫描,其中所述终端设备的设备信息存储在FPGA内存中。当CPU向FPGA下发扫描包时,FPGA在接收到扫描包时,返回所存储的终端设备的设备信息。这样CPU可以得到当前FPGA内部的总线拓扑结构,各节点上的设备,所述设备可以是P2P桥,也可以是终端设备。

S102,根据扫描结果,向FPGA下发终端设备配置数据包;

在一实施例中,根据扫描得到的FPGA内部的总线拓扑结构以及终端设备逻辑号,向FPGA下发终端设备配置数据包。所述终端设备逻辑号包括设备号和功能号。例如上述图4所描述的,在扫描到当前FPGA内部的总线拓扑结构,各节点上的设备时,根据上述信息发送终端设备配置数据包,以便在对数据包转发时,可以查找到相应的PCIe信号接口,转发给相应的终端设备,如终端设备1,其中配置数据包包括总线号、设备号、功能号等路由信息。

S103,FPGA对所述终端设备配置数据包进行解析,并根据PCIe协议对解析得到的配置信息进行存储;

在一实施例中,FPGA对所述终端设备配置数据包进行解析,并根据PCIe协议对解析得到的配置信息进行存储。如上述图4所示,FPGA对终端设备配置数据包进行解析,并在相应的设备上存储解析的结果,存储自身对应的总线号、设备号、功能号等路由信息。例如对于上游接口连接的P2P桥,其会存储总线号1、1-1、1-2,并且存储终端设备1以及终端设备2的相关的设备号和功能号。

S104,对CPU下发的数据包进行解析,将对所述CPU下发的数据包的解析结果与所述存储的配置信息进行比较,以选择相应的PCIe信号接口,所述PCIe信号接口为通过FPGA内置的接口与CPU的PCIe信号接口相连,将CPU提供的一个PCIe信号接口扩展为M个PCIe信号接口中的任意PCIe信号接口,其中M≥2;

在一实施例中,对CPU下发的数据包进行解析,根据解析得到的终端设备逻辑号与所述存储的配置信息进行比较,以选择相应的PCIe信号接口。例如如图4所描述的,上游接口1在接收到CPU下发的数据包时,解析所述下发的数据包,根据解析得到的终端设备逻辑号与存储的路由信息进行比较,例如所述解析得到的终端设备逻辑号与终端设备1相对应,则需要选择相应的PCIe信号接口1-1,所选择的PCIe信号接口1-1连接着终端设备1。根据在与上游接口1连接的P2P桥所存储的总线号1-1,可以知道先发往与下游接口1-1连接的P2P桥,经过与所述P2P桥连接的PCIe信号接口1-1,将下发的数据包转发给终端设备1,其中下游接口1-1即为PCIe信号接口1-1

S105,通过所选择的PCIe信号接口,将所述CPU下发的数据包转发到终端设备。

在一实施例中,经过比较选定PCIe信号接口,例如上述的PCIe信号接口1-1,通过所选择的PCIe信号接口1-1,将所述CPU下发的数据包转发到终端设备1。

通过上述步骤,使用FPGA代替了PCIe Switch,避免了PCIe Switch功能单一的缺点,可以根据用户的需求定制PCIe信号接口的数量。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

与前述基于PCIe信号接口扩展的数据包转发方法的实施例相对应,本申请还提供了基于PCIe信号接口扩展的数据包转发装置的实施例,如图5所示,包括设备扫描单元200、下发单元210、解析单元220、存储单元230、接口选择单元240、数据包转发单元250。

所述设备扫描单元200,用于当FPGA所连接的终端设备启动时,CPU对FPGA所连接的终端设备进行扫描;

所述下发单元210,用于根据扫描结果,向FPGA下发终端设备配置数据包;

所述解析单元220,用于FPGA对所述终端设备配置数据包进行解析;

所述存储单元230,用于根据PCIe协议对解析得到的配置信息进行存储;

所述接口选择单元240,用于对CPU下发的数据包进行解析,将对所述CPU下发的数据包的解析结果与所述存储的配置信息进行比较,以选择相应的PCIe信号接口,所述PCIe信号接口为通过FPGA内置的接口与CPU的PCIe信号接口相连,将CPU提供的一个PCIe信号接口扩展为M个PCIe信号接口中的任意PCIe信号接口,其中M≥2;

所述数据包转发单元250,用于通过所选择的PCIe信号接口,将所述CPU下发的数据包转发到终端设备。

在本申请的一种具体实施方式中,所述扫描单元200具体用于:当FPGA所连接的终端设备启动时,CPU对FPGA内部的总线拓扑结构以及所连接的终端设备进行扫描。

在本申请的一种具体实施方式中,所述下发单元210具体用于:

根据扫描得到的FPGA内部的总线拓扑结构以及终端设备逻辑号,向FPGA下发终端设备配置数据包。

在本申请的一种具体实施方式中,所述接口选择单元240具体用于:

对CPU下发的数据包进行解析,根据解析得到的终端设备逻辑号与所述存储的配置信息进行比较,以选择相应的PCIe信号接口。

上述系统中各个单元的作用实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

本发明可以在由计算机执行的计算值可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1