CN103117929A - 一种基于PCIe数据交换的通信方法及系统 - Google Patents

一种基于PCIe数据交换的通信方法及系统 Download PDF

Info

Publication number
CN103117929A
CN103117929A CN2013100386750A CN201310038675A CN103117929A CN 103117929 A CN103117929 A CN 103117929A CN 2013100386750 A CN2013100386750 A CN 2013100386750A CN 201310038675 A CN201310038675 A CN 201310038675A CN 103117929 A CN103117929 A CN 103117929A
Authority
CN
China
Prior art keywords
pcie
port
packet
processor
switch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2013100386750A
Other languages
English (en)
Other versions
CN103117929B (zh
Inventor
孙凝晖
曹政
刘小丽
安学军
张佩珩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai united information Polytron Technologies Inc
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201310038675.0A priority Critical patent/CN103117929B/zh
Publication of CN103117929A publication Critical patent/CN103117929A/zh
Application granted granted Critical
Publication of CN103117929B publication Critical patent/CN103117929B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

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

Description

一种基于PCIe数据交换的通信方法及系统
技术领域
本发明涉及一种基于PCIe数据交换的通信方法及系统,特别是涉及一种通过扩展PCIe协议实现的多处理机环境下数据交换方法及数据交换系统,还涉及对标准PCIe的兼容,实现基于PCIe的I/O设备扩展。 
背景技术
PCI-Express总线协议(简称PCIe)继承自PCI、PCI-x协议,是当前计算机系统中主流的I/O系统总线。相比PCI和PCI-X,PCIe总线具有更高的高带宽,PCIe2.0规范的单路(lane)单向带宽就已达到5Gpbs,PCIe3.0规范更是达到了8Gbps。由于是串行传输协议,因此PCIe总线可以实现较长的传输距离,甚至可以通过使用光模块,达到上百米的传输距离。此外,PCIe总线还提供了丰富的服务质量(QoS)特性,和点对点链路可靠性保证。 
作为PCI、PCI-x总线的延续,PCIe总线主要用于扩展I/O资源。目前市场上均为符合PCIe标准的PCIe交换机,它们可以通过级联构成树形拓扑,处理机是树的根,而I/O设备则是树的叶子。目前构造的树形拓扑可以有多个根,不同的根拥有不同的子树,但根与根之间不能通信。这些子树之间可以共用中间的节点(PCIe交换机),但一个叶子(PCIe终端设备)仅能归属于一个子树。因此,标准PCIe交换机构成的网络,只是一个或若干个功能独立的子树的集合,子树之间并无数据交换,当然这已经满足了在I/O扩展方面的需要。 
但是从带宽、传输距离、服务质量、可靠性等方面看,PCIe总线除了实现I/O设备的扩展外,还适合于构造系统互连网络,实现多台计算机间的高速互连。然而PCIe总线严格遵循树形拓扑,终端叶子节点之间无法直接通信,也就无法用于构造复杂拓扑的网络。为了使两个处理机之间能够直接通信,出现了非透明桥技术(NTB:non-transparent bridge),该技术实现了两个处理机地址空间的相互映射,使得地址空间逻辑上统一。 
但是即使利用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位),那么能包含的处理器数量仅有240/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读写请求是PCIe读请求,则所述步骤3包括: 
步骤331,所述上游端口将该第一数据包还原为PCIe读请求,若与所述上游端口相连的是上一级PCIe交换机的下游端口,则将PCIe读请求发送给该下游端口;若与上游端口相连的是处理机,则将PCIe读请求发送给该处理机; 
步骤332,所述处理机根据路由信息向其下一级PCIe交换机的上游端口发送携带的PCIe读请求ID号的PCIe响应数据; 
步骤333,所述上游端口的上游输出端口路由单元使用PCIe响应数据的PCIe读请求ID号查询ID端口路由表,获取下游端口号,并使用该下游端口号将PCIe响应数据构造为第一数据包,所述上游端口发送该第一数据包至本地交叉开关的接收虚通道模块的应答虚通道; 
步骤334,所述本地交叉开关的交换子模块将该第一数据包发送至下游端口; 
步骤335,所述下游端口将该第一数据包还原为PCIe响应数据,若与下游端口相连的是下一级PCIe交换机的上游端口,则将PCIe响应数据发送给该 上游端口;若与下游端口相连的是PCIe终端,则将PCIe响应数据发送给该PCIe终端。 
进一步的,所述PCIe交换机的每个端口均包含DMA引擎,通过扩展标准PCIe协议,构造第二数据包,来实现处理器间的高效通信,并通过在每个交叉开关端口设置分离的请求和应答虚通道,进行PCIe总线引入的请求应答。 
其中所述第二数据包是在充分利用标准PCIe协议的链路层和事务层功能的基础上,对标准PCIe事务包进行扩展,实现多处理机间的互连,该第二数据包的格式处理为:保持标准PCIe协议的链路层数据包格式不变,保留标准PCIe协议事务层数据包的类型域,虚通道域,长度域,前后字节有效域,并为所述类型域增加DMA写类型和描述符类型,在其他未保留的PCIe事务层数据包域填充源标识、路由信息、DMA控制信息和目的端口号信息。。 
进一步的,对标准PCIe事务包进行扩展获得第二数据包的方法为: 
保留标准PCIe协议功能,该标准PCIe协议功能包括多链路对齐功能,自动链路协商及训练功能,多虚通道支持,为每个虚通道提供完整的流量控制功能,服务质量(QoS)支持,链路级点对点可靠性保证功能,包头CRC和整包CRC功能; 
增加处理器间互连所需的包格式建立,源标识、路由信息、DMA控制信息和目的端口号信息,且每次跳步都需改变。 
进一步的,所述端口包括: 
上游端口,包括处理机间通信引擎单元、单PCI桥配置空间单元和上游输出端口路由单元,用于互连处理机; 
下游端口,包括下游输出端口路由单元和多PCI桥配置空间单元,用于互连PCIe交换机; 
级联端口,包括上行级联端口单元和下行级联端口单元,用于互连其他PCIe交换机的级联端口。 
为实现上述发明目的,本发明还提供一种基于PCIe数据交换的通信系统,该系统包括: 
预处理模块,用于启动PCIe交换机,并对与所述PCIe交换机进行通信的处理机和PCIe终端进行PCIe的设备搜索和配置; 
数据包产生模块,所述处理机或PCIe终端根据路由信息向所述PCIe交换 机端口发送PCIe读写请求,所述端口利用兼容标准PCIe包格式和标准PCIe路由将所述PCIe读写请求构造为数据包,并将其发送至对应端口; 
数据包处理模块,所述对应端口将所述数据包还原为PCIe读写请求,并将其发送至处理机或PCIe终端。 
本发明的优势在于: 
1.充分发挥PCIe总线高带宽、较长传输距离、丰富服务质量支持、高可靠性等方面的优势,将其应用于多处理机间的数据通信领域; 
2.通过兼容标准PCIe包格式和标准PCIe路由方法,实现系统中I/O资源的扩展; 
3.通过扩展标准PCIe协议,构造第二数据包,克服标准PCIe协议中拓扑和路由方法的限制,实现了多处理机间以任意拓扑进行数据通信; 
4.实现一种新型PCIe多根交换机的结构,每个端口均可被配置为上游端口、下游端口和级联端口,消除了传统PCIe交换机端口类型的限制,使得每个端口都可用于互连处理机、I/O设备或本发明所述的PCIe交换机; 
5.本发明所述的PCIe交换机的每个端口均包含DMA引擎,用于处理器间的高效通信,并通过在每个交叉开关端口设置分离的请求和应答虚通道,解决PCIe总线引入的请求应答死锁问题。 
附图说明
图1是本发明的可配置PCIe交换机的应用场景示意图; 
图2是本发明的可配置PCIe交换机的结构图; 
图3是可配置端口的结构示意图; 
图4是上游端口子模块的结构示意图; 
图5是下游端口子模块的结构示意图; 
图6是级联端口子模块的结构示意图; 
图7是本地/远程交叉开关的结构示意图; 
图8是上游端口的地址端口路由表的结构图; 
图9是上游端口的ID端口路由表的结构图; 
图10是下游端口的源ID端口路由表的结构图; 
图11是上游端口的处理机间通信引擎的源址路由表的结构图; 
图12是本发明的DMA描述符的结构图; 
图13是本发明的第一数据包的结构图; 
图14a是本发明DMA描述符类型的第二数据包结构图; 
图14b是本发明DMA写类型的第二数据包结构图; 
图15是可配置PCIe交换机的启动配置的流程图; 
图16是处理机读PCIe终端设备的流程图; 
图17是处理机写PCIe终端设备的流程图; 
图18是PCIe终端设备读处理机的流程图; 
图19是PCIe终端设备写处理机的流程图; 
图20是源处理机使用DMA引擎读目的处理机的数据交换方法流程图; 
图21是源处理机使用DMA引擎写目的处理机的数据交换方法流程图; 
图22是本发明的基于PCIe数据交换的通信系统示意图; 
图23是本发明的基于PCIe数据交换的通信方法流程图。 
具体实施方式
图22是本发明的基于PCIe数据交换的通信系统示意图。如图22所示,该通信系统包括: 
预处理模块100,用于启动PCIe交换机,并对与所述PCIe交换机进行通信的处理机和PCIe终端进行PCIe的设备搜索和配置; 
数据包产生模块200,所述处理机或PCIe终端根据路由信息向所述PCIe交换机端口发送PCIe读写请求,所述端口利用兼容标准PCIe包格式和标准PCIe路由将所述PCIe读写请求构造为数据包,并将其发送至对应端口; 
数据包处理模块300,所述对应端口将所述数据包还原为PCIe读写请求,并将其发送至处理机或PCIe终端。 
图23是本发明的基于PCIe数据交换的通信方法流程图。如图23所示,该通信方法包括: 
步骤1,启动PCIe交换机,并对与所述PCIe交换机进行通信的处理机和PCIe终端进行PCIe的设备搜索和配置; 
步骤2,所述处理机或所述PCIe终端根据路由信息向所述PCIe交换机端口发送PCIe读写请求,所述端口使用兼容标准PCIe链路层协议的包格式和兼容标准PCIe路由的可扩展路由方式,将所述PCIe读写请求构造为数据包,并 将其发送至对应端口; 
步骤3,所述对应端口将所述数据包还原为PCIe读写请求,并将其发送至处理机或所述PCIe终端。 
为了使本发明的目的、技术方案更加清楚明白,以下结合图1至图21,对本发明的技术方案做详细说明。 
图1是本发明的可配置PCIe交换机的应用场景示意图。多个可配置PCIe交换机可以构成一个基于PCIe的互连网络,多个处理机和多个PCIe终端设备(PCIe Endpoint Device)通过互连网络互连,实现多处理机间、处理机与PCIe终端设备间的数据交换。 
图2是本发明的可配置PCI e交换机的结构图。可配置PCIe交换机由端口、本地交叉开关和远程交叉开关组成。 
图3是可配置端口的结构示意图。端口其功能在于实现多处理机系统中处理机、PCIe下游设备(PCIe Downstream Device),以及其他本发明的PCIe交换机之间的数据通信,本发明中共包含M个端口(M为自然数)。端口包含PCIe链路控制器子模块、仲裁分发子模块、上游端口子模块、下游端口子模块、级联端口子模块、输入输出选择子模块五个子模块。 
PCIe链路控制器子模块,其功能在于实现标准PCIe规范中的物理层、链路层和部分事务层协议,是交换机与外围设备(包括处理机、PCIe设备、其他交换机)的数据交换通路。PCIe事务层的流量控制和可靠性机制均在PCIe链路控制器子模块中实现,但不包含任何有关配置空间的功能。使用PCIe链路控制器子模块,使得基于PCIe的互连网络可以获得PCIe总线在物理层和链路层的优势,包括高带宽、较长传输距离、丰富服务质量支持、高可靠性等方面。 
仲裁分发子模块,其功能在于实现对端口工作模式的配置,即将端口的工作模式配置为上游端口模式、下游端口模式或级联端口模式,并根据端口工作模式,将来自PCIe链路控制器子模块的PCIe数据包分发给上游端口子模块、下游端口子模块或级联端口子模块,同时将来自上游端口子模块、下游端口子模块或级联端口子模块的PCIe数据包发送给PCIe链路控制器子模块。 
上游端口子模块其功能在于实现与处理机、PCIe交换机等其它PCIe上游设备间的PCIe数据通信。 
下游端口子模块,其功能在于实现与PCIe终端设备、PCIe交换机等PCIe下游设备间的PCIe数据通信。 
级联端口子模块,其功能在于实现与另一PCIe交换机端口的数据通信。网络路由信息的使用,使得数据包在基于PCIe的互连网络中的传输,不再受树形拓扑、传统ID和地址路由的限制,按照任意需要的路径进行传输。 
输入输出选择子模块,其功能在于根据仲裁分发子模块对端口工作模式的配置,将来自上游端口子模块、下游端口子模块和级联端口子模块的数据进行选通后,发送给本地交叉开关和远程交叉开关。 
这种设计使得本发明的PCIe交换机的端口即可以与处理机互连,也可以与I/O设备互连,还可以与另一个PCIe交换机互连,打破传统PCIe交换机端口只能用于互连一种特定设备(要么只能互连处理机、要么只能互连I/O设备、要么只能互连PCIe交换机)的限制。 
图4是上游端口子模块的结构示意图。上游端口子模块内部包含处理机间通信引擎、单PCI桥配置空间单元和上游输出端口路由单元。 
处理机间通信引擎,其功能在于实现一个标准PCIe协议中类型为0(Type0)的配置空间和一个用于多处理机之间数据通信的DMA引擎。对处理机通信引擎发起的访问,均判断为多处理机之间的数据通信。处理机通信引擎包括DMA(Direct Memory Access)引擎和一个包含源址路由表的配置空间。配置空间的基址寄存器BAR0中记录一个由上层软件写入的源址路由表,源址路由表的结构图如图11所示。DMA引擎获得源处理机和目的处理机通信用的DMA描述符(比如:PCIe读请求DMA描述符、PCIe写请求DMA描述符,DMA描述符的结构图如图12所示),根据DMA描述符中的目的处理机号,查找配置空间中的源址路由表,获得完整的网络路由信息,使用网络路由信息和/或PCIe数据包构造第二数据包(网络包),将第二数据包发送给远程交叉开关进行数据交换。上游端口直接连接的主机系统启动时,对处理机间通信引擎的配置空间进行读写配置。因为所有用于处理机间通信的PCIe数据包均通过处理机通信引擎发送出去,因此使用处理机通信引擎,实现了I/O扩展功能和多处理机通信功能的区分隔离。此外,多处理机间使用DMA引擎通信时,DMA描述符中除携带源地址、目的地址、长度外,还携带目的处理机号,每个处理机拥有的处理机号全局唯一,不受PCIe协议中的ID号长度限制,可根据系统中的处理 机数目进行设定,从而打破了PCI e协议中地址路由和ID路由对扩展性的限制。 
单PCI桥配置空间单元,其功能在于实现标准PCIe协议中类型为1(Type1)的配置空间。对PCI桥发起的访问,均判断为与PCIe下游设备间的数据通信。将访问配置空间中基址寄存器所指示地址空间的PCIe数据包,转发给上游输出端口路由单元。上游端口子模块直接连接的主机系统启动时对单PCI桥配置空间进行读写配置,识别和配置端口对应的虚拟PCI桥。所有I/O扩展功能相关的数据包均通过对单PCI桥配置空间单元的访问发出,因此使用单PCI桥配置空间单元,实现了I/O扩展功能和多处理机互连功能的区分隔离。 
上游输出端口路由单元,其功能在于将来自于单PCI桥配置空间单元的PCIe数据包,使用其携带的目的地址(基地址)或目的ID信息查询地址端口路由表或ID端口路由表,获得输出数据包的下游端口号,使用下游端口号和PCIe数据包构造第一数据包(内部交换包)后,发送给本地交叉开关进行数据交换。 
上游端口子模块还能将来自本地交叉开关的第一数据包,去除目的端口信息,还原为PCIe数据包发往处理机;将来自远程交叉开关的第二数据包,去除网络路由信息,还原为PCIe数据包发往处理机。 
图5是下游端口子模块的结构示意图。下游端口子模块内部包含下游输出端口路由单元和多PCI桥配置空间单元。 
多PCI桥配置空间单元,其功能在于实现多个标准PCI协议中类型为1(Type1)的配置空间,根据接收到的PCIe数据包中所包含的目的处理机地址(基地址)与各个PCI桥配置空间地址进行比对,获得命中PCI桥配置空间对应的上游端口号,然后使用上游端口号和PCIe数据包构造第一数据包,发送给本地交叉开关进行数据交换。多PCI桥配置空间单元共包含M个配置空间,但有效配置空间的数目与PCIe交换机的上游端口个数相同。 
下游输出端口路由单元,其功能在于根据接收到的PCIe数据包中所包含的目的处理机号查询源ID端口路由表,获得输出PCIe数据包的上游端口号,使用上游端口号和PCIe数据包中来构造为第一数据包后,发送给本地交叉开关进行数据交换。 
下游端口子模块还能将来自本地交叉开关的第一数据包,去除目的端口信息,还原为PCIe数据包发往PCIe下游设备。 
图6是级联端口子模块的结构示意图。其功能在于实现与另一PCIe交换机端口的数据通信,网络路由信息的使用,使得数据包在基于PCIe的互连网络中的传输,不再受树形拓扑、传统ID和地址路由的限制,按照任意需要的路径进行传输。级联端口子模块由上行级联端口单元和下行级联端口单元组成。 
上行级联端口单元,其功能在于接收来自远程交叉开关的第二数据包,更新第二数据包的网络路由信息,并将更新后的第二数据包发送至下一级交换机的级联端口。更新网络路由信息的具体操作包括:将第二数据包的跳步数减一;将第一级路由信息移除,依次使用后一级路由信息替换前一级路由信息,比如:使用第二级路由信息替换第一级路由信息。 
下行级联端口单元,其功能在于接收来自上一级交换机的级联端口的第二数据包,并根据第二数据包中的网络路由信息,将第二数据包存储至远程交叉开关相应的虚通道中。 
图7是本地/远程交叉开关的结构示意图。 
本地交叉开关,其功能在于实现处理机与I/O设备间的高效数据缓存和交换。本地交叉开关与上游端口和下游端口相连,由接收虚通道模块和交换子模块组成。远程交叉开关,其功能在于实现多处理机间的高效数据缓存和交换。远程交叉开关与上游端口和级联端口相连,由接收虚通道模块和交换子模块组成。 
接收虚通道子模块,包含M个请求虚通道和M个应答虚通道。接收虚通道子模块号与向本地/远程交叉开关提供PCIe数据的端口的端口号对应,其中的请求/应答虚通道号与接收PCIe数据的端口的端口号对应,比如:接收虚通道子模块2的请求虚通道1用于存储来自PCIe交换机的上游端口2发往下游端口1的第一数据包/第二数据包,而接收通道子模块2的应答虚通道1用于存储来自PCIe交换机的下游端口1发往上游端口2的第一数据包/第二数据包。通过分离请求和应答虚通道,并为每种虚通道设置M个请求虚通道和M个应答虚通道,解决了使用PCIe总线进行多处理机互连而引入的请求应答成环死锁问题。此外,可以解决队头阻塞问题,提高系统的网络吞吐率。本发明的PCIe交换机包含M个接收虚通道模块。 
交换子模块,其功能在于将来自M个接收虚通道模块的数据包进行仲裁调 度后,发往与接收虚通道模块的请求虚通道号或应答虚通道号对应的端口。 
图8是上游端口的地址端口路由表的结构图。其功能在于建立目的PCIe终端设备的物理地址(基地址)与上游端口所在PCIe交换机的下游端口号的映射关系,其中,m为自然数,通过查询地址端口路由表,即可通过PCIe事务包中携带的目的地址(基地址)获得目的下游端口号。 
图9是上游端口的ID端口路由表的结构图。其功能在于建立目的PCIe终端设备的ID号与上游端口所在PCIe交换机的下游端口号的映射关系,其中,m为自然数,通过查询ID端口路由表,即可通过PCIe事务包中携带的请求ID号(即目的设备ID:总线号+设备号+功能号)获得目的下游端口号。 
图10是下游端口的源ID端口路由表的结构图。其功能在于建立目的处理机号与下游端口所在PCIe交换机的上游端口号的映射关系,其中,n为自然数,通过查询源ID端口路由表,即可通过PCIe事务包中携带的请求ID号(目的处理机号)获得目的上游端口号。 
图11是上游端口的处理机间通信引擎的源址路由表的结构图。其功能在于实现目的处理机号与具体网络路由信息的映射,其中,n(n为自然数)视网络规模而定。网络路由信息包括数据传递所需跳步数和每跳所需的路由信息(每一跳的目的端口号),具体路由信息数p(p为自然数)视网络拓扑结构而定。 
图12是本发明的DMA描述符的结构图。DMA描述符包含目的处理机号、类型、源地址、目的地址和长度。其中,“目的处理机号”用于标识PCIe数据需要被发送到的目的处理机,“类型”为PCIe请求的类型(比如:PCIe读请求、PCIe写请求),目的地址为源处理机的存储器中用于存储写入从目的处理机读取到的PCIe数据的起始地址,“源地址”为目的处理机的存储器中用于存储将被源处理机读取的PCIe数据的起始地址,“长度”为目的处理机中将被源处理机读取的PCIe数据的长度。源地址和长度被DMA引擎用于从处理机的存储器中读取PCIe数据;目的处理机号用于查询源址路由表,获得网络路由信息;目的地址被DMA引擎用于向处理机的存储器中写入PCIe数据。 
图13是本发明的第一数据包的结构图。它修改了标准PCIe事务包的PCIe事务层包头,在保留域中加入目的端口号信息,需要强调的是,图13并不对具体使用的保留域位置进行限定。 
图14是本发明的第二数据包的结构图。它的设计原则是在充分利用标准PCIe协议的链路层和部分事务层功能的基础上,对标准PCIe事务包进行扩展,实现多处理机间的互连。需要保留的标准PCIe协议功能包括多链路对齐(Deskew功能),自动链路协商及训练功能,多虚通道支持,为每个虚通道提供完整的流量控制功能,服务质量(QoS)支持,链路级点对点可靠性保证(出错重传功能),包头CRC和整包CRC功能。需要增加的是处理器间互连所需的包格式定义(包括DMA写类型和描述符类型,分别传输DMA写包和DMA描述符),源标识(发起请求的源处理机号)、路由信息、DMA控制信息和目的端口号信息(与第一数据包中定义相同的,每次跳步都需改变)。 
相应地,对于第二数据包的格式定义,我们保持标准PCIe协议的链路层数据包格式不变,保留标准PCIe协议事务层数据包已定义的类型(Type)域,虚通道域(TC),长度域(Length),前后字节有效域(Last BE和First BE)。为类型域(Type)域增加DMA写类型和描述符类型,在其他未保留的PCIe事务层数据包域填充源标识、路由信息、DMA控制信息和目的端口号信息。 
如图14a和b所示的是第二数据包的DMA写包和描述符包格式的一种示例。为了实现本发明所述实施例的路由方法,图14a和b将路由信息设定为跳步数、每个跳步的路由信息。除类型和路由信息外,DMA写包中将携带DMA写地址域和DMA写数据域,见图14b;DMA描述符包则携带DMA描述符,见图14a。需要强调的是,图14a和b仅用于说明第二数据包所需包括的内容,并不对具体的路由算法进行限定,也不对具体包格式进行限定,包格式中的路由信息可以根据选择的路由算法进行重新定义。 
结合上述附图内容,介绍本发明相关的6个数据交换方法和PCIe交换机启动配置方法。6个数据交换方法分别为:处理机读PCIe终端设备的数据交换方法、处理机写PCIe终端设备的数据交换方法、PCIe终端设备读处理机的数据交换方法、PCIe终端设备写处理机的数据交换方法、源处理机使用DMA引擎读取目的处理机的数据交换方法、源处理机使用DMA引擎写目的处理机的数据交换方法。 
图15是可配置PCIe交换机的启动配置的流程图。 
1.通过外部跳线设置各端口的工作模式,确定每个端口为上游端口、下游端口或级联端口; 
2.处理机启动,进行PCIe的标准设备搜索过程,依次发现与其对应的上游端口处理机间通信引擎、上游端口PCI桥、下游端口PCI桥、PCIe下游设备,并对这些设备进行配置; 
3.待所有处理机均完成设备搜索后,配置上游端口的源址路由表、上游端口的地址端口路由表和ID端口路由表、下游端口的源ID端口路由表。 
图16是处理机读PCIe终端设备的流程图。 
1.处理机根据已计算出的路由信息向其下一级PCIe交换机的上游端口i的单PCI桥配置空间发送PCIe读请求; 
2.上游端口i的上游输出端口路由单元使用PCIe读请求的PCIe终端设备的地址(基地址)查询地址端口路由表,获得下游端口号j,并使用下游端口号j将PCIe读请求构造为第一数据包,上游端口i发送第一数据包至本地交叉开关的接收虚通道模块i的请求虚通道j; 
3.本地交叉开关的交换子模块将第一数据包发送至下游端口j; 
4.下游端口j将第一数据包还原为PCIe读请求,若与下游端口j相连的是下一级PCIe交换机的上游端口k,则将PCIe读请求发送给上游端口k,重复2至4;若与下游端口j相连的是PCIe终端设备,则将PCIe读请求发送给PCIe终端设备,等待PCIe终端设备返回包括PCIe读请求ID号(处理机号)的PCIe响应数据; 
5.PCIe终端设备根据已计算出的路由信息向其上一级PCIe交换机的下游端口x发送携带的PCIe读请求ID号(处理机号)的PCIe响应数据; 
6.下游端口x的下游输出端口路由单元使用PCIe响应数据的PCIe读请求ID号(处理机号)查询源ID端口路由表,获取上游端口号y,并使用上游端口号y将PCIe响应数据构造为第一数据包,下游端口x发送第一数据包至本地交叉开关的接收虚通道模块x的应答虚通道y; 
7.本地交叉开关的交换子模块将第一数据包发送至上游端口y; 
8.上游端口y将第一数据包还原为PCIe响应数据,若与上游端口y相连的是上一级PCIe交换机的下游端口z,则将PCIe响应数据发送给下游端口z,重复6至8;若与上游端口y相连的是处理机,则将PCIe响应数据发送给处理机,读操作结束。 
图17是处理机写PCIe终端设备的流程图。 
1.处理机根据已计算出的路由信息向其下一级PCIe交换机的上游端口i的单PCI桥配置空间发送PCIe写请求; 
2.上游端口i的上游输出端口路由单元使用PCIe写请求的PCIe终端设备的地址(基地址)查询地址端口路由表,获得下游端口号j,并使用端口号j将PCIe写请求构造为第一数据包,上游端口i发送第一数据包至本地交叉开关的接收虚通道模块i的请求虚通道j; 
3.本地交叉开关的交换子模块将第一数据包发送至下游端口j; 
4.下游端口j将第一数据包还原为PCIe写请求,若与下游端口j相连的是下一级PCIe交换机的上游端口k,则将PCIe写请求发送给上游端口k,重复2至4;若与下游端口j相连的是PCIe终端设备,则将PCIe写请求发送给PCIe终端设备,写操作完成。 
图18是PCIe终端设备读处理机的流程图。 
1.PCIe终端设备根据已计算出的路由信息向其上一级PCIe交换机的下游端口a的多PCI桥配置空间单元发送PCIe读请求; 
2.下游端口a使用PCIe读请求中的处理机地址与多PCI桥配置空间单元中各个PCI桥配置空间地址进行比对,获得命中PCI桥配置空间对应的上游端口号b,并使用上游端口号b将PCIe读请求构造为第一数据包,下游端口a发送第一数据包至本地交叉开关的接收虚通道模块a的请求虚通道b; 
3.本地交叉开关的交换子模块将第一数据包发送至上游端口b; 
4.上游端口b将第一数据包还原为PCIe读请求,若与上游端口b相连的是上一级PCIe交换机的下游端口c,则将PCIe读请求发送给下游端口c,重复2至4;若与上游端口b相连的是处理机,则将PCIe读请求发送给处理机,等待处理机返回包括PCIe读请求ID号(PCIe终端设备ID号)的PCIe响应数据; 
5.处理机根据已计算出的路由信息向其下一级PCIe交换机的上游端口d发送携带的PCIe读请求ID号(PCIe终端设备ID号)的PCIe响应数据; 
6.上游端口d的上游输出端口路由单元使用PCIe响应数据的PCIe读请求ID号(PCIe终端设备ID号)查询ID端口路由表,获取下游端口号e,并使用下游端口号e将PCIe响应数据构造为第一数据包,上游端口d发送第一数据包至本地交叉开关的接收虚通道模块d的应答虚通道e; 
7.本地交叉开关的交换子模块将第一数据包发送至下游端口e; 
8.下游端口e将第一数据包还原为PCIe响应数据,若与下游端口e相连的是下一级PCIe交换机的上游端口f,则将PCIe响应数据发送给上游端口f,重复6至8;若与下游端口e相连的是PCIe终端设备,则将PCIe响应数据发送给PCIe终端设备,读操作结束。 
图19是PCIe终端设备写处理机的流程图。 
1.PCIe终端设备根据已计算出的路由信息向其上一级PCIe交换机的下游端口a的多PCI桥配置空间单元发送PCIe写请求; 
2.下游端口a使用PCIe写请求中的处理机地址与多PCI桥配置空间单元中各个PCI桥配置空间地址进行比对,获得命中PCI桥配置空间对应的上游端口号b,并使用上游端口号b将PCIe读请求构造为第一数据包,下游端口a发送第一数据包至本地交叉开关接收虚通道模块a的请求虚通道b; 
3.本地交叉开关的交换子模块将第一数据包发送至上游端口b; 
4.上游端口b将第一数据包还原为PCIe写请求,若与上游端口b相连的是上一级PCIe交换机的下游端口c,则将PCIe写请求发送给下游端口c,重复2至4;若与上游端口b相连的是处理机,则将PCIe写请求发送给处理机,写操作完成。 
图20是源处理机使用DMA引擎读目的处理机的数据交换方法流程图。 
1.源处理机根据已计算出的路由信息向相连的PCIe交换机的上游端口a的处理机通信引擎发送PCIe读请求DMA描述符; 
2.上游端口a的DMA引擎使用PCIe读请求DMA描述符的目的处理机号查询处理机通信引擎的源址路由表,获得源处理机到目的处理机的包括跳步数p和p级路由信息的第一路由信息,其中,p为自然数,并使用源处理机ID号、第一路由信息和PCIe读请求DMA描述符构造为描述符类型的第二数据包,根据第一路由信息中的第一级路由信息获得下一跳的级联端口号b,上游端口a将描述符类型的第二数据包发送至远程交叉开关的接收虚通道a的请求虚通道b; 
3.远程交叉开关的交换子模块将描述符类型的第二数据包发送至级联端口b; 
4.级联端口b将描述符类型的第二数据包的第一路由信息中的跳步数p 减一,移除第一级路由信息,依次使用后一级路由信息替换前一级路由信息,将描述符类型的第二数据包发送给与级联端口b相连的后一级PCIe交换机的级联端口c; 
5.级联端口c收到描述符类型的第二数据包后,根据第一路由信息中的第一级路由信息获得下一跳的端口号d,级联端口c将描述符类型的第二数据包发送至远程交叉开关的接收虚通道c的请求虚通道d; 
6.远程交叉开关的交换子模块将描述符类型的第二数据包发送至端口d; 
7.端口d将描述符类型的第二数据包的第一路由信息中的跳步数p减一,判断跳步数是否为0,如果为0意味着到达最后一级PCIe交换机,端口d为上游端口,跳至8;否则,端口d为级联端口,级联端口d移除第一级路由信息,依次使用后一级路由信息替换前一级路由信息,将描述符类型的第二数据包发送给与级联端口d相连的后一级PCIe交换机的级联端口e,重复5至7; 
8.上游端口d的DMA引擎将描述符类型的第二数据包还原为PCIe读请求DMA描述符,使用描述符类型的第二数据包中的源标识替换PCIe读请求DMA描述符的目的处理机号,将PCIe读请求DMA描述符的类型更改为写类型,使PCIe读请求DMA描述符转换为PCIe写请求DMA描述符; 
9.上游端口d的DMA引擎使用PCIe写请求DMA描述符的源地址和长度从目的处理机的存储器中获得待写入源处理机的PCIe数据,根据PCIe写请求DMA描述符中目的处理机号查询处理机通信引擎的源址路由表,获得目的处理机到源处理机的包括跳步数q和q级路由信息的第二路由信息,其中,q为自然数,并使用目的处理机ID号、第二路由信息、PCIe写请求DMA描述符中的目的地址和PCIe数据构造写类型的第二数据包,根据第二路由信息中的第一级路由信息获得下一跳的级联端口号x,上游端口d将写类型的第二数据包发送至远程交叉开关的接收虚通道d的请求虚通道x; 
10.远程交叉开关的交换子模块将写类型的第二数据包发送至级联端口x; 
11.级联端口x将写类型的第二数据包的第二路由信息中的跳步数q减一,移除第一级路由信息,依次使用后一级路由信息替换前一级路由信息,将写类型的第二数据包发送给与级联端口x相连的前一级PCIe交换机的级联端口y; 
12.级联端口y收到写类型的第二数据包后,根据第二路由信息中的第一 级路由信息获得下一跳的端口号z,级联端口y将写类型的第二数据包发送至远程交叉开关的接收虚通道y的请求虚通道z; 
13.远程交叉开关的交换子模块将写类型的第二数据包发送至端口z; 
14.端口z将写类型的第二数据包的第一路由信息中的跳步数p减一,判断跳步数是否为0,如果为0意味着到达最前一级PCIe交换机,端口z为上游端口,跳至15;否则,端口z为级联端口,级联端口z移除第一级路由信息,依次使用后一级路由信息替换前一级路由信息,将写类型的第二数据包发送给与级联端口z相连的前一级PCIe交换机的级联端口w,重复12至14; 
15.上游端口z的DMA引擎将写类型的第二数据包还原为PCIe数据和目的地址,将PCIe数据写入源处理机的存储器的目的地址,读操作结束。 
图21是源处理机使用DMA引擎写目的处理机的数据交换方法流程图。 
1.源处理机根据已计算出的路由信息向相连的PCIe交换机的上游端口a’的处理机通信引擎发送PCIe写请求DMA描述符; 
2.上游端口a’的DMA引擎使用PCIe写请求DMA描述符的源地址和长度从源处理机的存储器中获得待写入目的处理机的PCIe数据,根据PCIe写请求DMA描述符的目的处理机号查询处理机通信引擎的源址路由表,获得源处理机到目的处理机的包括跳步数r和r级路由信息的第三路由信息,其中,r为自然数,并使用源处理机ID号、第三路由信息和PCIe写请求DMA描述符中的目的地址和PCIe数据构造写类型的第二数据包,根据第三路由信息中的第一级路由信息获得下一跳的级联端口号b’,上游端口a’将写类型的第二数据包发送至远程交叉开关的接收虚通道a’的请求虚通道b’; 
3.远程交叉开关的交换子模块将写类型的第二数据包发送至级联端口b’; 
4.级联端口b’将写类型的第二数据包的第三路由信息中的跳步数r减一,移除第一级路由信息,依次使用后一级路由信息替换前一级路由信息,将写类型的第二数据包发送给与级联端口b’相连的后一级PCIe交换机的级联端口c’; 
5.级联端口c’收到写类型的第二数据包后,根据第三路由信息中的第一级路由信息获得下一跳的端口号d’,级联端口c’将写类型的第二数据包发送至远程交叉开关的接收虚通道c’的请求虚通道d’; 
6.远程交叉开关的交换子模块将写类型的第二数据包发送至端口d’; 
7.端口d’将写类型的第二数据包的第一路由信息中的跳步数r减一;判断跳步数是否为0,如果为0意味着到达最后一级PCIe交换机,端口d’为上游端口,跳至8;否则,端口d’为级联端口,级联端口d’移除第一级路由信息,依次使用后一级路由信息替换前一级路由信息,将写类型的第二数据包发送给与级联端口d’相连的后一级PCIe交换机的端口e’,重复5至7; 
8.上游端口d’的DMA引擎将写类型的第二数据包还原出PCIe数据和目的地址,将PCIe数据写入目的处理机的存储器的目的地址,写操作结束。 
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。 

