发明内容
为解决上述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总线引入的请求应答死锁问题。
具体实施方式
图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数据写入目的处理机的存储器的目的地址,写操作结束。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。