发明内容
本发明所要解决的技术问题是提供一种实现分布式I/O资源池化的方法与装置,实现分布式I/O资源能被分布式计算系统中任何根节点直接使用。
为了实现上述目的,本发明提供一种实现分布式I/O资源池化的装置,其中:包括:
主控制根节点,用于管理其所在计算节点内的所有I/O节点,所述主控制根节点可配置为所述计算节点所连接的多个根节点中的任意一个根节点;
I/O资源虚拟模块,用于虚拟化其对应的物理I/O节点具备同时被多个所述根节点共享的能力;
I/O资源代理模块,用于代理驻留在本地或者远程计算节点连接的I/O节点中的I/O资源,实现I/O资源从一个PCIe域到另一个PCIe域的映射,使能根节点和I/O资源间跨计算节点跨PCIe域的透明通信;
交换结构配置模块,为每个根节点配置一个独立的虚拟PCIe交换机,分布式的I/O资源以功能为单位通过分配挂载到目标根节点对应的虚拟PCIe交换机上,进而为目标根节点使用。
上述的分布式I/O资源池化装置,其中:计算节点是由根节点、互连控制器和I/O节点组成的计算系统。多个根节点和多个I/O设备通过互连控制器进行互连,多个计算节点互连形成一个可扩展的分布式计算系统。
上述的分布式I/O资源池化装置,其中:I/O资源代理模块包括:
I/O资源一级代理模块,代理本地计算节点中与其直接连接的物理I/O节点资源,使共享所述I/O资源的本地或者远程计算节点中的根节点能且仅能访问分配到的I/O资源。
I/O资源二级代理模块,代理远程其他计算节点中的物理I/O节点资源,使本地计算节点的根节点能且仅能访问分配到的远程I/O资源。
上述的分布式I/O资源池化装置,其中,挂载到虚拟PCIe交换机上为根节点使用的分布式的I/O资源,或者为驻留在本地计算节点连接的物理I/O节点中的I/O资源;或者为驻留在远程计算节点连接的物理I/O节点中的I/O资源。
上述的分布式I/O资源池化装置,其中:互连控制器包括:上述的分布式I/O资源池化装置,使能组成分布式计算系统的各计算节点连接的I/O资源全局共享。
为了更好地实现上述目的,本发明还提供了一种实现分布式I/O资源池化的方法,其中,包括如下步骤:
映射计算节点中的所有I/O节点到一个主控制根节点PCIe域,所述主控制根节点可配置为所述计算节点所连接的多个根节点中的任意一个根节点;
虚拟化I/O节点,使其具备同时被多个根节点共享的能力,形成一个分布式的I/O资源池;
启动I/O资源分配,动态为分布式计算系统中各计算节点中各根节点分配I/O资源;
I/O资源重映射,进行I/O资源在其所分配到的根节点PCIe域和其所属的主控制根节点PCIe域间的映射,实现根节点与I/O节点间的透明通信。
上述的一种实现分布式I/O资源池化的方法,其中,在所述启动I/O资源分配步骤中,进一步包括如下步骤:
接收并判定管理用户发来的I/O资源配置指令;如果接收到的指令是一个I/O资源分配指令,转向步骤解析I/O资源分配指令;如果接收到的指令是一个I/O资源回收指令,转向步骤解析I/O资源回收指令;
解析I/O资源分配指令,并建立指令指示的I/O资源在其所属的主控制根节点PCIe域与其分配到的根节点PCIe域间的ID映射信息;
引导I/O资源分配指令指示的根节点进行PCIe重扫描,将分配的I/O资源映射到指示的根节点PCIe域,同时建立所述I/O资源在其所属的主控制根节点PCIe域与其分配到的根节点PCIe域间的内存映射地址映射信息,转向步骤转向步骤接收I/O资源配置指令继续接收并执行指令;
解析I/O资源回收指令,并引导I/O资源回收指令指示的根节点启动热拔出过程,释放指令中指示的I/O资源;
I/O资源从指示的根节点成功拔除之后,删除对应I/O资源在其分配到的从属根节点PCIe域的映射信息,转向步骤接收I/O资源配置指令继续接收并执行指令。
上述的一种实现分布式I/O资源池化的方法,其中:所述I/O资源重映射包括:
从根节点到I/O资源的下行事务的下行ID重映射,指I/O资源从其所分配到的从属根节点PCIe域到其所属的主控制根节点PCIe域的ID映射;
从根节点到I/O资源的下行事务的内存映射地址重映射,指I/O资源从其所分配到的从属根节点PCIe域到其所属的主控制根节点PCIe域的内存映射地址映射;
从I/O资源到根节点的上行事务的上行ID重映射,指I/O资源从其所属的主控制根节点PCIe域到其所分配到的从属根节点PCIe域的ID映射。
本发明的有益效果为:
本发明是虚拟化分布在由可扩展数目的计算节点互连组成的分布式计算系统中的I/O节点形成一个I/O资源池,并能够将所述I/O资源池的I/O资源以I/O功能为单位提供给分布式计算系统中任何根节点直接使用。实现了非原生多根虚拟化I/O设备资源池化,能使分布式计算系统中根节点对分布式I/O资源的灵活动态共享,提高了I/O设备的利用效率,降低了系统总体成本,并为系统提供了良好的可扩展性和易维护性。
具体实施方式
为了使本发明的目的、技术方案更加清楚明白,下面给出本发明的具体实施方式,结合附图及实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明。
在本申请人的申请号为“201310038675.0”,名称为“一种基于PCIe的数据通信的方法和系统”的中国发明专利申请中,公开了一种基于PCIe数据交换的通信方法及系统,该方法包括:启动PCIe交换机,并对与所述PCIe交换机进行通信的处理机和PCIe终端进行PCIe的设备搜索和配置;所述处理机或PCIe终端根据路由信息向所述PCIe交换机端口发送PCIe读写请求,所述端口使用兼容标准PCIe链路层协议的包格式和兼容标准PCIe路由的可扩展路由方式,将所述PCIe读写请求构造为数据包,并将其发送至对应端口;所述对应端口将所述数据包还原为PCIe读写请求,并将其发送至处理机或PCIe终端。其实现了一种PCIe数据交换技术,解除PCIe总线的拓扑和路由限制,使得PCIe总线在扩展I/O设备的同时,实现多处理机间的通信,构建任意拓扑的可扩展互连网络。
参见图1-图2,图1为分布式计算系统概念示意图,描述了所述可扩展的分布式计算系统100的概念,图2为组成分布式计算系统的计算节点结构示意图。本发明的可扩展的分布式计算系统100是以计算节点为单元,多个计算节点互连组成的计算系统,系统中计算节点的数目是可扩展的。
参见图2,计算节点200由根节点101、102a~102n、互连控制器2和I/O节点3组成。计算节点200可以是包含多个根节点101、102a~102n、多个I/O节点3和一个互连控制器2的计算子系统,也可以是包含一个根节点101,多个I/O节点3和一个互连控制器2的子系统,也可以是包含多个根节点102a~102n和一个互连控制器2的子系统,还可以是包含一个根节点101、一个I/O节点3和一个互连控制器2的子系统。当计算节点200中连接有I/O节点3时,其中一个根节点101将被指定为主控制根节点101,对计算节点200内的I/O节点3具有控制权,计算节点200中的I/O节点3将首先映射到主控制根节点101的PCIe域。其他根节点102a~102n对I/O节点3拥有使用权。
所述互连控制器2,由三类端口和互连控制核心12组成。连接根节点101、102a~102n的接口称为主机端口9,连接I/O节点3的接口称为I/O端口10,与其他计算节点200相连的接口称为互连端口11。计算节点200通过互连控制器2可以与其他计算节点200互连。多个计算节点200互连组成一个可扩展的分布式计算系统100。
参见图1,由计算节点互连组成的分布式计算系统中,各互连控制器2互连形成一个交换网络,根节点和I/O节点分布连接到该网络上。通过本发明分布式I/O资源池化的方法,可以虚拟化分布在所述分布式计算系统100中的各I/O节点3形成一个I/O资源池,实现将所述I/O资源池的I/O资源以I/O功能为单位提供给分布式计算系统100中任何根节点1直接使用。所述根节点1是一个单根PCIe环境,由根联合体(RootComplex,RC)及其连接的CPU组(CPUset)和内存(Mem)组成。所述I/O节点3是常用的典型PCIe设备,如以太网卡等。为了使I/O资源能被多个根节点101通过直通模式高效的共享,所述I/O节点3包含多个虚拟功能或者物理功能。I/O节点3中所有I/O资源可以划分为以功能为单位的多个功能实体。
参见图3-图6,图3为本发明一实施例的分布式I/O资源全局共享的概念示意图,图4为本发明一实施例的计算节点的结构示意图,图5为I/O资源一级代理所在的I/O端口的结构示意图,图6为I/O资源二级代理所在的互连端口的结构示意图。各计算节点200通过互连控制器2的互连接口互连,形成一个分布式计算系统100。参见图3,本地计算节点201通过互连网络和远程计算节点202相连。通过本发明的分布式I/O资源池化装置,计算节点201~202能够虚拟化其直接连接的I/O节点3具备同时被多个根节点共享的能力。所述I/O节点中的I/O资源能够以I/O功能为单位提供给分布式计算系统中任何根节点101~102直接使用。本地计算节点201通过所述分布式I/O资源池化装置能够直接使用本地连接的I/O资源以及远程计算节点202连接的I/O资源。
参见图3,上述分布式I/O资源池化的装置,包括:主控制根节点101,用于管理其所在计算节点200内的所有I/O节点3,所述主控制根节点101可配置为所述计算节点200所连接的多个根节点中的任意一个根节点;I/O资源虚拟模块4,用于使能所述I/O节点3具备同时被多个所述根节点共享的能力;I/O资源代理模块5,用于代理驻留在本地或者远程计算节点连接的I/O节点3中的I/O资源,实现I/O资源从一个PCIe域到另一个PCIe域的映射,使能根节点和I/O资源间跨计算节点跨PCIe域的透明通信;交换配置模块6,可以为每个根节点101~102配置一个独立的虚拟PCIe交换机13,所述虚拟PCIe交换机包括一个上游PCIe-to-PCIe桥(P2P)15和多个下游PCIe-to-PCIe桥(P2P)16。I/O资源代理模块5代理的I/O资源以I/O功能为单位组成虚拟I/O设备14通过分配挂载到各虚拟PCIe交换机13上,为各根节点使用。所述虚拟I/O设备14是逻辑上的I/O设备,它实际将映射到I/O资源代理模块5代理的物理I/O节点3中的I/O资源。
参见图4,每个计算节点中的互连控制器2实现了本发明的分布式I/O资源池化装置。其中,互连控制核心12包含交换配置模块6,为每个根节点配置一个独立的虚拟PCIe交换机13,包括为各根节点配置一个上游P2P,通过主机接口9与根节点相连,以及根据需要为各根节点配置多个下游P2P,连接I/O端口10或者互连端口11中资源代理模块代理的本地I/O资源或者远程I/O资源。每个I/O端口10实现了I/O资源虚拟模块4,虚拟化其所连接的物理I/O节点3,使其具备同时被多个根节点共享使用的能力。每个I/O端口10和互连端口11均实现了I/O资源代理模块51~52,其中,I/O端口10中的I/O资源代理可以看做是I/O资源一级代理51,代理本地计算节点中与其直接连接的物理I/O节点3资源,使共享所述I/O资源的本地或者远程计算节点中的根节点能且仅能访问分配到的I/O资源。互连端口11中的I/O资源代理可以看做是I/O资源二级代理52,代理远程其他计算节点中的物理I/O节点资源,使能本地计算节点中根节点能且仅能访问分配到的驻留在远程计算节点中物理I/O节点3中的I/O资源。各计算节点通过本发明的分布式I/O资源装置,虚拟化分布在各计算节点中的I/O节点3形成一个I/O资源池,实现将所述I/O资源池的I/O资源以I/O功能为单位提供给分布式计算系统100中任何计算节点中任何根节点直接使用。
参见图5,物理I/O节点3通过I/O端口10与系统相连,并通过I/O端口10实现同时为多个根节点101共享使用。I/O端口包括两个功能模块:I/O资源虚拟模块4和I/O资源一级代理模块51。其中I/O资源一级代理模块又包含直接I/O代理模块511和热插拔控制模块512。I/O资源虚拟模块4虚拟化其所在I/O端口10连接的I/O节点3,使其具备同时被多个根节点101~102共享使用的能力。I/O资源一级代理模块51作为其所在I/O端口10所连接的物理I/O节点3资源的一级代理,受理其所代理的I/O资源分配。直接I/O代理模块511维护所述I/O资源一级代理模块所代理的I/O节点3资源在其所分配到的从属根节点的PCIe域与其所属的主控制根节点101的PCIe域之间的映射信息;并处理其所代理的I/O节点3资源在其所分配到的从属根节点的PCIe域和其所属的主控制根节点101的PCIe域之间的映射,实现I/O端口10所连接的物理I/O节点3被多个根节点101~102直接使用。热插拔控制模块512一方面实现其所在I/O端口10连接的物理I/O节点3热插拔操作控制,使能计算节点中物理I/O节点3的更换或者升级;一方面实现其所在I/O端口10连接的物理I/O节点3中各功能在其从属根节点101~102的PCIe域的虚拟热插拔操作,使能向本地计算节点中的各根节点101~102动态删除和增加本地I/O节点3中的功能,实现本地I/O节点3在本地计算节点中多个根节点间的动态共享。
参见图6,各计算节点通过互连控制器的互连端口互连,形成一个分布式计算系统。计算节点中各互连端口11包含I/O资源二级代理模块52。I/O资源二级代理模块52又包含直接I/O代理模块521和热插拔模块522。I/O资源二级代理模块52作为其他远程计算节点中物理I/O节点3资源的代理,受理其所代理的I/O资源分配。直接I/O代理模块521记录其所代理的远程I/O节点3资源在其所分配到的从属根节点101~102的PCIe域与其所属的主控制根节点101的PCIe域之间的映射信息;并处理各功能在其所分配到的从属根节点101~102PCIe域和其所属的主控制根节点101PCIe域之间的映射,实现远程I/O节点3资源被本地多个根节点直接使用。热插拔控制模块522实现其所在互连端口11中I/O资源二级代理模块52代理的各远程I/O节点3中功能在本地计算节点中各根节点101~102PCIe域的虚拟热插拔操作,使能向本地计算节点中各根节点101~102动态删除和增加远程的I/O节点中的功能,实现远程I/O节点3在本地计算节点中多个根节点101~102间的动态共享。
本实施例中,分布式计算系统中的所有I/O节点3资源通过上述I/O端口10和互连端口11中的一级代理51和二级代理52,能够被灵活的配置给系统中任何计算节点中任何根节点101~102使用,实现了分布式I/O资源池化。
参见图7-图8,图7为本发明的分布式I/O资源池化的方法的流程图,图8为本发明的分布式I/O资源池化的方法中I/O资源分配过程流程图。本发明的实现分布式I/O资源池化的方法,首先将各计算节点连接的所有物理I/O节点3资源映射一个被称为主控制根节点1的PCIe域,然后再动态地将I/O资源映射到其他根节点1的PCIe域进而实现多根I/O资源共享。包括如下步骤:
步骤10,映射计算节点中的所有I/O节点到对应的主控制根节点PCIe域,上述计算节点指可扩展的分布式计算系统中包含有I/O节点的计算节点,上述主控制根节点可配置为所述计算节点所连接的多个根节点中的任意一个根节点;
步骤20,虚拟化I/O节点,通过各I/O端口10中的I/O资源虚拟模块4,虚拟化其所在I/O端口10连接的物理I/O节点3,使其具备同时被多个根节点共享的能力,形成一个分布式的I/O资源池;
步骤30,启动I/O资源分配,为分布式计算系统中各计算节点中各根节点101~102分配I/O资源,I/O资源代理模块5记录分配信息并建立I/O资源在所属的主控制根节点PCIe域与其分配到的从属根节点PCIe域间的映射,虚拟热插拔模块向其所在计算节点中相应根节点执行热插拔操作,告知根节点有I/O资源插入或者删除;
步骤40,I/O资源重映射,I/O资源代理模块截取所代理的I/O节点与所述I/O节点资源分配到的从属根节点间的通信事务包,进行I/O资源在其所分配到的从属根节点PCIe域和其所属的主控制根节点PCIe域间的映射,实现根节点与I/O节点间的透明通信。
其中,在所述I/O资源分配步骤中的I/O资源代理模块,包括两类:
I/O资源一级代理模块,代理本地计算节点中与其直接连接的物理I/O节点资源,使共享所述I/O资源的本地或者远程计算节点中的根节点能且仅能访问分配到的I/O资源。
I/O资源二级代理模块,代理远程其他计算节点中的物理I/O节点资源,使本地计算节点的根节点能且仅能访问分配到的远程I/O资源。
其中,在所述I/O资源分配步骤中,进一步包括如下步骤:
步骤301,接收并判定管理用户发来的I/O资源配置指令;如果接收到的指令是一个I/O资源分配指令,转向步骤302;如果接收到的指令是一个I/O资源回收指令,转向步骤304;
步骤302,解析I/O资源分配指令,I/O资源代理模块5建立指令指示的I/O功能在所属的主控制根节点PCIe域与其分配到的从属根节点PCIe域间的ID映射信息;
步骤303,引导I/O资源分配指令指示的根节点进行PCIe重扫描,将分配的I/O资源映射到指示的根节点PCIe域,同时建立所述I/O资源在所属的主控制根节点PCIe域与其分配到的从属根节点PCIe域间的内存映射地址映射信息,转向步骤301接收并执行I/O资源配置指令;
步骤304,引导I/O资源回收指令指示的根节点启动热插拔过程,释放指令中指示的I/O功能;
步骤305,I/O功能从指示的根节点成功拔除之后,I/O资源代理模块5删除对应I/O功能在其分配到的从属根节点PCIe域的映射信息,转向步骤301接收并执行I/O资源配置指令。
参见图9-图12,图9为I/O资源一级代理所维护的其代理的I/O资源的ID映射结构示意图,图10为I/O资源一级代理所维护的其代理的I/O资源的内存映射地址MMIO映射结构示意图,图11为I/O资源二级代理所维护的其代理的I/O资源的ID映射示意图,图12为I/O资源二级代理所维护的其代理的I/O资源的内存映射地址MMIO与ID映射结构示意图。由于本发明的分布式I/O资源池化着眼于分布式计算系统100全局所有I/O资源,而非局限于计算节点200本地的I/O资源,因此I/O资源的ID标识以及根节点1的ID标识使用全局统一编址。根节点101~102的ID标识(使用GlobalRNID表示)除了其在本地计算节点201中的ID(使用LocalRNID标识),还包括其所在计算节点201在整个分布式计算系统100的ID标识(使用SubSysID标识)。I/O资源的ID标识(GlobalRID)除了其在某根节点1的PCIe域的RoutingID,还包括其所属根节点101的在整个分布式计算系统100中的GlobalRNID标识。
对于分布式I/O资源池化,I/O端口10中I/O资源代理模块可以看作是与I/O端口10连接的物理I/O节点3资源的一级代理51。通过I/O端口10中的I/O资源一级代理模块51,共享所述I/O资源的根节点101~102能且仅能访问分配到的I/O资源。图9和图10描述了I/O端口10中I/O资源一级代理模块51维护的其所代理的I/O资源在所属的主控制根节点101的PCIe域与它被分配到的根节点(下文中称之为从属根节点,它可以是本地计算节点中的从属根节点,也可以其他计算节点中的任何节点)之间映射结构示意图。图9描述了I/O端口10中I/O资源一级代理51维护的其所代理的I/O资源在所属的主控制根节点101的PCIe域与它被分配到的从属根节点之间的ID映射结构示意图。其中,mRoutingID表示I/O功能在其所属的主控制根节点101的RoutingID,I/O功能在从属根节点的ID标识由其从属根节点的全局ID标识(GlobalRNID)和其在从属根节点的PCIe域的RoutingID(sRoutingID)组成。通过I/O端口10的基于ID路由的下行事务包,可根据事务包携带的GloabalRNID和sRoutingID查找其要访问的I/O资源在主控制根节点101的PCIe域的mRoutingID,进而能够将事务包定向到指定的物理I/O资源。相应的,通过I/O端口10的上行事务包,可根据事务包携带的mRoutingID查找到I/O资源当前映射到的从属根节点的GlobalRNID以及其在从属根节点的PCIe域的sRoutingID,进而将该事务包定向到指定的从属根节点。
图10描述了I/O端口10中I/O资源一级代理模块51维护的其所代理的I/O资源在所属的主控制根节点101的PCIe域与它被分配到的从属根节点之间的MMIO地址映射示意图。其中,I/O资源在从属根节点的MMIO地址由其从属根节点的全局ID标识(GlobalRNID)和其在从属根节点的PCIe域的MMIO(sMMIO)组成。mMMIO表示I/O功能在其所属主控制根节点101的MMIO地址。通过I/O端口10的基于MMIO地址路由的下行事务包,可根据事务包携带的GloabalRNID和sMMIO查找其要访问的I/O资源映射在主控制根节点101的PCIe域的mMMIO,进而能够将事务包定向到指定的物理I/O资源。
对于分布式I/O资源池化,互连端口11中I/O资源代理可以看作是远程其他计算节点202中物理I/O资源的二级代理52。通过互连端口11中的I/O资源二级代理模块52,本地计算节点201中根节点能且仅能访问分配到的I/O资源。图11和图12描述了互连端口11中I/O资源二级代理模块52维护的其所代理的远程I/O资源映射到本地根节点的PCIe域与它在所属的主控制根节点101的PCIe域之间映射结构示意图。
图11描述了互连端口11中I/O资源二级代理模块52维护的其所代理的远程I/O资源映射到本地根节点的PCIe域与它在所属的主控制根节点101的PCIe域之间的ID映射结构示意图。其中,I/O资源映射在本地根节点的ID由各根节点的本地ID标识(LocalRNID)和表示I/O资源映射在其从属根节点的PCIe域中的RoutingID(sRoutingID)组成;I/O资源在其所属主控制根节点101的ID标识由其所属主控制根节点101的全局ID标识(GlobalRNID)和其在所属主控制根节点101的PCIe域的RoutingID(mRoutingID)组成。通过互连端口11的基于ID路由的下行事务包,可根据事务包携带的LocalRNID和sRoutingID查找其要访问的I/O资源所在的主控制根节点101的ID标识GlobalRNID及其在所属主控制根节点101的PCIe域的mRoutingID。进而事务包通过打包成网络数据包,可以根据GlobalRNID路由到指定的I/O资源所在的目标远程计算节点2,并根据mRoutingID定向到指定的I/O资源。
图12描述了互连端口11中I/O资源二级代理模块52维护的其所代理的远程I/O资源映射到本地根节点的PCIe域的MMIO地址与它在其所属的主控制根节点101的PCIe域ID标识之间映射示意图。其中,I/O资源映射在本地根节点的MMIO地址由各根节点的本地ID标识(LocalRNID)和表示I/O资源映射在其从属根节点的PCIe域中的MMIO(sMMIO)组成;I/O资源在其所属的主控制根节点101的ID标识由其所属主控制根节点101的全局ID标识(GlobalRNID)和其在所属主控制根节点101的PCIe域的RoutingID(mRoutingID)组成。通过互连端口11的基于MMIO地址路由的下行事务包,可根据事务包携带的LocalRNID和sMMIO查找其要访问的I/O资源所在的主控制根节点101的ID标识GlobalRNID及其在所属主控制根节点101的PCIe域的mRoutingID。进而事务包通过打包成网络数据包,可以根据GlobalRNID路由到指定的I/O资源所在的I/O资源共享计算节点,并根据mRoutingID定向到指定的I/O资源。
参见图13-16,图13为I/O资源被本地计算节点中根节点共享时下行PCIe事务流程示意图,图14为I/O资源被本地计算节点中根节点共享时上行PCIe事务流程示意图,图15为I/O资源被远程I/O资源共享计算节点中根节点共享时下行PCIe事务流程示意图,图16为I/O资源被远程I/O资源共享计算节点中根节点共享时上行PCIe事务流程示意图。
图13描述了I/O资源被本地计算节点中根节点共享时下行PCIe事务流程示意图。包括以下:
步骤410,主机端口9接收从根节点101~102发出的下行PCIe事务包,修改事务包使其携带上其所属的根节点ID(GlobalRNID),并将其经互连控制核心传递到指定I/O资源所在的I/O端口10;
步骤420,I/O端口10接收下行事务包;
步骤430,I/O端口10对下行PCIe事务包进行判定;
步骤431,如果是来自本地计算节点201主控制根节点101的下行PCIe事务包,则直接传递给物理I/O节点3;
步骤432,如果是来自本地计算节点的非主控制根节点102a~102b或者远程计算节点202的根节点,则进行事物包路由方式判定;如果是基于ID路由的下行PCIe事务包,则进行下行ID重映射,转向步骤440;如果基于MMIO地址路由的下行PCIe事务包,则进行地址重映射,转向步骤460;
步骤440,下行ID重映射,提取下行PCIe事务包携带的GloabalRNID和sRoutingID查找I/O资源一级代理模块51中如图9所示的映射表,获取其要访问的I/O资源在主控制根节点101的PCIe域的mRoutingID。
步骤441,判断是否存在匹配项,如果存在匹配的mRoutingID,则进行步骤442,修改事务包中sRoutingID为mRoutingID,即可将其定向到指定的物理I/O资源,转向步骤450;否则,如果不存在匹配的mRoutingID,转向步骤480;
步骤450,事务包访问的资源类型判定,如果是对虚拟资源的访问,则进行步骤451,将事务包传递给I/O资源虚拟模块4,由I/O资源虚拟模块4进行模拟访问;否则,进行步骤431,将事务包直接传递给物理I/O节点3;
步骤460,地址重映射,提取下行PCIe事务包携带的GloabalRNID和sMMIO查找I/O资源一级代理模块51中如图10所示的映射表,获取其要访问的I/O资源映射在主控制根节点101PCIe域的mMMIO;
步骤461,判断是否存在匹配项,如果存在匹配的mMMIO,则转向步骤470;否则,如果不存在匹配的mMMIO,转向步骤480;
步骤470,修改事务包中sMMIO为mMMIO,即可将其定向到指定的物理I/O资源;
步骤480,向事务包GloabalRNID指示的根节点返回一个不支持的完成包。
图14描述了I/O资源被本地计算节点中根节点共享时上行PCIe事务流程示意图。
步骤610,I/O端口10接收来着物理I/O节点3的上行PCIe事务包;
步骤620,上行ID重映射,I/O端口10提取上行PCIe事务包中mRoutingID,查找I/O资源一级代理模块51中如图9所示的映射表,获取mRoutingID指示的I/O资源所分配到的从属根节点的ID标识GlobalRNID,以及其在从属根节点的PCIe域的RoutingIDsRoutingID。
步骤630,事务包修改,使用查找获得的sRoutingID替换事务包中的RoutingID,并携带获取的GlobalRNID信息;
步骤640,互连控制核心根据GlolbalRNID交换传递上行PCIe事务包,互连控制核心根据上行PCIe事务包中携带的GlobalRNID将其定向到指定的根节点连接的主机端口9;
步骤650,主机端口9还原PCIe事务包,传给主机,主机端口9去掉收到的上行PCIe事务包的GlobalRNID标识,并将还原的PCIe事务包传递给根节点。
图15描述了I/O资源被远程计算节点中根节点共享时下行PCIe事务流程示意图。
步骤110,主机端口9接收从根节点发出的下行PCIe事务包,修改事务包使其携带上其所属的根节点的ID(GlobalRNID),并将其经互连控制核心传递到代理指定I/O资源的互连端口11;
步骤120,互连端口11接收下行事务包;
步骤130,互连端口11对下行PCIe事务包进行判定并通过I/O资源二级代理(IORA)模块52重映射;如果是基于ID路由的下行PCIe事务包,则转向步骤140进行下行ID重映射;如果是基于MMIO地址路由的下行PCIe事务包,则转向步骤150进行远程I/O资源的ID查找;
步骤140,下行ID重映射,提取所述下行PCIe事务包携带的GloabalRNID和sRoutingID查找图11所示的映射表,获取其要访问的远程I/O资源所属的主控制根节点101的ID标识GlobalRNID及其在所属主控制根节点101的PCIe域中的RoutingID标识mRoutingID,并进行步骤141,判断是否存在匹配项,如果存在匹配项,则转向步骤142修改事务包中sRoutingID为mRoutingID,
步骤150,远程I/O资源的ID查找,提取下行PCIe事务包携带的GloabalRNID和sMMIO查找图11所示的映射表,获取其要访问的远程I/O资源所属的主控制根节点101的ID标识GlobalRNID及其在所属主控制根节点101的PCIe域中的RoutingID标识mRoutingID,并进行步骤151,判断是否存在匹配项,如果存在匹配项,转向步骤170;否则,如果不存在匹配项,则转向步骤160;
步骤160,向事务包GloabalRNID指示的根节点返回一个不支持的完成包;
步骤170,将所述事务包根据查找到的GlobalRNID打包成网络数据包,经互连端口11发送,
步骤210,打包成网络数据包的事务包经互连网络传递到事务包携带的GlobalRNID指示的远程计算节点的互连端口11;
步骤310,目的计算节点的互连端口11接收到网络数据包,解封装获得PCIe事务包;
步骤320,目的端互连端口11提取事务包的RoutingID,将其传递给RoutingID指示I/O资源连接到的I/O端口10;
步骤330,I/O端口10接收下行事物包;
步骤340,I/O端口10对来自远程计算节点中根节点的下行PCIe事务包进行判定;如果是基于ID路由的下行PCIe事务包,转向步骤350;如果是基于MMIO地址路由的下行PCIe事务包,则进行地址重映射,转向步骤360;
步骤350,I/O资源一级代理模块对ID重映射的事务包所访问的资源类型进行判定,如果是对虚拟资源的访问,则进行步骤351,I/O资源虚拟模块4提取相应的虚拟资源进行模拟响应;否则,进行步骤352,将事务包直接传递给物理I/O节点3,由物理I/O节点3直接响应;
步骤360,提取下行PCIe事务包携带的GloabalRNID和sMMIO查找图12所示的映射表,获取其要访问的I/O资源映射在主控制根节点101的PCIe域的mMMIO;
步骤361,修改事务包中sMMIO为mMMIO,将其定向到指定的物理I/O资源。
图16描述了I/O资源被远程计算节点中根节点共享时上行PCIe事务流程图。
步骤810,I/O端口10接收来着物理I/O节点3的上行PCIe事务包;
步骤820,上行ID重映射,I/O端口10模块提取上行PCIe事务包中mRoutingID,查找I/O资源一级代理中如图10所示的映射表,获取mRoutingID指示的I/O资源所分配到的从属根节点的ID标识GlobalRNID,以及其在从属根节点的PCIe域的RoutingID。使用查找获得的RoutingID替换事务包中的RoutingID,并携带获取到的GlobalRNID信息;
步骤830,基于互连控制核心根据上行PCIe事务包中携带的GlobalRNID将其传递给对应的互连端口11;
步骤840,互连端口11接收到来自I/O端口10的PCIe事务包,根据事务包中携带的GlobalRNID打包成网络数据包,经互连端口11发送,转向步骤210;
步骤210,打包成网络数据包的事务包经互连网络传递到事务包携带的GlobalRNID指示的目标远程计算节点的互连端口11;
步骤710,目标远程计算节点的互连端口11接收并解析网络数据包,将指向本地的网络数据包解封装,并通过其包含的I/O资源二级代理52模块进行处理;
步骤720,互连控制核心根据上行PCIe事务包中携带的GlobalRNID传递事务包到指定的主机端口9;
步骤730,主机端口9去掉收到的上行PCIe事务包的GlobalRNID标识,并将还原的PCIe事务包传递给根节点。
本发明是由直接互连的计算节点组成的分布式计算系统,其虚拟化分布在全局计算系统中的I/O设备形成一个I/O资源池,并能够将所述I/O资源池的I/O资源以I/O功能为单位提供给分布式系统中任何根节点直接使用。实现了非原生多根虚拟化I/O设备资源池化,能使分布式计算系统中根节点对分布式I/O资源的灵活动态共享,提高了I/O设备的利用效率,降低了系统总体成本,并为系统提供了良好的可扩展性和易维护性。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。