Claims (11)

1.一种基于PCIe数据交换的通信方法,其特征在于,包括:
步骤1,启动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写请求,则所述步骤3包括:
步骤331,所述上游端口将该第一数据包还原为PCIe写请求,若与所述上游端口相连的是上一级PCIe交换机的下游端口,则将PCIe写请求发送给该下游端口;若与上游端口相连的是处理机,则将PCIe写请求发送给该处理机。
7.如权利要求6所述的基于PCIe数据交换的通信方法,其特征在于,如果发送PCIe读写请求的是PCIe终端,且PCIe读写请求是PCIe读请求,则所述步骤3包括:
步骤331,所述上游端口将该第一数据包还原为PCIe读请求,若与所述上游端口相连的是上一级PCIe交换机的下游端口,则将PCIe读请求发送给该下游端口;若与上游端口相连的是处理机,则将PCIe读请求发送给该处理机;
步骤332,所述处理机根据路由信息向其下一级PCIe交换机的上游端口发送携带的PCIe读请求ID号的PCIe响应数据;
步骤333,所述上游端口的上游输出端口路由单元使用PCIe响应数据的PCIe读请求ID号查询ID端口路由表,获取下游端口号,并使用该下游端口号将PCIe响应数据构造为第一数据包,所述上游端口发送该第一数据包至本地交叉开关的接收虚通道模块的应答虚通道;
步骤334,所述本地交叉开关的交换子模块将该第一数据包发送至下游端口;
步骤335,所述下游端口将该第一数据包还原为PCIe响应数据,若与下游端口相连的是下一级PCIe交换机的上游端口,则将PCIe响应数据发送给该上游端口;若与下游端口相连的是PCIe终端,则将PCIe响应数据发送给该PCIe终端。
8.如权利要求1所述的基于PCIe数据交换的通信方法,其特征在于,所述PCIe交换机的每个端口均包含DMA引擎,通过扩展标准PCIe协议,构造第二数据包,来实现处理器间的高效通信,并通过在每个交叉开关端口设置分离的请求和应答虚通道,进行PCIe总线引入的请求应答;
其中所述第二数据包是在充分利用标准PCIe协议的链路层和事务层功能的基础上,对标准PCIe事务包进行扩展,实现多处理机间的互连,该第二数据包的格式处理为:保持标准PCIe协议的链路层数据包格式不变,保留标准PCIe协议事务层数据包的类型域,虚通道域,长度域,前后字节有效域,并为所述类型域增加DMA写类型和描述符类型,在其他未保留的PCIe事务层数据包域填充源标识、路由信息、DMA控制信息和目的端口号信息。
9.如权利要求8所述的基于PCIe数据交换的通信方法,其特征在于,对标准PCIe事务包进行扩展获得第二数据包的方法为:
保留标准PCIe协议功能,该标准PCIe协议功能包括多链路对齐功能,自动链路协商及训练功能,多虚通道支持,为每个虚通道提供完整的流量控制功能,服务质量(QoS)支持,链路级点对点可靠性保证功能,包头CRC和整包CRC功能;
增加处理器间互连所需的包格式建立,源标识、路由信息、DMA控制信息和目的端口号信息,且每次跳步都需改变。
10.如权利要求1所述的基于PCIe数据交换的通信方法,其特征在于,所述端口包括:
上游端口,包括处理机间通信引擎单元、单PCI桥配置空间单元和上游输出端口路由单元,用于互连处理机;
下游端口,包括下游输出端口路由单元和多PCI桥配置空间单元,用于互连PCIe交换机;
级联端口,包括上行级联端口单元和下行级联端口单元,用于互连其他PCIe交换机的级联端口。
11.一种基于PCIe数据交换的通信系统,其特征在于,包括:
预处理模块,用于启动PCIe交换机,并对与所述PCIe交换机进行通信的处理机和PCIe终端进行PCIe的设备搜索和配置;
数据包产生模块,所述处理机或PCIe终端根据路由信息向所述PCIe交换机端口发送PCIe读写请求,所述端口利用兼容标准PCIe包格式和标准PCIe路由将所述PCIe读写请求构造为数据包,并将其发送至对应端口;
数据包处理模块,所述对应端口将所述数据包还原为PCIe读写请求,并将其发送至处理机或PCIe终端。
CN201310038675.0A 2013-01-31 2013-01-31 一种基于PCIe数据交换的通信方法及系统 Active CN103117929B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310038675.0A CN103117929B (zh) 2013-01-31 2013-01-31 一种基于PCIe数据交换的通信方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310038675.0A CN103117929B (zh) 2013-01-31 2013-01-31 一种基于PCIe数据交换的通信方法及系统

