一种基于PCIe数据交换的通信方法及系统技术方案

技术编号:8722595 阅读:185 留言:0更新日期:2013-05-22 16:06
本发明专利技术公开了一种基于PCIe数据交换的通信方法及系统。该方法包括:步骤1,启动PCIe交换机,并对与所述PCIe交换机进行通信的处理机和PCIe终端进行PCIe的设备搜索和配置;步骤2,所述处理机或PCIe终端根据路由信息向所述PCIe交换机端口发送PCIe读写请求,所述端口使用兼容标准PCIe链路层协议的包格式和兼容标准PCIe路由的可扩展路由方式,将所述PCIe读写请求构造为数据包,并将其发送至对应端口;步骤3,所述对应端口将所述数据包还原为PCIe读写请求,并将其发送至处理机或PCIe终端。本发明专利技术通过扩展PCIe协议,实现了基于PCIe链路的多处理机间通信,构建任意拓扑的可扩展互连网络。

【技术实现步骤摘要】

本专利技术涉及一种基于PCIe数据交换的通信方法及系统,特别是涉及一种通过扩展PCIe协议实现的多处理机环境下数据交换方法及数据交换系统,还涉及对标准PCIe的兼容,实现基于PCIe的I/O设备扩展。
技术介绍
PC1-Express总线协议(简称PCIe)继承自PC1、PCI_x协议,是当前计算机系统中主流的I/o系统总线。相比PCI和PC1-X,PCIe总线具有更高的高带宽,PCIe2.0规范的单路(lane)单向带宽就已达到5Gpbs,PCIe3.0规范更是达到了 8Gbps。由于是串行传输协议,因此PCIe总线可以实现较长的传输距离,甚至可以通过使用光模块,达到上百米的传输距离。此外,PCIe总线还提供了丰富的服务质量(QoS)特性,和点对点链路可靠性保证。作为PC1、PC1-x总线的延续,PCIe总线主要用于扩展I/O资源。目前市场上均为符合PCIe标准的PCIe交换机,它们可以通过级联构成树形拓扑,处理机是树的根,而I/O设备则是树的叶子。目前构造的树形拓扑可以有多个根,不同的根拥有不同的子树,但根与根之间不能通信。这些子树之间可以共用中间的节点(PCIe交换机),但一个叶子(PCIe终端设备)仅能归属于一个子树。因此,标准PCIe交换机构成的网络,只是一个或若干个功能独立的子树的集合,子树之间并无数据交换,当然这已经满足了在I/O扩展方面的需要。但是从带宽、传输距离、服务质量、可靠性等方面看,PCIe总线除了实现I/O设备的扩展外,还适合于构造系统互连网络,实现多台计算机间的高速互连。然而PCIe总线严格遵循树形拓扑,终端叶子节点之间无法直接通信,也就无法用于构造复杂拓扑的网络。为了使两个处理机之间能够直接通信,出现了非透明桥技术(NTB:non-transparentbridge),该技术实现了两个处理机地址空间的相互映射,使得地址空间逻辑上统一。但是即使利用NTB技术,PCIe总线的ID路由或物理地址路由也极大限制了系统的扩展性。所谓ID路由使用PCIe中定义的ID号,ID号由{总线号,设备号,功能号}组成。PCIe的总线号最大256个,一个总线上可以有32个设备,一个设备可以有8个功能,仅从ID号上看,系统里最大支持8192个设备的存在,也就是说,假设能够做处理器间互连,那么最大的系统规模为8192 (处理器是设备,因此功能号没有用处)。事实上,系统并达不到8192的规模,因为树形拓扑中的非叶子节点会占用总线号,每占用一个总线号,就会减少32个设备,而树形拓扑中恰恰又存在许多的非叶子节点(假设有8192个节点,使用32端口 PCIe交换机,就需要至少265个交换机,占用265个总线号)。物理地址路由同样存在问题,在PCIe协议中要求所有的设备都存在于一个内存空间内,我们知道一个处理器往往要带4GB的内存(服务器中会达到16GB),如果互连的是处理器,以64位系统为例(目前的处理器能发出的物理地址最大为40位),那么能包含的处理器数量仅有24°/4G=28=256个。本专利技术旨在解除PCIe总线的拓扑和路由限制,设计实现一种PCIe数据交换技术,使得PCIe总线在扩展I/O设备的同时,实现多处理机间的通信,构建任意拓扑的可扩展互 连网络。
技术实现思路
为解决上述PCIe总线的拓扑和路由限制的问题,实现多处理机间的通信和构建任意拓扑的可扩展互连网络的目的。本专利技术提供了一种基于PCIe数据交换的通信方法,该方法包括:步骤1,启动PCIe交换机,并对与所述PCIe交换机进行通信的处理机和PCIe终端进行PCIe的设备搜索和配置;步骤2,所述处理机或所述PCIe终端根据路由信息向所述PCIe交换机端口发送PCIe读写请求,所述端口使用兼容标准PCIe链路层协议的包格式和兼容标准PCIe路由的可扩展路由方式,将所述PCIe读写请求构造为数据包,并将其发送至对应端口 ;步骤3,所述对应端口将所述数据包还原为PCIe读写请求,并将其发送至处理机或所述PCIe终端。如果发送PCIe读写请求的是处理机,则所述步骤2包括:步骤21,所述处理机根据路由信息向其下一级PCIe交换机的上游端口的单PCI桥配置空间发送PCIe读写请求;步骤22,所述上游端口的上游输出端口路由单元使用PCIe读写请求的PCIe终端的地址查询地址端口路由表,获得下游端口号,并使用该下游端口号将所述PCIe读写请求构造为第一数据包,所述上游端口发送该第一数据包至本地交叉开关的接收虚通道模块的请求虚通道;步骤23,所述本地交叉开关的交换子模块将该第一数据包发送至所述下游端口 ;如果发送PCIe读写请求的是处理机,且PCIe读写请求是PCIe写请求,则所述步骤3包括:步骤31,所述下游端口将所述第一数据包还原为PCIe写请求,若与下游端口相连的是下一级PCIe交换机的上游端口,则将该PCIe写请求发送给该上游端口 ;若与所述下游端口相连的是PCIe终端,则将该PCIe写请求发送给该PCIe终端。如果发送PCIe读写请求的是处理机,且PCIe读写请求是PCIe读请求,则所述步骤3包括:步骤31,所述下游端口将所述第一数据包还原为PCIe读请求,若与下游端口相连的是下一级PCIe交换机的上游端口,则将该PCIe读请求发送给该上游端口 ;若与下游端口相连的是PCIe终端,则将该PCIe读请求发送给该PCIe终端;步骤32,所述PCIe终端根据路由信息向其上一级PCIe交换机的下游端口发送携带的PCIe读请求ID号的PCIe响应数据;步骤33,所述下游端口的下游输出端口路由单元使用PCIe响应数据的PCIe读请求ID号查询源ID端口路由表,获取上游端口号,并使用该上游端口号将PCIe响应数据构造为第一数据包,所述下游端口发送该第一数据包至本地交叉开关的接收虚通道模块的应答虚通道;步骤34,所述本地交叉开关的交换子模块将该第一数据包发送至上游端口 ;步骤35,所述上游端口将该第一数据包还原为PCIe响应数据,若与上游端口相连的是上一级PCIe交换机的下游端口,则将PCIe响应数据发送给该下游端口 ;若与上游端口相连的是处理机,则将PCIe响应数据发送给该处理机。如果发送PCIe读写请求的是PCIe终端,则所述步骤2包括:步骤221,所述PCIe终端根据路由信息向其上一级PCIe交换机的下游端口的多PCI桥配置空间单元发送PCIe读写请求;步骤222,所述下游端口使用PCIe读写请求中的处理机地址与多PCI桥配置空间单元中各个PCI桥配置空间地址进行比对,获得命中PCI桥配置空间对应的上游端口号,并使用该上游端口号将所述PCIe读写请求构造为第一数据包,下游端口发送该第一数据包至本地交叉开关的接收虚通道模块的请求虚通道;步骤223,所述本地交叉开关的交换子模块将该第一数据包发送至上游端口。如果发送PCIe读写请求的是PCIe终端,且PCIe读写请求是PCIe写请求,则所述步骤3包括:步骤331,所述上游端口将该第一数据包还原为PCIe写请求,若与所述上游端口相连的是上一级PCIe交换机的下游端口,则将PCIe写请求发送给该下游端口 ;若与上游端口相连的是处理机,则将PCIe写请求发送给该处理机。如果发送PCIe读写请求的是PCIe终端,且本文档来自技高网
...