Publications (2)

Publication Number Publication Date
CN103117929A true CN103117929A (zh) 2013-05-22
CN103117929B CN103117929B (zh) 2015-12-23

Family

ID=48416207

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310038675.0A Active CN103117929B (zh) 2013-01-31 2013-01-31 一种基于PCIe数据交换的通信方法及系统

Country Status (1)

Country Link
CN (1) CN103117929B (zh)

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103701680A (zh) * 2013-12-17 2014-04-02 杭州华为数字技术有限公司 一种跨PCIe域报文传输的方法、设备及系统
CN104285218A (zh) * 2013-12-31 2015-01-14 华为技术有限公司 一种扩展PCIe总线域的方法和装置
CN105630727A (zh) * 2014-11-07 2016-06-01 华为技术有限公司 多SoC节点之间的访问方法、装置和系统
CN105721357A (zh) * 2016-01-13 2016-06-29 华为技术有限公司 交换设备、外围部件互连高速系统及其初始化方法
CN106027423A (zh) * 2016-05-20 2016-10-12 北京百度网讯科技有限公司 PCIe设备共享网络及其数据传输方法
CN106161169A (zh) * 2016-09-30 2016-11-23 郑州云海信息技术有限公司 一种多主机网络交换系统
CN106533992A (zh) * 2014-03-25 2017-03-22 Dssd股份有限公司 用于全连接网格拓扑结构的高速pci架构路由
CN106844263A (zh) * 2016-12-26 2017-06-13 中国科学院计算技术研究所 一种基于可配置的多处理器计算机系统及实现方法
CN107918594A (zh) * 2016-10-05 2018-04-17 三星电子株式会社 半导体装置、操作半导体装置的方法和包括该装置的系统
CN108471384A (zh) * 2018-07-02 2018-08-31 北京百度网讯科技有限公司 用于端到端通信的报文转发的方法和装置
CN109586784A (zh) * 2018-12-27 2019-04-05 中电科航空电子有限公司 一种基于多安全级别数据传输的机载路由实现方法
CN109643299A (zh) * 2016-09-29 2019-04-16 英特尔公司 在具有现有tlp定义的pcie上的持久存储器写入语义
CN110708185A (zh) * 2019-09-03 2020-01-17 中国科学院计算技术研究所 用于人工智能处理器的数据互联方法、系统、芯片和装置
CN111092773A (zh) * 2019-12-25 2020-05-01 成都九芯微科技有限公司 一种支持虚拟交换的pcie交换芯片端口配置系统和方法
CN111092830A (zh) * 2019-12-11 2020-05-01 成都九芯微科技有限公司 一种pcie交换芯片端口配置系统和方法
WO2020103736A1 (zh) * 2018-11-23 2020-05-28 阿里巴巴集团控股有限公司 数据传输设备和处理系统、消息分发方法和装置
CN112073213A (zh) * 2020-07-30 2020-12-11 苏州浪潮智能科技有限公司 一种灵活安全配置PCIe交换机的方法
CN112527709A (zh) * 2020-12-10 2021-03-19 苏州浪潮智能科技有限公司 一种PCIe扩展交换系统、方法及电子设备和存储介质
US11036669B2 (en) 2013-07-22 2021-06-15 Futurewei Technologies, Inc. Scalable direct inter-node communication over peripheral component interconnect-express (PCIe)
CN113297117A (zh) * 2020-10-30 2021-08-24 阿里巴巴集团控股有限公司 数据传输方法、设备、网络系统及存储介质
CN113498595A (zh) * 2020-01-22 2021-10-12 华为技术有限公司 一种基于PCIe的数据传输方法及装置
CN113868173A (zh) * 2016-03-04 2021-12-31 英特尔公司 扁平化端口桥
CN114265805A (zh) * 2021-12-13 2022-04-01 中国科学院计算技术研究所 一种PCIe交换芯片上、下游端口路由表构建方法及系统
CN114265804A (zh) * 2021-12-13 2022-04-01 中国科学院计算技术研究所 一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法
CN115334015A (zh) * 2022-07-04 2022-11-11 深圳市国微电子有限公司 基于PCIe交换芯片的虚拟交换模式控制方法
CN117743240A (zh) * 2024-02-19 2024-03-22 井芯微电子技术(天津)有限公司 一种具备透明和非透明双模式的PCIe桥设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101299757A (zh) * 2008-05-23 2008-11-05 华为技术有限公司 一种数据共享方法及通讯系统以及相关设备
US20110029734A1 (en) * 2009-07-29 2011-02-03 Solarflare Communications Inc Controller Integration

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101299757A (zh) * 2008-05-23 2008-11-05 华为技术有限公司 一种数据共享方法及通讯系统以及相关设备
US20110029734A1 (en) * 2009-07-29 2011-02-03 Solarflare Communications Inc Controller Integration

Cited By (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11036669B2 (en) 2013-07-22 2021-06-15 Futurewei Technologies, Inc. Scalable direct inter-node communication over peripheral component interconnect-express (PCIe)
CN103701680A (zh) * 2013-12-17 2014-04-02 杭州华为数字技术有限公司 一种跨PCIe域报文传输的方法、设备及系统
CN104285218A (zh) * 2013-12-31 2015-01-14 华为技术有限公司 一种扩展PCIe总线域的方法和装置
WO2015100672A1 (zh) * 2013-12-31 2015-07-09 华为技术有限公司 一种扩展PCIe总线域的方法和装置
US9690739B2 (en) 2013-12-31 2017-06-27 Huawei Technologies Co., Ltd. Method and apparatus for extending PCIe domain
CN106533992A (zh) * 2014-03-25 2017-03-22 Dssd股份有限公司 用于全连接网格拓扑结构的高速pci架构路由
CN106533992B (zh) * 2014-03-25 2020-01-17 Emc知识产权控股有限公司 用于全连接网格拓扑结构的高速pci架构路由
CN105630727A (zh) * 2014-11-07 2016-06-01 华为技术有限公司 多SoC节点之间的访问方法、装置和系统
CN105630727B (zh) * 2014-11-07 2018-08-14 华为技术有限公司 多SoC节点之间的访问方法、装置和系统
US10810151B2 (en) 2016-01-13 2020-10-20 Huawei Technologies Co., Ltd. Switching device, peripheral component interconnect express system, and method for initializing peripheral component interconnect express system
CN105721357A (zh) * 2016-01-13 2016-06-29 华为技术有限公司 交换设备、外围部件互连高速系统及其初始化方法
WO2017121376A1 (zh) * 2016-01-13 2017-07-20 华为技术有限公司 交换设备、外围部件互连高速系统及其初始化方法
US11080221B2 (en) 2016-01-13 2021-08-03 Huawei Technologies Co., Ltd. Switching device, peripheral component interconnect express system, and method for initializing peripheral component interconnect express system
CN105721357B (zh) * 2016-01-13 2019-09-03 华为技术有限公司 交换设备、外围部件互连高速系统及其初始化方法
CN113868173A (zh) * 2016-03-04 2021-12-31 英特尔公司 扁平化端口桥
CN106027423A (zh) * 2016-05-20 2016-10-12 北京百度网讯科技有限公司 PCIe设备共享网络及其数据传输方法
CN109643299A (zh) * 2016-09-29 2019-04-16 英特尔公司 在具有现有tlp定义的pcie上的持久存储器写入语义
CN109643299B (zh) * 2016-09-29 2023-08-04 英特尔公司 在具有现有tlp定义的pcie上的持久存储器写入语义
CN106161169A (zh) * 2016-09-30 2016-11-23 郑州云海信息技术有限公司 一种多主机网络交换系统
CN107918594B (zh) * 2016-10-05 2023-09-12 三星电子株式会社 半导体装置、操作半导体装置的方法和包括该装置的系统
CN107918594A (zh) * 2016-10-05 2018-04-17 三星电子株式会社 半导体装置、操作半导体装置的方法和包括该装置的系统
CN106844263A (zh) * 2016-12-26 2017-06-13 中国科学院计算技术研究所 一种基于可配置的多处理器计算机系统及实现方法
CN106844263B (zh) * 2016-12-26 2020-07-03 中国科学院计算技术研究所 一种基于可配置的多处理器计算机系统及实现方法
CN108471384B (zh) * 2018-07-02 2020-07-28 北京百度网讯科技有限公司 用于端到端通信的报文转发的方法和装置
CN108471384A (zh) * 2018-07-02 2018-08-31 北京百度网讯科技有限公司 用于端到端通信的报文转发的方法和装置
CN111224851A (zh) * 2018-11-23 2020-06-02 阿里巴巴集团控股有限公司 数据传输设备和处理系统、消息分发方法和装置
WO2020103736A1 (zh) * 2018-11-23 2020-05-28 阿里巴巴集团控股有限公司 数据传输设备和处理系统、消息分发方法和装置
CN111224851B (zh) * 2018-11-23 2022-09-27 阿里巴巴集团控股有限公司 数据传输设备和处理系统、消息分发方法和装置
CN109586784A (zh) * 2018-12-27 2019-04-05 中电科航空电子有限公司 一种基于多安全级别数据传输的机载路由实现方法
CN109586784B (zh) * 2018-12-27 2021-05-04 中电科航空电子有限公司 一种基于多安全级别数据传输的机载路由实现方法
CN110708185B (zh) * 2019-09-03 2021-06-29 中国科学院计算技术研究所 用于人工智能处理器的数据互联方法、系统、芯片和装置
CN110708185A (zh) * 2019-09-03 2020-01-17 中国科学院计算技术研究所 用于人工智能处理器的数据互联方法、系统、芯片和装置
CN111092830B (zh) * 2019-12-11 2022-01-11 成都华大九天科技有限公司 一种pcie交换芯片端口配置系统和方法
CN111092830A (zh) * 2019-12-11 2020-05-01 成都九芯微科技有限公司 一种pcie交换芯片端口配置系统和方法
CN111092773A (zh) * 2019-12-25 2020-05-01 成都九芯微科技有限公司 一种支持虚拟交换的pcie交换芯片端口配置系统和方法
CN111092773B (zh) * 2019-12-25 2022-06-21 成都华大九天科技有限公司 一种支持虚拟交换的pcie交换芯片端口配置系统和方法
CN113498595A (zh) * 2020-01-22 2021-10-12 华为技术有限公司 一种基于PCIe的数据传输方法及装置
CN112073213B (zh) * 2020-07-30 2022-12-27 苏州浪潮智能科技有限公司 一种灵活安全配置PCIe交换机的方法
CN112073213A (zh) * 2020-07-30 2020-12-11 苏州浪潮智能科技有限公司 一种灵活安全配置PCIe交换机的方法
WO2022089352A1 (zh) * 2020-10-30 2022-05-05 阿里巴巴集团控股有限公司 数据传输方法、设备、网络系统及存储介质
CN113297117A (zh) * 2020-10-30 2021-08-24 阿里巴巴集团控股有限公司 数据传输方法、设备、网络系统及存储介质
CN113297117B (zh) * 2020-10-30 2024-02-27 阿里巴巴集团控股有限公司 数据传输方法、设备、网络系统及存储介质
CN112527709A (zh) * 2020-12-10 2021-03-19 苏州浪潮智能科技有限公司 一种PCIe扩展交换系统、方法及电子设备和存储介质
CN114265804A (zh) * 2021-12-13 2022-04-01 中国科学院计算技术研究所 一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法
CN114265805A (zh) * 2021-12-13 2022-04-01 中国科学院计算技术研究所 一种PCIe交换芯片上、下游端口路由表构建方法及系统
CN115334015A (zh) * 2022-07-04 2022-11-11 深圳市国微电子有限公司 基于PCIe交换芯片的虚拟交换模式控制方法
CN115334015B (zh) * 2022-07-04 2024-04-02 深圳市国微电子有限公司 基于PCIe交换芯片的虚拟交换模式控制方法
CN117743240A (zh) * 2024-02-19 2024-03-22 井芯微电子技术(天津)有限公司 一种具备透明和非透明双模式的PCIe桥设备
CN117743240B (zh) * 2024-02-19 2024-04-19 井芯微电子技术(天津)有限公司 一种具备透明和非透明双模式的PCIe桥设备

Also Published As

Publication number Publication date
CN103117929B (zh) 2015-12-23

Similar Documents

Publication Publication Date Title
CN103117929B (zh) 一种基于PCIe数据交换的通信方法及系统
US9025495B1 (en) Flexible routing engine for a PCI express switch and method of use
JP6014271B2 (ja) データ処理システム及びデータ処理方法
US20180324111A1 (en) Storage device in which forwarding-function-equipped memory nodes are mutually connected and data processing method
US8412875B2 (en) Switch and network bridge apparatus
CN111092773B (zh) 一种支持虚拟交换的pcie交换芯片端口配置系统和方法
US8774055B2 (en) Switching method
JP5310175B2 (ja) スイッチシステム、及びスイッチシステムの制御方法
WO2013136522A1 (ja) 計算機システム及び計算機間のデータ通信方法
CN102707991A (zh) 多根i/o 虚拟化共享方法和系统
US10698849B2 (en) Methods and apparatus for augmented bus numbering
US9087162B2 (en) Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch
CN115102780B (zh) 数据传输方法、相关装置、系统及计算机可读存储介质
CN107851078B (zh) 一种PCIe设备的聚合友好型地址分配的方法和系统
CN113934674B (zh) 基于pcie总线的命令传输方法及片上系统
US8650349B2 (en) Memory mapped input/output bus address range translation for virtual bridges
US10169279B2 (en) Input/output control device, input/output control system, and input/output control method for conversion of logical address of instruction into local address of device specified in instruction
US20090235048A1 (en) Information processing apparatus, signal transmission method, and bridge
JP5426228B2 (ja) ネットワークシステム、ホストコンピュータ、hub装置、nic装置、及び通信方法
CN116414759B (zh) 计算机交换系统及地址分配、枚举、数据分发方法
CN114915499B (zh) 数据传输方法、相关装置、系统及计算机可读存储介质
CN113168384A (zh) 通信设备、信息处理系统和通信方法
CN108959134B (zh) 用于现场可编程门阵列设备的通信
CN113688091B (zh) 基于Tsi721的RapidIO动态枚举过程的实现方法及系统
CN112463680A (zh) 数据搬运方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160128

Address after: 200031 Shanghai, Hunan Road, No. 121, building 10, building

Patentee after: SHANGHAI YINGLIAN SOMATOSENSORY INTELLIGENT TECHNOLOGY CO., LTD.

Address before: 100190 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 200031 Shanghai, Hunan Road, No. 121, building 10, building

Patentee after: Shanghai united information Polytron Technologies Inc

Address before: 200031 Shanghai, Hunan Road, No. 121, building 10, building

Patentee before: SHANGHAI YINGLIAN SOMATOSENSORY INTELLIGENT TECHNOLOGY CO., LTD.