【技术保护点】
一种基于PCIe数据交换的通信方法,其特征在于,包括:步骤1,启动PCIe交换机,并对与所述PCIe交换机进行通信的处理机和PCIe终端进行PCIe的设备搜索和配置;步骤2,所述处理机或所述PCIe终端根据路由信息向所述PCIe交换机端口发送PCIe读写请求,所述端口使用兼容标准PCIe链路层协议的包格式和兼容标准PCIe路由的可扩展路由方式,将所述PCIe读写请求构造为数据包,并将其发送至对应端口;步骤3,所述对应端口将所述数据包还原为PCIe读写请求,并将其发送至处理机或所述PCIe终端。

【技术特征摘要】
1.一种基于PCIe数据交换的通信方法,其特征在于,包括: 步骤I,启动PCIe交换机,并对与所述PCIe交换机进行通信的处理机和PCIe终端进行PCIe的设备搜索和配置; 步骤2,所述处理机或所述PCIe终端根据路由信息向所述PCIe交换机端口发送PCIe读写请求,所述端口使用兼容标准PCIe链路层协议的包格式和兼容标准PCIe路由的可扩展路由方式,将所述PCIe读写请求构造为数据包,并将其发送至对应端口 ; 步骤3,所述对应端口将所述数据包还原为PCIe读写请求,并将其发送至处理机或所述PCIe终端。2.如权利要求1所述的基于PCIe数据交换的通信方法,其特征在于,如果发送PCIe读写请求的是处理机,则所述步骤2包括: 步骤21,所述处理机根据路由信息向其下一级PCIe交换机的上游端口的单PCI桥配置空间发送PCIe读写请求; 步骤22,所述上游端口的上游输出端口路由单元使用PCIe读写请求的PCIe终端的地址查询地址端口路由表,获得下游端口号,并使用该下游端口号将所述PCIe读写请求构造为第一数据包,所述上游端口发送该第一数据包至本地交叉开关的接收虚通道模块的请求虚通道; 步骤23,所述本地交叉开关的交换子模块将该第一数据包发送至所述下游端口。3.如权利要求2所述的基于PCIe数据交换的通信方法,其特征在于,如果发送PCIe读写请求的是处理机,且PCIe读写请求是PCIe写请求,则所述步骤3包括: 步骤31,所述下游端口将所述第一数据包还原为PCIe写请求,若与下游端口相连的是下一级PCIe交换机的上游端口,则将该PCIe写请求发送给该上游端口 ;若与所述下游端口相连的是PCIe终端,则将该PCIe写请求发送给该PCIe终端。4.如权利要求3所述的基于PCIe数据交换的通信方法,其特征在于,如果发送PCIe读写请求的是处理机,且PCIe读写请求是PCIe读请求,则所述步骤3包括: 步骤31,所述下游端口将所述第一数据包还原为PCIe读请求,若与下游端口相连的是下一级PCIe交换机的上游端口,则将该PCIe读请求发送给该上游端口 ;若与下游端口相连的是PCIe终端,则将该PCIe读请求发送给该PCIe终端; 步骤32,所述PCIe终端根据路由信息向其上一级PCIe交换机的下游端口发送携带的PCIe读请求ID号的PCIe响应数据; 步骤33,所述下游端口的下游输出端口路由单元使用PCIe响应数据的PCIe读请求ID号查询源ID端口路由表,获取上游端口号,并使用该上游端口号将PCIe响应数据构造为第一数据包,所述下游端口发送该第一数据包至本地交叉开关的接收虚通道模块的应答虚通道; 步骤34,所述本地交叉开关的交换子模块将该第一数据包发送至上游端口 ; 步骤35,所述上游端口将该第一数据包还原为PCIe响应数据,若与上游端口相连的是上一级PCIe交换机的下游端口,则将PCIe响应数据发送给该下游端口 ;若与上游端口相连的是处理机,则将PCIe响应数据发送给该处理机。5.如权利要求1所述的基于PCIe数据交换的通信方法,其特征在于,如果发送PCIe读写请求的是PCIe终端,则所述步骤 2包括:步骤221,所述PCIe终端根据路由信息向其上一级PCIe交换机的下游端口的多PCI桥配置空间单元发送PCIe读写请求; 步骤222,所述下游端口使用PCIe读写请求中的处理机地址与多PCI桥配置空间单元中各个PCI桥配置空间地址进行比对,获得命中PCI桥配置空间对应的上游端口号,并使用该上游端口号将所述PCIe读写请求构造为第一数据包,下游端口发送该第一数据包至本地交叉开关的接收虚通道模块的请求虚通道; 步骤223,所述本地交叉开关的交换子模块将该第一数据包发送至上游端口。6.如权利要求5所述的基于PCIe数据交换的通信方法,其特征在于,如果发送PCIe读写请求的是PCIe终端,且PCIe读写请求是PCIe写请求,则所...

【专利技术属性】
技术研发人员:孙凝晖曹政刘小丽安学军张佩珩
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1