用套接字连接和共享存储器在主机系统间通信的系统和方法

文档序号:6612976阅读:157来源:国知局
专利名称:用套接字连接和共享存储器在主机系统间通信的系统和方法
技术领域
本申请一般涉及改进的数据处理系统和方法。更具体地,本申 请涉及用于使用套接字连接和共享存储器在主机系统之间进行通信 的机制。
背景技术
大部分现代计算设备利用使用外围组件互连标准的某个版本或
实现的总线和输入/输出u/o)适配器,其中外围组件互连标准最初
由英特尔公司在20世纪90年代建立。外围组件互连(PCI)标准规 定了用于将外围组件附接到计算机主板的计算机总线。PCT Express 或PCIe是使用现有PCI编程概念的PCI计算机总线的实现,但是该
实现是基于完全不同且更快的串行物理层通信协议的计算机总线。 物理层不包括可以在多个设备之间共享的双向总线,而是包括严格 地连接到两个设备的单一单向链路。
图1是示出了根据PCIe规范的PCI Express ( PCIe )架构拓朴的 示意图。如图1所示,PCIe架构拓朴100包括耦合到根联合体130 的主处理器(CPU) IOO和存储器120,根联合体130接着耦合到一 个或多个PCIe端点140 (在PCIe规范中使用术语"端点"来表示支 持PCIe的I/O适配器)、PCI Express-PCI桥150以及一个或多个互 连交换机160。根联合体130表示将CPU/存储器连接到I/O适配器 的1/0层级的根。根联合体130包括主桥、集成了零个或多个根联合 体的端点、零个或多个根联合体事件收集器、以及一个或多个根端 口 。每个根端口支持单独的1/0层级。I/0层级可以包括根联合体130、 零个或多个互连交换机160和/或桥150(其包含交换或PCIe架构)、
以及一个或者多个诸如端点170和182-188的端点。关于PCI和PCIe 的更多信息,参见在外围组件互连特殊兴趣组(PCI-SIG)的网站 www.pcisig.com上可获得的PCI和PCIe规范。
今天,将PCI和PCIe 1/0适配器、总线等集成到包括刀片服务 器的刀片的几乎每一个计算设备的主板上。刀片服务器本质上是用 于大量的单独的最小封装的计算机主板"刀片"的壳体,每个刀片 包括一个或多个处理器、计算机存储器、计算机存储设备和计算机 网络连接,但共享机箱的公共电源和空气冷却资源。刀片服务器对 于诸如Web主控和集群计算的特定用途是理想的。
如前所述,通常将PCI和PCIel/0适配器集成到刀片自身之中。 结果,在相同刀片服务器的刀片之间无法共享1/0适配器。而且,I/O 适配器的集成限制了链路速率的可扩展性。即,随着时间的过去, 链路速率无法随着处理器性能而扩展。到目前为止,还没有设计出 一种机制以允许由多个系统镜像跨过多个刀片而共享PCI和PCIe 1/0适配器。而且,还没有设计出一种机制以允许以非集成的方式来 提供PCI和PCIe I/O适配器,以供刀片服务器中的多个刀片使用。

发明内容
为了解决由于当前PCI和PCIe 1/0适配器集成的限制,说明性 的实施方式提供了一种机制,其允许由两个或更多的系统镜像(SI) 本地地共享PCIe适配器。例如,提供一种机制,用于使在相同根联 合体内或跨过多个根联合体(RC )的多个SI能够同时共享例如PCIe I/O适配器的端点,其中所述多个根联合体(RC)共享(即,耦合 到)公共PCI交换架构。该机制允许每个根联合体及其相关联的物 理和/或虚拟端点(VEP)具有其自身唯一的PCI存储器地址空间。
此外,在基本的PCI规范中缺少但对于管理由端点的共享而产 生的联合体配置所需要的是用于确定和管理在端点中的可能的PCI 功能的組合的必要性。因此,此处说明性的实施方式提供了用于在 刀片服务器中的第一刀片的一个根联合体与在相同或不同刀片服务器中的第二刀片的第二根联合体进行通信的机制。该说明性的实施 方式通过提供一种机制来支持这种通信,该机制用以初始化在用于 支持这种通信的多根刀片集群的根联合体和端点之间的共享存储 器。
在一个说明性的实施方式中,多根PCIe配置管理器(MR-PCIM) 通过发现PCIe交换架构(即,PCIe层级)以及通过遍历所有经由 PCIe交换架构的互连的交换机可访问的所有链路,来初始化在根联 合体和端点之间的共享存储器。因为遍历了链路,MR-PCIM比较针 对根联合体和端点的每个而获得的信息,以确定哪个端点和根联合 体位于相同刀片上。然后,生成虚拟PCIe树数据结构,该虚拟PCIe 树数据结构将在PCIe交换架构上可用的端点绑定到每个根联合体。 作为相同PCI树的部分(即,关联于同一根联合体)的端点在虚拟 PCIe树数据结构中是相关联的。
然后,MR-PCIM在端点所属的PCIe存储器地址空间内对于每 个端点给出一个基(base)和界限。类似地,然后,MR-PCIM在才艮 联合体所属的PCIe存储器地址空间内对于每个根联合体给出 一 个基 和界限。为了在各种端点和根联合体的PCIe存储器地址空间之间的 映射,可以生成存储器转换和保护表数据结构。
例如,对于特定的端点或根联合体,该端点或根联合体可以与 第一主机的实际存储器地址空间相关联。通过第二主机,经由第二 主存储器上的PCIe孔径(aperture),可以访问相同的端点或根联合 体,其中该第二主存储器作为直接存储器访问I/O,通过第一主机的 PCI总线存储器地址是可访问的。第一主机可以使用存储器转换和保 护表数据结构以将由第二主机看到的P CI e存储器地址映射到第 一 主 机的实际存储器地址。
在另 一 个说明性的实施方式中,已经初始化了主机系统的存储 器地址空间,使得可以跨过主机系统由根联合体访问端点,然后, 可使用这些存储器地址空间以允许与这些根联合体相关联的系统镜 像和它们对应的应用来与端点进行通信。 支持这种通信的 一 种方式是通过队列系统,其中队列系统利用 在不同主机系统中的这些经初始化的存储器地址空间。这种队列系 统可包括工作队列结构和完成队列结构。工作队列结构和完成队列
结构二者可包括用于识别大量队列单元(工作队列单元(WQE) 或者完成队列单元(CQE),这依赖于该队列结构是工作队列结构 还是完成队列结构)的门钤结构、用于队列的起始的基地址、用于 队列的末尾的界限地址和指示在队列中将要被处理的下 一 个WQE 或CQE的偏移量。可以使用工作队列结构和完成队列结构二者来发 送和接收数据。
可在对应于将与其进行通信的根联合体和端点的主机系统存储 器的部分中提供队列结构和门铃结构。可以生成队列单元,并将所 述队列单元添加到队列结构中,以及可以写入门铃结构,以1更由此 就队列单元可用于处理而通知端点或根联合体。可以执行PCIe DMA 操作,以取回队列单元以及对应于该队列单元的数据。而且,可以 执行PCIe DMA操作,以返回完成队列单元(CQE),来指示对队 列单元的处理的完成。
根据示例性的一个实施方式,可建立一种面向事务的协议,用 于使用说明性的实施方式的共享存储器来在相同或不同的主机系统 的根联合体和端点之间进行通信。该面向事务的协议规定了将由例 如根联合体或端点的各种单元执行的 一 系列事务,用以推送或拉回 (push or pull)数据。在不脱离本发明的精神和范围的情况下,可利 用多种推送和拉回事务的组合。之后,在详细说明中将更详细地描 述各种组合。
此外,说明性的实施方式的机制可进一步用于支持在相同或不 同主机系统的根联合体和端点之间通过上述的共享存储器而进行的 基于套接字协议的通信。利用这种基于套接字的通信,可使用在主
机系统中的工作队列以侦听输入的套接字初始化请求。即,希望与 第二主机系统建立套接字通信连接的第一主机系统可在其工作队列 中生成套接字初始化请求WQE,并可以向该第二主才几系统通知该套
接字初始化请求WQE对处理可用。
然后,第二主机系统可接受或拒绝该请求。如果第二主机系统 接受该请求,则其返回套接字参数的后半个用于由第一主机系统执 行在第一和第二主机系统之间的基于套接字的通信中使用。这些参 数可以规定队列结构中将要与套接字相关联的部分以及门铃结构, 门铃结构用于通知主机系统何时可获得队列单元用于经由套接字进 行处理。实际的套接字通信可能涉及例如在主机系统之间拉回事务
和/或推送事务。
在根联合体之间的资源的本地共享创建了在PCIe架构中的实体 和主机系统之间的关系,其可被利用以提供在系统镜像之间和/或端 点之间迁移功能及其相关联的应用的机制。需要该迁移功能性,以 满足在系统管理领域中对负载均衡能力的不断增长的需要。当前在 PCIe规范中缺少这种机制。
在一个说明性的实施方式中,单根PCI配置管理器(SR-PCIM) 提供了具有由端点(EP)支持的可能的虛拟功能(VF)迁移场景的 系统镜像。执行管理任务的系统管理员或软件应用(例如,负载均 衡应用)可以执行命令,该命令向单根PCI管理器(SR-PCIM)指 示需要进行从一个SI到另一个的对VF和与该VF相关联的应用的 无状态迁移。通过迁移该VF及其相关联的应用(其是依赖于VF而 操作的应用),可补充不同的资源,以在更有效的环境中继续操作。 例如,利用负载均衡,可以使用所述说明性的实施方式的机制来移 动以太网VF及其相关联的依赖的应用,以便利用在不同物理功能 (PF)上可用的较快的连接(较少拥塞)的优势,该物理功能(PF) 可以与不同的si或甚至EP关联在一起。
运行在主机系统上的软件中介(SWI)或虚拟化中介指示SI来 完成对VF的未完成的请求,并且接下来,启动所需的任何进程以将 其停止。 一旦由SI向该SWI通知了已经完成了对VF的所有请求, 则SWI可以将与VF相关联的任何应用从SI移除,并将VF从相关 联的物理功能(PF)中分离。
然后,SWI可以将VF附加到目标PF,该PF可以在相同或不同 的EP中。而且,目标PF可以与不同的SI相关联。SWI使VF对于 现在与该VF相关联的SI可用,并指令SI来配置VF。 SI配置VF, 由此使其对于相关联的应用可用。然后,SWI可以指令SI来启动相 关联的应用,从而它们可以在新迁移的VF上使用该资源。
除了上文的机制,说明性的实施方式进一 步提供了用于执行将 新组件热插入到运行中的多根PCIe架构或从运行中的多根PCle架 构中热拔出新组件的功能性。这些机制允许根联合体例如热插入到 运行中的PCIe架构或从运行中的PCIe架构中热拔出。例如,可将 刀片热插入到刀片机箱,而其相关联的根联合体可以实时地结合到 在现有系统中的PCIe架构之中。
这种热插/拔能力允许PCIe架构增长,并允许跨过新合并的根联 合体而本地地共享虛拟功能。因此,可扩展PCIe架构而无需为此关 闭系统。PCI-SIG I/O虛拟化标准没有提供用于CPIe架构的这种动态 扩展的能力或标准。
在一个示出的实施方式中,提供了一种用于在第一主机系统和 第二主机系统之间进行通信的方法。该方法可以包括初始化在第一 主机系统的共享存储器中的存储器地址空间,以包括分配给与第二 主机系统相关联的端,泉的地址范围。该方法还可以包括在地址范围 内生成工作队列结构,由第 一主机系统将套接字初始化请求记入到 工作队列结构,以及由第二主机系统经由端点从工作队列结构取回 套接字初始化请求。该方法还可以包括基于套接字初始化请求,在 第一主机系统和第二主机系统之间建立套接字通信连接。此外,该 方法可以包括使用建立的套接字通信连接来处理在第 一 主机系统和 第二主机系统之间的发送和接收通信。
初始化在第 一主机系统的共享存储器中的存储器地址空间可以 包括处理对于端点的重要产品数据(VPD)信息。VPD信息可以 包括指示端点是否支持套接字连接的字段。仅在VPD信息指示端点 支持套接字连接的情况下,将将套接字初始化请求记入工作队列结
构。
该方法可以包括响应于记入套4秦字初始化请求,对共享存4诸 器中的门铃结构执行写操作。该方法还可以包括由第二主机系统对 门铃结构进行轮询,以确定套接字初始化请求是否可用于由第二主 才几系统处理。
该方法可以包括由第二主机系统经由端点来执行直接存储器访 问(DMA)操作,以基于在门铃结构中提供的信息来从工作队列结 构取回套接字初始化请求。该方法还可以包括由第二主机系统解析 套接字初始化请求,以及由第二主机系统确定是否接受或拒绝该套 接字初始化请求。此外,该方法可以包括由第二主机系统基于确定 是否接受或拒绝套接字初始化请求的结果来向第一主机系统发送响 应。
套接字初始化请求可以包含基地址、界限、以及在工作队列结 构内的起始偏移量,以用于建立套接字通信连接的第 一部分参数。 该方法还可以包括从端点对第一主机系统的根联合体执行DMA操 作,以在确定接受套接字初始化请求的情况下,来传输用于建立套 接字通信连接的第二部分参数。用于建立套接字通信连接的第二部 分参数可以包括在与第二主机系统相关联的共享存储器中提供的基 地址、界限、以及在工作队列结构内的起始偏移量。
发送和接收操作可以包括根据建立的事务协议的推送操作或拉 回操作中的至少 一个。推送操作和拉回操作可以是直接存储器访问 (DMA )操作。
初始化在第 一 主机系统的共享存储器中的存储器地址空间可以 包括遍历在数据处理系统的通信架构中的链路,以收集关于通信 架构中存在的端点和根联合体的信息。可以生成至少一个虛拟层级, 该虚拟层级标识在物理上或逻辑上相互关联的至少一个端点和至少 一个根联合体。可以基于至少一个虛拟层级来初始化存储器地址空 间,使得与第 一 主机系统的根联合体相关联的每个端点在存储器地 址空间中具有相应的地址范围。数据处理系统可以是刀片服务器,以及第 一 主机系统和第二主 机系统可以是刀片服务器中的刀片。数据处理系统可以包括第一主
机系统和第二主机系统与之耦合的外围组件互连Express ( PCIe )架 构。端点可以是PCIe适配器。PCIe架构可以是包括一个或多个多根 感知(MRA)交换机的多根感知PCIe架构。
在另一个示出的实施方式中,提供了一种计算机程序产品,其 包括具有计算机可读程序的计算机可用介质。当在计算设备上执行 计算机可读程序时,将使计算设备执行上文关于方法的说明书的实 施方式中所概括的各种操作及其组合。
在另一个示出的实施方式中,提供了一种数据处理系统。该数 据处理系统可以包括第 一主机系统、第二主机系统以及耦合第 一主 机系统和第二主机系统的通信架构。数据处理系统还可以执行上文
在下文对本发明的示例性实施方式的详细描述中,将描述本发 明的这些和其他特征及优点,而当看到在下文的对本发明的示例性 实施方式的详细描述时,本发明的这些和其他特征及优点对本领域 普通技术人员将变得显而易见。


在所附的权利要求中阐明了确信新颖的本发明的特征。然而, 通过结合附图阅读下文对说明性的实施方式的详细描述,将更好地 理解本发明自身、以及优选的使用模式、其进一步的目标和优点, 其中
图1是示出了在本领域公知的PCIe架构拓朴的示例性示意图2是示出了在本领域公知的系统虚拟化的示例性示意图3是示出了使用1/0虛拟化中介对PCI根联合体的1/0进行虚 拟化的第 一 方法的示例性示意图4是示出了使用本地共享的PCI 1/0适配器对PCI根联合体的 I/O进行虚拟化的第二方法的示例性示意图;图5是支持PCIe I/O虛拟化的端点的示例性示意图; 图6是示出了没有本地虚拟化的单根端点的物理和虚拟功能的 示例性示意图7是示出了支持本地I/0虛拟化的单根端点的物理和虚拟功能 的示例性示意图8是示出了根据 一 个说明性的实施方式的多根虚拟化I/O拓朴 的示例性示意图9是示出了根据 一 个说明性的实施方式的从根节点的 SR-PCIM的视角的多根虛拟化I/O拓朴的虚拟层级视图的示例性示 意图IO是示出了根据一个说明性的实施方式的基于共享存储器的 PCIe系统的示例性示意图IIA和11B是表示了根据一个说明性的实施方式的示例性虚 拟PCI树数据结构的示意图12是概括了根据一个说明性的实施方式的用于为端点的共享 而将主机系统的存储器地址空间进行初始化的示例性操作的流程 图13是示出了根据一个说明性的实施方式的用于从第一主机系 统向第二主机系统发送工作队列单元(WQE)的过程的示例性的框 图14是示出了根据一个说明性的实施方式的用于从第二主机系 统向第一主机系统发送完成队列单元(CQE)的过程的示例性的框
图15是概括了根据一个示例性实施方式的用于在第一主机系统 的根联合体和与第二主机系统相关联的端点之间传送WQE的示例 性操作的示例性流程图16是概括了根据 一 个示例性实施方式的用于从第二主机系统 的端点向第 一主机系统的根联合体传送CQE的示例性操作的示例性 流程图17是示出了可以用于在相同或不同的主机系统的根联合体和
端点之间执行通信的事务的各种可能的组合的示例性表;
图18是示出了根据一个示例性实时方式的用于建立套接字并在 第 一主机系统和第二主机系统之间执行基于套接字的通信的过程的 示例性框图19是概括了根据 一 个说明性的实施方式的用于使用基于套接 字的通信连接来执行拉回事务的示例性操作的流程图20是概括了根据一个说明性的实施方式的用于使用基于套接 字的通信连接而执行推送事务的示例性操作的流程图21A和21B是示出了根据一个说明性的实施方式的从在相同 PCIe适配器上的一个物理功能向另一个物理功能的虚拟功能及其相 关联的应用的单根无状态迁移的示例性示意图22A和22B是示出了根据一个说明性的实施方式的从一个 PCIe适配器向另一个PCIe适配器的虚拟功能及其相关联的应用的 单根无状态迁移的示例性示意图23A和23B是示出了根据一个说明性的实施方式的从一个系 统镜像向另 一 个系统镜像的虚拟功能及其相关联的应用的单根无状 态迁移的示例性示意图2 4是概括了根据 一 个说明性的实施方式的用于迁移虚拟功能 的示例性操作的流程图25是示出了根据一个说明性的实施方式的用于根联合体的热 插入操作的示例性框图26是概括了根据一个说明性的实施方式的用于向PCIe架构 增加组件的示例性操作的流程图;以及
图27是概括了根据一个说明性的实施方式的用于从PCIe架构 动态移除组件的示例性操作的流程图。
具体实施例方式
说明性的实施方式提供了 一种机制,该机制允许由相同或不同的根联合体的两个或更多系统镜像(SI)来本地地(natively)共享 PCIe适配器或"端点",其中所述相同或不同的根联合体可以位于 相同或不同的根节点(例如,刀片服务器的刀片)上。另外,说明 性的实施方式提供了 一种支持在系统镜像和本地共享的端点之间的 通信的机制。此外,说明性的实施方式提供了用于在虚拟平面 (plane)、根联合体和系统镜像之间迁移虚拟功能的机制,以实现 对PCIe架构的管理。另外,说明性的实施方式提供了一种机制,其 中通过该机制,根联合体的单根PCI管理器(SR-PCIM)能够从端 点读取该端点的实现者在设计该端点时所允许的功能的有效组合。 然后,SR-PCIM可以设置将在当前配置中使用的功能的组合,其中 在该当前配置中正在使用该端点。
图2是示出了本领域中公知的系统虛拟化的示例性示意图。系 统虚拟化是对物理系统的处理器、存储器、1/0适配器、存储设备以 及其他资源的划分,其中每组资源与其自身的系统镜像实例和应用 一起独立地操作。在这种系统虛拟化中,虚拟资源由物理资源组成, 并作为物理资源的代理来操作,其中物理资源例如为具有相同外部 接口和功能的存储器、磁盘驱动器以及具有构建的接口 /功能的其他
硬件组件。系统虛拟化通常利用虛拟化中介,该虚拟化中介创建虚 拟资源并将其映射到物理资源,由此提供虛拟资源之间的隔离。通 常,将虛拟化中介提供作为软件、固件和硬件机制之一或其组合。
如图2所示,通常在虛拟化系统中,应用210与系统镜像(SI) 220进行通信,其中该系统镜像(SI) 220为诸如通用或专用操作系 统的软件组件,由该软件组件分配特定的虛拟和物理资源。系统镜 像220与虚拟系统230相关联,虛拟系统230包括为运行单个SI实 例所必需的物理或虚拟化资源,例如,虛拟化的处理器、存储器、I/O 适配器、存储设备等。
系统镜像220通过使用虛拟系统230而经由虚拟化中介240来 访问物理系统资源250。虛拟化中介240管理对SI的资源分配,并 隔离分配给SI的资源免受其他SI访问。通常,基于由虛拟化中介240执行的资源映射以及由虛拟化中介240維护的一个或多个资源 映射数据结构来执行这种分配和隔离。
可使用这种虛拟化以允许对1/0操作和I/O资源的虚拟化。即, 关于I/0虛拟化(IOV),可由使用1/0虚拟化中介(IOVI)(诸如 虛拟化中介240)的多于一个的SI来共享单个物理I/O单元。IOVI 可以是软件、固件等,用于通过干预例如一个或多个的配置、I/O、 来自SI的存储器操作、以及直接存储器访问(DMA)、完成和对 SI的中断操作来支持IOV。
图3是示出了使用1/0虛拟化中介的对PCI根联合体的1/0进行 虛拟化的第一方法的示例性示意图。如图3所示,主机计算机组310 可以是一个或者多个芯片处理器、主板、刀片等,该主机计算机组 310可以支持多个系统镜像320-330,应用(未示出)通过这些系统 镜像可以访问诸如PCIe端点370-390的系统资源。通过I/O虚拟化 中介340、 PCIe根联合体350以及一个或多个PCIe交换机360和/ 或其他PCIe架构单元,该系统镜像与虛拟化的资源进行通信。
通过图3所示的方法,1/O虛拟化中介340介入到所有的1/0事 务中,并执行所有的1/0虛拟化功能。例如,1/O虚拟化中介340将 来自各种SI的I/O队列多路传输到PCIe端点370-390中的单一队列。 这样,I/O虛拟化中介充当在SI 320-330和物理PCIe端点370-390 之间的代理。
这种I/O虚拟化中介340的介入可能在I/O操作中引入额外的延 迟,这限制了每时间单位的1/0操作的数量,并且由此限制了 1/0性 能。此外,I/O中介需要额外的CPU周期,这样,降低了对其他系 统操作可用的CPU性能。此方法所需要的额外的上下文交换和中断 重定向机制也会影响系统的整体性能。而且,当在多个根联合体之 间共享端点370-390时,IOVI 340是不可行的。
图4是示出了使用本地共享的PCI 1/0适配器对PCI根联合体的 1/0进行虛拟化的第二方法的示例性示意图。如图4中所示,主机处 理器组410可以是一个或多个芯片处理器、主板、刀片等,该主机
处理器组410可以支持多个系统镜像420-430,应用(未示出)通过 这些系统镜像可以访问诸如PCIe I/O虛拟化(IOV )端点470-490的 系统资源。该系统镜像420-430通过PCIe根联合体440和一个或多 个PCIe交换机460、和/或其他PCIe架构单元来与虚拟化的资源进
行通信。
PCIe根联合体440包括根联合体虚拟化引擎(enabler) ( RCVE ) 442,其中该根联合体虛拟化引擎(RCVE) 442可包括一个或多个 地址转换和保护表数据结构、中断表数据结构等,其实现与支持IOV 的端点470-490的I/O操作的虚拟化。例如,可以由PCIe根联合体 440使用地址转换和保护表数据结构来执行在用于虚拟化资源的虚 拟和实际地址之间的地址转换,基于虛拟资源至SI的映射来控制对 虛拟资源的访问,以及其他虛拟化操作。例如,通过PCIe存储器地 址空间可访问这些根联合体中断表数据结构,并且这些根联合体中 断表数据结构可用于将中断映射到与SI相关联的合适的中断处理 器。
如图3所示的布置,在图4的虚拟化结构中也提供了 1/0虚拟化 接口 450。将I/0虛拟化接口 450与不支持IOV的PCIe端点一起使 用,其中所述不支持IOV的PCIe端点可耦合到PCIe交换机460。 即,对于那些对I/0虛拟化(IOV)没有本地(即,在端点内部)支 持的PCIe端点,以同如前所述的关于图3相类似的方式,将I/0虚 拟化接口 ( IOVI) 450与PCIe端点一起使用。
对于支持IOV的PCIe端点470-490,使用IOVI 450主要用于 配置事务的目的,并且在存储器地址空间操作中不涉及IOVI 450, 所述存储器地址空间操作诸如为从SI发起的存储器映射的输入/输 出(MMIO)操作、或者从PCIe端点470-490发起的直接存储器访 问(DMA)操作。相反,直接执行在SI 420-430和端点470-490之 间的数据传输,而无需由1OVI 450干预。如同将在下文更详细描述 的,通过RCVE 442和支持IOV的PCIe端点470-490的内置I/O虚 拟化逻辑(例如,物理和虚拟功能),在SI 420-430和端点470-490之间的直接I/O操作变为可能。执行直接I/O操作的能力极大地增加
了能够执行I/O操作的速度,但这需要PCIe端点470-490支持I/O
虚拟化。
图5是支持PCIel/0虛拟化(IOV)的端点的示例性示意图。如 图5中所示,PCIe IOV端点500包括PCIe端口 510,通过该端口可 执行与PCIe架构的PCIe交换机等的通信。内部路由520提供到配 置管理功能530和多个虛拟功能(VF) 540-560的通信通路。配置管 理功能530可以是与虛拟功能540-560相对的物理功能。如同在PCI 规范中所用的,术语物理"功能"是由单一配置空间所表示的一组 逻辑。换言之,物理"功能"是电路逻辑,其基于在存储器中与该 功能相关联的配置空间中存储的数据是可配置的,例如可在不可分 离的资源570中提供。
可使用配置管理功能530来配置虛拟功能540-560。在支持I/O 虚拟化的端点内,虛拟功能是共享 一 个或多个例如链路的物理端点 资源,并且可以与其他功能一起提供在例如PCIeIOV端点500的可 共享资源池5 80中的功能。无需通过I / O虛拟化中介的运行时干预, 虛拟功能可以直接是针对来自系统镜像的I/O和存储器操作的宿 (sink),以及是对系统镜像(SI)的中断、完成、以及直接存储器 访问(DMA )操作的源。
PCIe端点关于由PCIe端点所支持的"功能,,可以具有许多不同 的配置类型。例如,端点可以支持单物理功能(PF)、多个独立的 PF、或甚至多个依赖的PF。在支持本地I/0虛拟化的端点中,由端 点支持的每个PF可以与一个或多个虛拟功能(VF)相关联,这些 虛拟功能(VF)自身可以依赖于与其他PF相关联的VF。将在下文 的图6和图7中示出在物理和虛拟功能之间示例性关系。
图6是示出了没有本地虛拟化的单根端点的物理和虚拟功能的 示例性示意图。术语"单根端点"是指与单根节点(即,单主机系 统)的单根联合体相关联的端点。利用单根端点,可由与单根联合 体相关联的多个系统镜像(SI)共享该端点,但无法在相同或不同
的根节点上的多个根联合体之间共享该端点。
如图6所示,根节点600包括与PCIe端点670-690通信的多 个系统镜像610、 612; 1/0虚拟化中介630 (其如前所述地使用); PCIe根联合体640;以及一个或多个PCIe交换机650和/或其他PCIe 架构单元。根节点600进一步包括单根PCIe配置管理(SR-PCIM) 单元620。 SR-PCIM单元620负责管理PCIe架构和端点670-690, 该PCIe架构包括根联合体640、 一个或多个PCIe交换机650等。 SR-PCIM 620的管理责任包括确定要将哪个功能分配给哪个SI 610 、 620,并建立端点670-690的配置空间。根据SI的能力以及来自用户 (诸如,系统管理员)的输入、或者关于将哪些资源分配给哪个SI 610、 612的负载均衡软件,SR-PCIM 620可以配置各种端点670-690 的功能。SI的能力可以包括各种因素,这些因素包括多少地址空 间可用于分配给端点670-690,多少中断可用于分配给端点670-690 等等。
每个PCIe端点670-690可以支持一个或多个物理功能(PF )。 一个或多个PF可以彼此独立,或以某种方式彼此依赖。基于供应商 定义的功能依赖性,PF可以依赖于另一个PF,其中例如一个PF需 要另一个PF的操作或者由另一个PF生成的结果,以便正确地操作。 在所描述的例子中,PCIe端点670支持单PF,而PCIe端点680支 持1到M的不同类型的多个独立的PF (即,PFO到PFN)。类型涉 及PF或VF的功能性,例如以太网功能和光纤通道功能是两种不同 类型的功能。端点690支持具有两个或多个相关PF的不同类型的多 个PF。在所描述的例子中,PFO依赖于PFl,或者反之亦然。
在图6中示例性的例子中,端点670-690是由系统^:像(SI) 610-612通过由1/0虚拟化中介(IOVI) 630可用的虛拟化机制而共 享的。如前所述,在这种布置中,在SI 610、 612和PCIe端点670-690 之间的所有PCIe事务中涉及IOVI 630。单独的PCIe端点670-690 无需在其自身中支持虛拟化,这是因为处理虚拟化的负担完全放在 IOVI 630上。结果,虽然在这种布置中可以使用已知的用于虛拟化
的机制,但与如果在每个1/0操作中均没有涉及IOVI 630的I/O速 率潜力相比,可以执行1/0操作的速率相对较慢。
图7是示出了支持本地虛拟化的单根端点的物理和虚拟功能的 示例性示意图。在图7中示例性的布置与图6的布置相似,但由于 PCIe端点770-790本地地(即,在端点自身内部)支持I/O虛拟化 (IOV)而有一些重要不同。结果,针对支持IOV的PCIe端点 770-790,可以有效地移除在图6中的I/O虚拟化中介630,当然, 不能移除配置操作。然而,如果在此布置中还利用了不支持IOV的 PCIe端点(未示出),例如,传统端点,则可以连同在图7中示例 性的单元来使用I / O虛拟化中介,以处理在系统镜像710和712之间 的对这种不支持IOV的PCIe端点的共享。
如图7中所示,支持IOV的PEIe端点770-790可以支持一个或 多个独立或依赖的物理功能(PF),然后该物理功能(PF)可以与 一个或多个独立或依赖的虛拟功能(VF)相关联。在此上下文中, 由SR-PCIM 720使用PF来管理一组VF,以及也使用PF管理诸如 物理错误和事件的端点功能。与PF相关联的配置空间定义了 VF的 能力,包括与该PF相关联的VF的最大数量、PF和VF与其他PF 和VF的组合等。
由SI使用VF来访问位于支持IOV的PCIe端点770-790上的资 源,例如存储器空间、队列、中断等。这样,针对将要共享特定PF 的每个SI 710和712来生成不同的VF。在对应的PF的配置空间中, 由端点770-790基于SR-PCIM 720的VF的数量的设置来生成VF。 按照这种方式,将PF虛拟化,使得可由多个SI710、 712来共享该 PF。
如图7中所示,VF和PF可以依赖于其他VF和PF。通常,如 果PF是依赖的PF,那么与该PF相关联的所有VF也将是依赖的。 这样,例如,PF0的VF可以依赖于对应的PF1的VF。
对于图7所示的布置,SI 710、 712可以通过PCI根联合体730 和PCIe交换机740与支持IOV的PCIe端点770-790直接进行通信,
反之亦然,而无需包括I/0虛拟化中介。通过在端点770-790中和在 SR-PCIM 720中提供的IOV支持,可以进行这种直接通信,SR-PCIM 720对在端点770-790中的PF和VF进行配置。
在SI和端点之间的直接通信显著地增加了可以在多个SI 710-712和共享的支持10V的PCIe端点770-790之间执行I/O操作 的速度。然而,为使这种性能增强变得可行,PCIe端点770-790必 须通过在SR-PCIM 720和端点770-790的物理功能(PF )中提供用 于生成和管理虚拟功能(VF)的机制而支持1/0虚拟化。
上文对PCIe层级的描述局限于单根层级。换言之,仅由在与单 PCI根联合体730相关联的单根节点700上的SI 710 、 712来共享PCIe 端点。上述的机制对共享PCIe端点的多根联合体没有提供支持。这 样,无法向多个节点提供对PCIe端点的资源的共享访问。这限制了 利用这种布置的系统的可扩展性,这是因为对于每个根节点需要单 独的端点集合。
这里,说明性的实施方式利用多个根I/0虛拟化,其中多个PCI 根联合体可以共享对同一组支持IOV的PCIe端点的访问。结果,与 这些PCI根联合体的每个相关联的系统镜像的每个可以共享对同一 组支持10V的PCIe端点资源的访问,但在适当位置处具有针对在每 个根节点上的每个SI的虛拟化的保护。这样,通过提供允许添加根 节点和对应的PCI根联合体的机制而将可扩展性最大化,其中这些 根联合体可以共享支持IOV的PCIe端点的相同的现有组。
图8是示出了根据一个说明性的实施方式的多根虚拟化的1/0拓 朴的示例性示意图。如图8所示,提供多个根节点810和820,每一 个根节点具有单根pci配置管理器(SR-PCIM) 812、 822、 一个或 多个系统镜像(SI) 814、 816、 824、 826、以及PCI根联合体818 和828。将这些例如可以是在刀片服务器中的刀片的根节点810和 820耦合到PCIe交换架构的一个或多个多根感知(MRA)PCIe交换 机840,其中该PCIe交换架构可以包括一个或多个这种MRA PCIe 交换机840和/或其他PCIe架构单元。MRA交换机840不同于在图
7中的非MRA交换机的类型,原因在于MRA交换机840具有用于 附加的根节点的连接,并包含用于保持那些不同根节点的地址空间 独立和独特所需要的机制。
除了这些根节点810和820,还提供包括多根PCI配置管理器 (MR-PCIM) 832和对应的PCI根联合体834的第三根节点830。 MR-PCIM 832是负责发现并配置图8中示出的在多根(MR)拓朴中 的虛拟层级,这将在下文更加详细地描述。这样,MR-PCIM 832针 对多根节点的多根联合体匹配端点的物理和虛拟功能。SR-PCIM 812 和822配置与其相关联的单根联合体的物理和虚拟功能。换言之, MR-PCIM将MR拓朴看作一个整体,而SR-PCIM仅看到在MR拓 朴内的其自身的虛拟层级,这将在下文更加详细地描述。
如图8所示,支持IOV的PCIe端点850和860支持一个或多个 虚拟端点(VE) 852、 854、 862、 864。 VE是分配给根联合体的一 组物理和虚拟功能。这样,例如在支持IOV的PCIe端点850和860 上为根节点810的PCI根联合体818提供单独的VE 852和862。类 似地,在支持IOV的PCIe端点850和860上为根节点820的PCI 根联合体828提供单独的VE 854和864。
将每个VE分配给具有单根联合体的虚拟层级(VH),在该层 级中,单根联合体作为VH的根,而VE作为终结节点。VH是分配 给根联合体或SR-PCIM的完整功能的PCIe层级。应该注意,将VE 中的所有物理功能(PF)和虛拟功能(VF)分配给相同的VH。
每个支持IOV的PCIe端点850和860支持基本功能(BF ) 859 和869。 BF 859、 869是由MR-PCIM 832所使用的物理功能,用于 管理相应的端点850、 860的VE。例如,BF 859、 869负责向相应端 点850、 860的VE分配功能。MR-PCIM 832通过使用在BF的配置 空间中的字段而向VE分配功能,该配置空间允许将VH号分配给在 端点850、 860中的每个PF。尽管本发明并非局限于此,在所说明 性的实施方式中,每个节点仅有一个BF。
如图8中所示,每个VE 852、 854、 862和864可支持其自身的 物理和虛拟功能组。如前所述,这种功能组可以包括独立的物理功 能、依赖的物理功能、以及它们的相关的独立/依赖虚拟功能。如图
8中所示,VE 852利用其相关联的虛拟功能(VF)来支持单物理功 能(PF0) 。 VE 854同样地利用其相关联的虚拟功能(VF)来支持 单物理功能(PF0) 。 VE 862支持多个独立的物理功能(PF0-PFN) 以及其相关联的虛拟功能(VF)。然而,VE 864支持多个依赖的物 理功能(PF0-PFN)。
当且仅当将VE分配给SI已经访问的VH时,VE 852、 854、 862 或864可以与根节点810和820的SI 814、 816和826直接通信,并 且反之亦然。端点850和860自身必须支持诸如前面所述的单根I/O 虛拟化,以及如关于当前说明性的实施方式而描述的多才艮I/O虚拟 化。这种要求所基于的事实在于拓朴支持多根联合体,但每个单 独的根节点仅看到其相关联的基于单根的虛拟层级。
图9是示出了根据一个说明性的实施方式的从根节点的根联合 体的视角所见的多根虚拟化I/O拓朴的虛拟层级视图的示例性示意 图。如图9中所示,虽然多根(MR)拓朴可以是如图8所示的那样, 但是每个单独的根节点的每个根联合体仅看到它的MR拓朴的部分。 这样,例如,与根节点810相关联的PCI根联合体818看到它的主 机处理器组、它自己的系统镜像(SI) 814、 816、 MRA交换机840、 以及它自己的虛拟端点(VE) 852和862。在此虛拟层级中,存在完 全的PCIe功能性,然而,PCI根联合体818没有看到不是它自身的 虛拟层级部分的VE、根联合体、系统镜像等。
由于此布置,在MP拓朴中的根节点的根联合体之间的通信上施 加了限制。即,因为将PCIe的功能性局限于与根联合体相关联的虚 拟层级,所以根联合体无法与另一个根联合体通信。而且,与各种 根联合体相关联的系统镜像无法与其他根联合体的系统镜像通信。 为解决这种限制,这里说明性的实施方式提供了各种机制,用以对 在虚拟层级之间(具体地是在不同根节点的根联合体之间)的通信 提供支持。
对于说明性的实施方式的主机系统,为了经由其根联合体与多 个端点通信,该主机系统使用由各种端点和根联合体共享的共享存 储器,其中该主机系统与该根联合体相关联。为了确保端点与主机 系统正确的操作,必须初始化该共享存储器,使得与主机系统相关 联的每个端点被提供有其自己的共享存储器部分,其中通过该共享 存储器可以执行各种通信。说明性的实施方式利用了用于初始化主
机系统的共享存储器的机制,其中发现PCIe架构,并且将PCIe架 构的端点虛拟地绑定到该主机系统的根联合体。然后,为每个端点 和根联合体给出每个主机系统的共享存储器地址空间的每个端点和 根联合体自己的部分,每个端点和根联合体是虛拟地绑定到每个主 机系统。通过主机系统的共享存储器的这些部分,与一个主机系统 的根联合体相关联的端点可以同其他主机系统的 一个或多个其他根 联合体进行通信。
图10是示出了根据一种说明性的实施方式的基于共享存储器 PCIe的系统的示例性示意图。如图10所示,系统1000具有包括第 一根联合体(RC1 ) 1012和第一端点(EP1 ) 1014的主机系统1010, 并且主机系统1010与第一多根感知(MRA)交换机1016相关联, 该多根感知(MRA)交换机1016可以同样作为主机系统1010的一 部分而提供。系统IOOO具有包括第二根联合体(CR2) 1022和第二 端点(EP2) 1024的第二主机系统1020,并且第二主机系统1(H0也 与第二多根感知(MRA)交换机1026相关联,该多根感知(MRA) 交换机1026可以同样作为主机系统1020的一部分而提供。这些主 机系统1010和1020的每一个可以代表例如在相同的多根刀片集群 系统1000中的单独的刀片。可选地,可以在单独的计算设备上完全 地提供主机系统1010和1020。每个主机系统1010和1020位于其自 己的虚拟层级(VH)中。通过与PCIe架构1030的一个或多个MRA 交换机1016、 1026和1032的通信链路,主机系统1010和1020彼 此连接,并且与其他共享端点EP3-EP6 1042-1044和1052-1054相连 接。与主机系统1010和1020以及端点1042-1044和1052-1054相关联的通信链路可以与一个或多个虛拟平面(VP)相关联。
在PCIe架构中没有使用虛拟层级(VH )标识符以区分哪个主机 系统1010和1020与给定的PCIe事务相关联。作为替代,使用了链 路本地虛拟平面(VP)标识符。由于VP标识符是链路本地的,所 以RC 1的VH可以是例如在1032和1016之间的链路上具有VP=4, 而在1032和1042之间的链路上具有VP二4。换言之,VH由一组PCIe 组件和连接这些组件的链路构成,这些链路的每个都具有链路本地 VP标识符,用于指明给定事务正引用哪个VH。
在所描述的例子中,目标是允许根联合体1012、以及因此允许 与同该根联合体1012相关联的 一个或多个系统镜像相联合运行的应 用来同与另 一个根联合体相关联的端点(例如,与根联合体RC2 1022 相关联的端点EP2 1024)进行通信。这样,例如,可由运行在才艮联 合体RC1 1012上的系统镜像来将EP2 1024作为端点而使用。按照 这种方式,可以在不同虛拟平面和/或主机系统上的系统镜像之间共 享与根联合体位于同一位置的端点。结果,当在节点之间通信时, 可以实现高性能的节点到节点(即,主机系统到主机系统)的通信 和负载均衡,并通过消除对通过诸如InfiniBand或以太网交换机的外 部网络适配器和交换机的需要而降低系统成本。
为了允许在主机系统之间由系统镜像共享端点,在主机系统 IOIO或1020之一或者单独的主机系统1060中提供的多根PCI配置 管理器(MR-PCIM )1062初始化主机系统的存储器空间1070和1080, 以建立用于根联合体和端点的基(base )和界限孔径(limit aperture )。 MR-PCIM 1062通过PCIe架构1030中的一个或多个MRA交换机 1032和MRA交换机1064来访问PCIe架构1030。
MR-PCIM 1062通过各种互连的交换机,以本领域公知的方式遍 历(traverse) PCIe架构1030的链路,以识别与PCIe架构1030相 关联的根联合体和端点。然而,对于说明性的实施方式所执行的遍 历,除了执行发现架构遍历操作的根联合体(RC)之外,在该发现 架构遍历期间,将所有的根联合体(RC)视为端点。当MR-PCIM 1062遍历PCIe架构时,它在根联合体和端点之间 执行大量检查,以确定给定的根联合体与给定的端点是否相关联。 根据产生的信息,MR-PCIM 1062生成一个或多个虚拟PCI树数据结 构,其将在PCIe架构1030上可用的端点绑定到每个根联合体。在 虛拟PCI树数据结构中,与相同根联合体相关联的端点之间是互相 关联的。
当MR-PCIM 1062发现并配置了架构后,相应的RC允许它们相 关联的SR-PCIM 1018和1028发现并配置VH。每个SR-PCIM 1018、 1028为每个给定的端点分配在其所属的PCIe存储器地址空间中的 基地址和界限,该PCle存储器地址空间例如是与主机系统1存储器 1070和主机系统2存储器1080相关联的PCIe存储器地址空间。 SR-PCIM 1018、 1028将所述基地址和界限写入EP的基地址寄存器 (BAR)。然后,可将工作请求和完成消息写入PCI存储器地址空 间的这些部分,以便实现在跨过主机系统1010和1020的不同根联 合体和端点之间的通信,这将在下文更加详细地描述。
如上所述,对于说明性的实施方式,当MR-PCIM 1062遍历PCIe 架构1030时,它在根联合体和端点之间执行大量的检查。例如,如 PCI规范所定义的,MR-PCIM 1062访问每个功能(EP的物理功能 和虚拟功能)的PCIe配置空间,其中PCIe配置空间位于EP中。例 如,MR-PCIM也访问对于每个端点的重要产品数据(VPD)字段, 并为稍后的比较而存储VPD信息,诸如存储在耦合到MR-PCIM 1062的非易失性存储器区域(未示出)中。
VPD是唯一地定义了诸如系统的硬件、软件和微码单元等项目 的信息。VPD向系统提供了关于各种字段可替换单元(FRU)的信 息,其中字段可替换单元(FRU)包括供应商名称、零件编号、序 列号和对经营、资产管理和任何需要PCI设备唯一标识的事情有用 的其他详细信息。VPD信息通常位于PCI设备(诸如端点1014 、 1024 ) 的存储设备(例如串行EEPROM )内。可以从在www.pcisig.com可 获得的PCI本地总线规范3.0版本来获得关于VPD的更多信息。
在已经取回并存储了对于每个端点1014、 1024、 1042、 1044、 1052和1054的VPD信息之后,MR-PCIM 1062识别哪些EP和RC 驻留在例如刀片的同 一硬件设备上。例如,MR-PCIM 1062访问包含 共同驻留(co-residency)字段的MRA交换机1016、 1026、 1032的 VPD信息,所述共同驻留字段指示它与保持RC和EP的硬件设备相 关联。MRA交换机1016、 1026、 1032存储分配给RC的VH,然后, 可以使用该VH以确定哪些EP和RC驻留在相同的硬件设备上。
在确定了 EP与RC共同存在相同的主机上之后,MR-PCIM 1062 创建一个或多个虚拟PCI树数据结构,诸如图IIA和IIB中所示例 性的。如同在图11A和UB中示例性的,虚拟PCI树数据结构将在 PCIe架构上可用的端点绑定到每个根联合体。
假设在图11A中示例性的虛拟PCI树数据结构中,通过由用户 指示给MR-PCIM 1062的分配,使得端点EP2 1024、EP4 1044和EP5 1052与根联合体RC1 1012相关联。仅执行上述的VPD匹配以允许 RC确定EP物理地位于该RC的主机上。这告诉RC,通过在RC的 地址空间中的标准存储器映射寻址,EP对该RC是可访问的。这是 物理的关联。利用虛拟PCI树数据结构,通过用户指示他/她希望 MR-PCIM 1062创建这种逻辑关联来指定逻辑关联。
类似地,在图llB中假设端点EPl 1014、 EP3 1042和EP6 1054 通过描述逻辑关联的用户输入、和它们的VPD信息以及由MR-PCIM 1062做出的比较,来与根联合体RC1 1012相关联。这样,在图11A 中示例性的所描述的例子中,端点EP2 1024经由交换机2 1026和交 换机1 1016关联于(或绑定到)根联合体RC1 1012。端点EP4 1044 和EP5 1052经由交换机3 1032和交换机1 1016而与根联合体RC1 1012相关联。在图UB中,端点EP1 1014经由交换机1 1016和交 换机2 1026而关联于(或绑定到)根联合体2 1022。端点EP3 1042 和EP6 1054经由交换机3 1032而与根联合体RC2 1022相关联。
基于这些虛拟PCI树数据结构,MR-PCIM 1062对每个端点在其 所属的PCIe存储器地址空间内分配基地址和限制。可将基地址存储
于端点的基地址寄存器(BAR)中。例如,通过两个PCIe存储器地 址空间1070和1080可访问EPl 1014。在主机系统11010中,通过 主机系统的存储器1070地址空间,该主机系统的处理器(未示出) 可访问EPl 1014。在主机系统2 1020中,EPl 1014具有在主机系统 2的存储器1080地址空间中的由EPl基地址和限制定义的PCIe孔 径,其中主机系统2的存储器1080地址空间可通过PCI总线存储器 地址,经由存储器影射的I/O来访问。例如,主机系统l IOIO的处 理器可使用存储器地址转换和保护表(未示出),以将由主机系统2 1020的处理器看到的PCIe存储器地址映射成为主机系统1的存储器 地址,该存储器地址转换和保护表诸如是在虚拟化中介(诸如管理 程序、根联合体1012等)中提供的。
类似地,通过用于主机系统存储器1070和1080的两个PCI存 储器地址空间,可访问EP2 1024。在主机系统2 1020中,由主机系 统2的处理器通过用于其存储器1080的主机系统2的实际存储器地 址可访问EP2 1024。在主机系统11010中,EP2 1024具有在主机系 统1的存储器1070中的由用于EP2 1024的基地址和限制所定义的 PCIe孔径,其中作为存储器映射的I/O,通过PCI总线存储器地址 可访问该存储器1070。主机系统2 1020可使用存储器地址转换和保 护表(未示出),以将由主机系统1 IOIO看到的PCIe存储器地址映 射到主机系统2的实际存储器地址。
可针对根联合体RC1 1012和RC2 1022来初始化主机系统存储 器1070和1080的类似部分。例如,在主^l系统1 1010中,由主;f几 系统1的处理器,通过用于主机系统1的存储器1070的主机系统1 的实际存储器地址可访问RC1 1012。 RC1 1012在主机系统2的存储 器空间中具有PCIe孔径,其中经由直接存储器访问(DMA) I/O, 通过主机系统1的PCI总线存储器地址可访问该主机系统2的存储 器空间。主机系统1 IOIO可使用存储器地址转换和保护表(未示出), 以将由主机系统2 1020看到的PCIe存储器地址映射成为主机系统1 的实际存储器地址。 类似地,在主机系统2 1020中,主机系统2的处理器通过用于 存储器1080的主机系统2的实际存储器地址可访问RC2 1022。 RC2 1022具有在主机系统1的存储器1070中的PCIe孔径,其中作为DMA I/O,通过主机系统2的PCI总线存储器地址可访问该主机系统1的 存储器1070。主机系统2 1020可使用存储器地址转换和保护表(未 示出),以将由主机系统1 1010看到的PCIe存储器地址映射成为主 机系统2的实际存储器地址。
这样,说明性的实施方式的机制提供了对在主机系统中的存储 器空间的初始化,使得在多个主机系统中,可由多于一个的根联合 体来访问端点。然后,可由根联合体利用分配给不同端点的存储器 空间的部分,以向端点发送"i青求和完成消息,和/人端点发送请求和 完成消息。
图12是概括了根据一个说明性的实施方式的用于为端点的共享 而初始化主机系统的存储器地址空间的示例性操作的流程图。应该 理解,可以由计算机程序指令来实现在图12中示例性的流程图和下 文描述的流程图的每一 块以及在流程图中的块的组合。可以向处理 器或其他可编程数据处理装置提供这些计算机程序指令,以产生一 种机器,使得在处理器或其他可编程数据处理装置上执行的指令创 建用于实现在一个或多个流程图块中描述的功能的装置。也可以在 计算机可读存储器或存储介质中存储这些计算机程序指令,该计算 机可读存储器或存储介质能引导处理器或其他可编程数据处理装置 以特定方式运行,使得在计算机可读存储器或存储介质中存储的指 令产生包括指令装置的制造物品,其中所述指令装置实现了在一个 或多个流程图块中描述的功能。
这样,流程图的块支持用于执行所描述的功能的装置的组合、 用于执行所描述的功能的步骤的组合、以及用于执行所描述的功能 的程序指令装置。还应该理解,流程图的每个块以及流程图中的块 的组合可由基于专用硬件的计算机系统或专用硬件和计算机指令的 组合实现,该基于专用硬件的计算机系统执行所描述的功能或步骤。 如图12所示,操作开始于MR-PCIM通过遍历所有链路而发现 该PCIe架构(步骤1210),其中所述链路通过PCIe架构的互连的 交换机可访问。存储在PCIe架构的发现期间所发现的对于每个端点 和根联合体的VPD信息(步骤1220 )。
MR-PCIM将对于每个端点的VPD信息与对于每个根联合体的 VPD信息进行比较,以确定给定的端点与给定的根联合体是否相关 联(步骤1230 )。对于每次比较,如果对于端点和根联合体的VPD 信息相匹配,则MR-PCIM设置对应的共同驻留字段(步骤1240)。 基于所发现的端点和根联合体信息以及针对每个比较的共同驻留字 段的设置,MR-PCIM生成一个或多个虛拟PCI树数据结构(步骤 1250 )。
基于所生成的虛拟PCI树数据结构,MR-PCIM为每个端点在该 端点所属的每个PCIe存储器地址空间内分配基地址和界限(步骤 1260)。基于所生成的虛拟PCI树数据结构,MR-PCIM为每个根联 合体在根联合体所属的每个PCIe存储器地址空间内分配基地址和界 限(步骤1270)。然后,该操作终止。
已经初始化了主机系统的存储器地址空间,使得根联合体跨过 主机系统可访问端点,然后,可使用这些存储器地址空间,以允许 与这些根联合体相关联的系统镜像和它们对应的应用来与端点进行 通信。实现这种通信的一种方式是通过队列系统,该队列系统利用 在不同主机系统中的这些经初始化的存储器地址空间。这种队列系 统可包括工作队列结构和完成队列结构。工作队列结构和完成队列 结构二者可包括用于识别大量队列单元(或者是工作队列单元 (WQE)或者是完成队列单元(CQE),这依赖于该队列结构是工 作队列结构还是完成队列结构)的门铃结构、用于队列的起始的基 地址、用于队列的末尾的界限地址、和指示在队列中将要处理的下 一个WQE或CQE的偏移量。可以^使用工作队列结构和完成队列结 构二者来发送和接收数据。
图13是示出了根据一个说明性的实施方式的用于从第一主机系
统向第二主机系统发送工作队列单元(WQE)的过程的示例性的框
图。出于描述的目的,假设建立了具有主机系统的系统,所述主机
系统例如是通过PCIe架构1330连接的第一主机系统1310和第二主 才几系统1320,所述主机系统具有多个共享的PCI根联合体,例如, RC1 1312和RC2 1322,其中第一主机系统1310和第二主机系统1320 可以包括MRA交换机1316以及1326。进一步假设位于具有根联 合体RC2 1322的第二主机系统1320中的端点(例如EP2 1324)将 跨过PCIe架构1330而与第一主机系统1310的根联合体RC1 1312 共享,并且,将该端点恰当地映射到第二主机系统1320的内部存储 器1380的地址空间以及第一主机系统的PCI总线存储器地址空间。 可通过例如使用前面关于例如图10至图12所描述的初始化机制来 实现该系统配置。
如图13所示,通过与两个主机系统存储器1370和1380相关联 的存储器空间,可访问端点EP1 1314。在第一主机系统1310上,第 一主机系统的处理器通过用于第 一主机系统的存储器1370的第 一主 才几系统的实际存储器地址可访问端点EP1 1314。在第二主机系统 1320上,端点EP1 1314具有在第二主机系统的存储器1380上的PCIe 孔径1382,其中作为存储器映射的I/O,通过PCI总线存储器地址 可访问该第二主存储器1380。第一主机系统1310可使用存储器地址 转换和保护表(ATPT) 1318,以将由第二主机系统1320看到的PCIe 存储器地址映射成为用于第 一 主机系统的存储器空间13 70的实际存 储器地址。
类似地,通过两个主机系统存储器空间1370和1380可访问端 点EP2 1324。在第二主机系统1320中,第二主机系统的处理器通过 第二主机系统的实际存储器地址和存储器地址空间1380可访问端点 EP2 1324。在第一主机系统1310中,端点EP2 1324具有在第一主机 系统的存储器1370上的PCIe孔径1372,其中作为存储器映射的I/O, 通过PCI总线存储器地址可访问该第一主机系统的存储器1370。第 二主机系统1320可使用存储器地址转换和保护表(ATPT) 1328,
以将由第一主机系统1310发送的PCIe存储器地址映射到第二主机 系统的存储器空间1380的实际存储器地址。
工作队列结构1374可包括门铃结构1375,该门铃结构1375用 以传递大量的WQE、用于队列的开始的基地址、用于队列的末尾的 界限地址以及指示在工作队列中将要处理的下一个WQE的偏移量。 类似地,完成队列结构1376可包括门铃结构1377,该门铃结构1377 用于传递大量的CQE、用于队列的开始的基地址、用于队列的末尾 的界限地址、以及指示在完成队列中将要处理的下一个CQE的偏移 量。
为了从第一主机系统1310向第二主机系统1320发送WQE,第 一主机系统1310通过向其发送工作队列1374插入一个或多个WQE 而发起该过程。每个WQE包含数据段的列表,其中每个数据段包括 都位于第二主机系统的P CI e存储器总线地址空间中的基地址和界限 地址,并且还通过地址转换和保护表(ATPT)将该基地址和界限地 址映射到在第一主机系统的存储器空间1370中的实际存储器地址。
然后,第一主机系统1310将所发送的WQE的数量写入到用于 门铃结构1375的端点EP2的PCIe地址之中。通过ATPT,将用于此 门铃结构的地址映射到第 一 主机系统的P CI e存储器总线地址空间, 并且还映射到在第二主机系统的存储器空间13 8 0中的实际存储器地 址。当门铃写操作完成时,第二主机系统1320的RC轮询或者收到 一个中断然后轮询,以通过第一主机系统的实际存储器地址空间 1380取回门铃结构1375。即,可将第二主机系统1320的RC配置为 周期地轮询用于门铃结构1375的地址,以确定是否要处理新的 WQE。可选地,第一主机系统1310对门铃结构1375的设置可生成 对第二主机系统1320的中断,以向第二主机系统1320的RC通知可 获得新的WQE用于处理。然后,第二主机系统1320的RC可以轮 询用于新的WQE信息的门铃结构1375,并且据此处理它们。
然后,端点EP2 1324对根联合体RC1 1312执行PCIe DMA操 作以取回WQE。每个DMA操作使用第一主机系统的PCIe存储器总线地址空间,并将DMA操作的结果放入第二主机系统的存储器1380,其中在第二主机系统1320上,通过其实际存储器地址空间可 访问第二主机系统的存储器1380。这样,使用主机系统1310和1320 的初始化的共享存储器,实现了在不同主机系统1310和1320中的 根联合体和端点之间的工作队列单元的通信。
图14是示出了根据一个说明性的实施方式的用于从第二主机系 统1320向第一主机系统1310发送完成队列单元(CQE)的过程的 示例性的框图。如图14所示, 一旦完成了与一个WQE或一组WQE 相关联的工作,则端点EP2 1324对根联合体RC1 1312执行一个或 多个PCIe DMA操作,以向根联合体RC1 1312发送一个或多个CQE。 在RC1 1312可以轮询或等待指示CQE可用的中断的意义上,可以 使用门铃。
每个DMA操作使用第 一 主机系统的PCIe存储器总线地址空间, 并将结果放入第一主机系统1310上的存储器1370,其中在第一主机 系统1310上,通过其实际存储器地址空间可访问第一主机系统的存 储器1370。优选地,将结果存储在存储器1370的DMA可寻址部分, 依赖于所使用的特定OS, DMA可寻址部分位于存储器1370中的不 同部分。
图15是概括了根据一个示例性实施方式的用于在第一主机系统 的根联合体和与第二主机系统相关联的端点之间传送WQE的示例 性操作的示例性流程图。如图15所示,该操作开始于第一主机系统 向其发送工作队列插入一个或多个WQE (步骤1510)。然后,第一 主机系统将所发送的WQE的数量写入对于门铃结构的目标端点的 PCIe地址之中(步骤1520)。当门铃写操作完成时,第二主机系统 轮询或者收到中断然后轮询,以通过第 一主机系统的实际存储器地 址空间来取回门铃结构(步骤1530 )。
然后,目标端点对第一主机系统的根联合体执行PCIe DMA揭: 作,以取回WQE (步骤1540 )。然后,目标端点将DMA操作的结 果放入第二主机系统的存储器(步骤1550 )。然后,该操作终止。
图1 6是概括了根据 一 个示例性实施方式的用于从第二主机系统
的端点向第 一主机系统的根联合体传送CQE的示例性操作的示例性 流程图。该操作开始于端点完成与向端点提交的一个或多个WQE相 关联的处理工作(步骤1610)。然后,该端点对与主机系统相关联 的根联合体执行一个或多个PCIe DMA操作,以向根联合体发送一 个或多个CQE,其中从该主机系统接收该一个或多个WQE(步骤 1620 )。将DMA操作的结果放入第 一主机系统的存储器(步骤1630 )。 然后,该操作终止。
这样,可使用说明性的实施方式的共享存储器,以提供队列结 构,其中通过该队列结构,可在不同主机系统上的根联合体和端点 之间交换工作请求和完成消息。这样,根联合体可以同与提供了该 根联合体的主机系统不同的主机系统上的端点进行通信,并且反之 亦然。
根据在此示例性的一种实施方式,可建立一种面向事务的协议, 用于使用说明性的实施方式的共享存储器,以在相同或不同的主机 系统的根联合体和端点之间通信。如同下文将要描述的,面向事务 的协议规定了将由例如根联合体或端点的各种单元执行的一 系列事 务,以推送或拉回数据。
返回图13,上文关于向端点提供WQE并向根联合体返回CQE 的方式的描述是拉回-拉回-推送协议的一个例子。即,响应于第一主 机系统1310对门铃结构1375的写入,第二主机系统1320的端点EP2 1324使用PCIe DMA操作从第一主机系统的共享存储器1370拉回 WQE。这些WQE提供了用于将要执行的操作的"命令"。基于在 WQE中存储的段信息,第二主机系统1320的端点EP2 1324从在第 一主机系统的共享存储器1370的工作队列结构1374中拉回对应的 数据。 一旦完成了对应于WQE的工作,则第二主^L系统1320的端 点EP2 1324使用一个或多个PCIe DMA操作向第 一主机系统1310 的根联合体RC1 1312推送CQE。这样,在上文描述的图13的例子 中利用了拉回-拉回-推送事务协议。 拉回和推送事务的其他可能的组合对于不同的事务协议的建立 也是可能的。图17是示出了可以用于执行在相同或不同主机系统的 根联合体和端点之间的通信的事务的多种可能组合的示例性表。如
图17所示,可以连同说明性的实施方式的机制一起来利用拉回和推 送事务的任何组合,以便由此建立事务协议,用于对说明性的实施 方式的共享存储器的使用。
根联合体和端点负责实施选择的协议。例如,OS系统栈和端点 执行操作,用于拉回和推送数据,作为诸如如前所述的选择的事务 协议的部分。对将要利用的协议的选择依赖于由端点所利用的特定 的PCIe架构,例如InfiniBand或以太网架构。可以根据编程的选择, 例如是否使用轮询、中断处理或轮询和中断处理的组合,来确定协 议的特殊性。
说明性的实施方式的机制可进一步用于支持基于套接字协议的
通信,该通信是通过上述的共享存储器来在相同或不同主机系统的
根联合体和端点之间进行。当存在恒定的连接时,可使用这种套接
字协议。可基于所希望的效率和可靠性来确定是使用套接字协议还
是基于事务的协议,诸如,上文描述的推送-拉回事务。
利用套接字协议,可使用在主机系统中的工作队列,以侦听输
入的套接字初始化请求。即,希望与第二主机系统建立套接字通信 连接的第一主机系统可在其工作队列中生成套接字初始化请求
WQE,并向该第二主机系统通知该套接字初始化请求WQE对处理 可用。然后,第二主机系统可接受或拒绝该请求。如果第二主机系 统接受该请求,它返回套接字参数的后一半,用于由第一主机系统 在第 一和第二主机系统之间执行基于套接字的通信中使用。这种通 信可以涉及例如在主机系统之间的拉回事务和/或推送事务。
图18是示出了根据一个说明性的实施方式的用于在第一主机系 统和第二主机系统之间建立套接字并执行基于套接字的通信的过程
的示例性的框图。在说明性的实施方式的基于套接字的实现中,在 主机系统(诸如主机系统1810)上的端点(诸如EP2 1824 )包含接
收緩冲器1876、緩沖器满标记1877以及门铃结构1878。緩冲器满 标记1877和门铃结构1878可包括用以指示事件已经发生的存储器 中的地址。例如主机系统810的发送者主机系统通过在接收者主机 系统1820的存储器1870中的PCIe孔径1872来写入门铃结构1878, 其中PCIe孔径1872可由发送者主机系统的根联合体RC1 1812访问, 对应于例如端点EP2 1824的连接端点。
如前所述,在为实现在相同或不同的主机系统上的多个根联合 体之间共享端点而初始化主机系统的共享存储器期间,针对每个所 发现的根联合体和端点来读出重要产品数据(VPD)信息,以便生 成虛拟PCI树数据结构。该VPD信息可包括指示特定的根联合体或 端点是否支持PCIe上的套接字的字段。根据一种说明性的实施方式, 可使用此信息以标识可以与哪些端点建立套接字用于基于套接字的 通信。
这样,在初始化期间,第一主4几系统1810可以例如通过在用于 端点EP2 1824的VPD中的供应商特定字^:、可由如前所述的 MR-PCIM以及由主机系统自身可访问的位于EP中的VPD信息,来 确定端点EP2 1824支持PCIe上的套接字。类似地,第二主机系统 1820可通过在对于端点EP1 1814的VPD信息中的其供应商特定字 段来确定端点EP1 1814支持PCIe上的套接字。
每个主机系统1810和1820具有工作队列(WQ) 1850和1860, 该工作队列用于监听输入的套接字初始化请求。例如,第二主才几系 统1820 (即,接收主机系统)阻塞或等待到其工作队列1860表面的 套4妻字初始化请求,或拉回端点EP2 1824的门铃结构l878,以确定 套接字初始化请求是否已经到达。套接字初始化请求包含到工作队 列1850中的基、界限和起始偏移量,这将用于套接字的第一主机系 统的那一半。
第一主机系统1810 (即,发送主机系统)可在其工作队列1850 中生成套接字初始化请求,并可以写入EP2 1824的门铃结构1878, 指示套接字初始化请求WQE可用。 一旦在门铃结构1878中取回数 据时,第二主机系统的端点EP2 1824可执行PCIe DMA操作,以使 用根联合体RC1的PCIe总线存储器地址来从第 一 主机系统的工作队 列1850中取回套接字初始化请求,端点EP2 1824可访问该根联合 体RC1的PCIe总线存储器地址。
然后,第二主机系统1820可解析该套接字初始化请求,并且以 应用或操作系统特定的方式确定接受还是拒绝该套接字初始化请 求。如果第二主机系统1820拒绝套接字初始化请求,则第二主才几系 统1820向第一主机系统的根联合体RC1 1812发送非连接响应PCIe DMA,并且如果需要,则中断第一主机系统的根联合体RC1 1812。
如果第二主机系统1820接受套接字初始化请求,则端点EP2 1824对第 一 主机系统的根联合体RC1 1812执行PCIe DMA操作,指 示套接字参数的后一半,即,基、界限和在工作队列1860内的起始
偏移量,用于套接字的第二主机系统的那一半。
一旦已经以上述方式初始化了套接字,可按照拉回事务或推送 事务两种方式之一,使用建立的套接字来执行发送/接收操作。利用 拉回事务,第一主机系统1810的根联合体RC1 1812通过向其工作 队列1850写入WQE而执行发送操作,并然后写入与端点EP2 1824 相关联的门铃结构1878,其中通过根联合体RC1 1812PCIe总线存 储器地址空间可访问该门铃结构1878。当门铃写入操作完成时,第 二主机系统或者1820轮询或者收到中断然后轮询,以通过第二主机 系统的实际存储器地址空间来取回门铃结构1878。端点EP2 1824然 后对根联合体RC1 1812执行PCIe DMA操作,以取回与发送纟乘作相 关联的WQE。PCIe DMA操作使用第一主机系统的PCIe存储器总线 地址空间,并将结果放入第二主机系统上的存储器1880,其中通过 第二主机系统的实际存储器地址空间可访问该存储器l880。第二主 机系统1820然后取回在WQE中描述的并且与发送操作相关联的数 据段。
当第二主机系统完成在WQE中的工作请求时,端点EP2 1824 对根联合体RC1 1812执行PCIe DMA操作,以推送信令通知发送操
作已经完成的CQE。该DMA操作使用第一主机系统的PCIe存储器 总线地址空间,并将结果放入第一主机系统上的存储器1870,其中 通过第 一主机系统的实际存储器地址空间可访问该存储器1870。
对于推送事务,根联合体RC2 1822写入用于端点EP1 1814的 门铃结构1888,指示已经可用的接收WQE的数量。当端点EP1 1814 有数据要发送时,端点EP1 1814 4企查以确定端点EP1 1814在才艮联合 体RC2 1822的工作队列1860上是否具有可用的接收WQE。如果没 有可用的接收WQE,则根联合体RC1 1812写入端点EP2的緩沖器 满标记1887,以指示第一主机系统1810有数据要在套接字上发送, 而第二主机系统1820针对该套接字需要通过接收WQE来公告一些 緩沖区。
如果存在可用的接收WQE,则第二端点EP2 1824对根联合体 RC1 1812执行PCIe DMA操作,以取回在根联合体RC1的工作队列 1850中下一个可用的WQE。 DMA操作使用第一主机系统的PCIe 存储器总线地址空间,并将结果放入在第二主机系统1820上的存储 器1880中,其中通过第二主机系统的实际存储器地址空间可访问该 存储器1880。然后,第二主机系统1820将其数据发送到在接收WQE 中传递的数据段。
当第二主机系统1820完成工作请求时,端点EP2 1824然后对根 联合体RC1 1812执行PCIe DMA操作,以推送信令通知发送操作已 经完成的CQE。该DMA操作使用第一主机系统的PCIe存储器总线 地址空间,并将结果放入第一主机系统1810上的存储器,其中通过 第 一主机系统的实际存储器地址空间可访问该存储器。
图19是概括了根据 一 个说明性的实施方式的用于使用基于套接 字的通信连接来执行拉回事务的示例性操作的流程图。该操作开始 于第一主机系统的根联合体向其工作队列写入WQE (步骤1910), 并然后写入与目标端点相关联的门铃结构(步骤1920 )。当门铃写 入操作完成时,第二主机系统轮询或者收到中断然后轮询,以通过 第二主机系统的实际存储器地址空间来取回门铃(步骤1930)。目标端点然后对第 一主机系统的根联合体执行PCIe DMA操作, 以取回与发送操作相关联的WQE (步骤1940 )。目标端点将PCIe DMA操作的结果放入在第二主机系统上的存储器(步骤1950 )。第 二主机系统然后取回在WQE中描述的并且与发送操作相关联的数 据段(步骤1960)。
响应于第二主机系统完成在WQE中请求的工作(步骤1970 ), 目标端点对第一主机系统的根联合体执行PCIe DMA操作,以推送 信令通知发送操作已经完成的CQE (步骤1980 )。第一主机系统的 根联合体将PCIe DMA操作的结果放入第一主机系统的存储器(步 骤1990 )。然后,该操作终止。
图20是概括了根据一 个说明性的实施方式的用于使用基于套接 字的通信连接来执行推送事务的示例性操作的流程图。第二主机系 统的根联合体写入用于第 一 主机系统的端点的门铃结构,指示根联 合体已经可用的接收WQE的数量(步骤2010)。响应于第一主机 系统的端点具有要发送的数据(步骤2020),第一主机系统的端点 检查以确定该端点在第二主机系统的根联合体的工作队列上是否具 有任何可用的接收WQE (步骤2030 )。如果没有可用的接收WQE, 则第 一 主机系统的根联合体将第二主机系统的緩沖器满标记写入第 二端点,以指示第一主机系统有数据要在套接字上发送,并且第二 主机系统需要针对该套接字将接收WQE记入一些緩沖器(步骤 2040)。然后,操作返回到步骤2030。
如果存在可用的接收WQE,第二端点对第一主机系统的根联合 体执行PCIe DMA操作,以取回在第一主机系统的工作队列的根联 合体上可用的下一个WQE (步骤2050 )。第二端点将PCIe DMA操: 作的结果放入在第二主机系统上的存储器(步骤2060)。然后,第 二主机系统将其数据发送到在接收WQE中传递的数据段(步骤 2070)。
当第二主机系统完成了所请求的工作时,第二端点对第 一主机 系统的根联合体执行PCIe DMA操作,以推送信令通知发送操作已
经完成的CQE (步骤2080 )。第二端点将PCIeDMA操作的结果放 入在第一主机系统上的存储器(步骤2090)。然后,该操作终止。
如同上文所讨论的,多根系统的端点可以支持具有 一 个或多个 相关联的虛拟功能的一个或多个物理功能。说明性的实施方式的机 制,除了在相同或不同的主机系统的根联合体和端点之间提供通信, 也提供用于管理端点的物理和虛拟功能的机制。由说明性的实施方 式的机制提供的一种功能提供了将单根无状态虛拟功能及其相关联 的应用从一个物理功能迁移到相同端点上的另一个的能力。对于满 足在系统管理领域对负载均衡能力的不断增长的需要来说,该迁移 功能性是重要的。
通过迁移VF及其相关联的应用(该应用是依赖于VF而#:作的 应用),可补充不同的资源,以在更有效的环境中继续操作。例如, 利用负载均衡,可以使用说明性的实施方式的机制来移动以太网VF 及其相关联的依赖的应用,以便利用在不同PF上可用的较快(例如, 较少拥塞)连接的优势,其中PF可以与不同的SI或甚至EP相关联 在一起。
图21A和21B是示出了根据一个说明性的实施方式的从在相同 端点(例如,PCIe适配器)上的一个物理功能向另一个物理功能的 虚拟功能及其相关联的应用的单根无状态迁移的示例性示意图。如 图21A中所示,如连接单元2110和2120的虛线所示,与系统镜寸象
(SI) 2105相关联的应用2110与虛拟功能(VF) 2120相关联。基 于来自SR-PCIM 2100的信息,软件中介2115可以向系统管理员或 者等同的管理负责人来描述迁移场景。这可以包括但不限于显示在 PCIe架构中可用的等同的VF,该VF可以是用于经由系统管理接口
(未示出)迁移的目标。
可以例如基于VF迁移能力位来确定可由SR-PCIM2100描述的 特定的迁移场景,其中SR-PCIM访问该VF迁移能力位以确定特定 的VF是否可迁移。基于来自SR-PCIM2100的所述信息,SWI2115 可以通过管理控制台或实体解译并将此数据转换为对用户可用的
VF迁移场景。这些迁移场景将高度依赖于所讨论的组件的设计。例
如,为了迁移以太网适配器,OS可能必须对其进行解配置。如果 OS没有提供这种功能性,则管理实用工具将无法描述这种场景。换 言之,管理实用工具维护组件(系统镜像类型、硬件等)的知识, 然后使用该知识来描述迁移场景。所述信息以及存储于VF的迁移能 力位中的迁移能力信息标识哪些用于迁移的场景可供选择。
系统管理员启动该过程,以迁移所希望的VF 2120和相关联的 应用2110。例如,诸如在图形用户界面显示中,管理软件(未示出) 可将VF及其相关联的应用描述为实体,其中可在主机系统和PCIe 架构上的可用资源之间迁移所述实体。管理软件可以存在于诸如从 国际商业机器公司可获得的HMC的硬件管理控制台上、或者存在于 设计为与固件(例如,软件中介或管理程序)交互并控制硬件资源 的功能的系统运行软件的任何其他控制台或部分之中。
运行在主机系统上的软件中介(SWI) 2115可向SI-A2105发送 请求,以请求完成所有的未完成的请求或迁移VF2120的灵活性,其 中软件中介(SWI) 2115是任意类型的固件或软件代码,其使用在 管理应用和硬件之间以创建允许额外的功能性的抽象层。例如,SI-A 2105和SWI 2115可以具有应用程序接口 ( API) , SI-A2105和SWI 2115通过应用程序接口 (API)进行通信。SI-A 2105可以通过暂停 或停止使用VF 2120的任何应用2110来响应该请求。SI-A 2105可 以确保完成对VF2120的未完成的所有请求。本质上,SI-A2105检 查以确信所有的队列都处于表示没有未决的请求以及已经完成了所 有事务的状态中。例如,完全此任务的一种方式是检查所有的WQE 都具有对应的CQE。
然后,SI-A 2105可以对其VF 2120的逻辑表示进行解配置,有 效地停止SI-A对VF 2120的使用。这是可以由例如用于在SI-A2105 上的VF2120的设备驱动器(未示出)执行的操作。然后SI-A2105 可以向SWI 2115通知所有请求已经完成以及可以移除VF 2120。SWI 2115接着可以从SI-A 2105中移除VF 2120。这将使VF 2120呈现出
由SI-A 2105不可探测和不可配置。SWI 2115现在可以通过清除在 端点的配置空间中的VF的表示来将VF 2120从目标物理功能(PF) 2135中分离。
现在参考图21B,然后,SWI 2115可以将目标VF 2145附接到 其PF 2140。然后SWI 2115使得VF 2145可用于由SI-A 2105进行 配置,并指示SI-A 2105配置VF 2145。例如,SWI2115更新在固件 中的SI-A的设备树,以包括例如VF2145的新设备,该VF2145可 以呈现为例如新的端点。该新端点或VF 2145可以是任何类型的端 点设备,其在OS中的逻辑表示依赖于在SI-A的设备树中发现它的 设备驱动器,其中由固件代码将该设备树提供给OS。 一旦在SI-A 的设备树中存在用于新设备(例如VF 2145 )的实体,则用于该设备 的设备驱动器将检测并配置该新设备。
一旦SI-A 2105使用例如设备驱动器配置VF 2145 ,则相关联的 应用2110能够使用VF 2145。现在,SWI 2115现在可指示SI-A 2105 启动完成该迁移的相关联的应用2110。结果,如由虛线所示,应用 2110和VF 2120依然是相关联的,但已经将VF 2120从其与PF 2135 相关联迁移到现在的与PF 2140相关联。
图22A和图22B是示出了根据一个说明性的实施方式的从例如 PCIe适配器的一个端点向另一个端点的对虛拟功能(VF)及其相关 联的应用的单根无状态迁移的示例性示意图。用于从一个端点向另 一个的VF的无状态迁移的操作类似于上文关于图21A和图21B的 描述。总而言之,在图21A至图21B的操作和图22A至图22B的操 作之间的主要的不同在于VF位于不同的端点上,而不是仅与在相 同端点内的不同的物理功能相关联。
如图22A中所示,如由连接单元2210和2220的虚线所示的, 与系统镜像(SI) 2205相关联的应用2210是与虛拟功能(VF) 2220 相关联。SR-PCIM 2200向系统管理员或等同的管理负责人描述迁移 场景。这可以包括但不限于显示在PCIe架构上可用的等同的VF, 其中所述VF可以是用于经由系统管理接口 (未示出)的迁移的目标。系统管理员启动该过程,以迁移所希望的VF 2220和相关连的 应用2210。例如,管理软件(未示出)可将VF及其相关联的应用 描述为诸如在管理控制台或实体的图形用户界面显示中的实体,其 中可在PCIe架构和主机系统上的可用资源之间迁移所述实体。运行 在主机系统上的软件中介(SWI) 2215可以向SI-A 2205发送针对待 迁移的VF 2220完成所有未完成的请求的请求。例如,SI-A 2205和 SWI 2215可以具有应用程序接口( API),其中SI-A 2205和SWI 2215 通过该应用程序接口 (API)进行通信。SI-A 2205可以通过暂停或 停止使用VF 2220的任何应用2210来响应该请求。SI-A 2205可以 确保完成对VF 2220的所有未完成的请求。
然后,SI-A 2205可以解配置其VF 2220的逻辑表示,有效地停 止SI-A对VF 2220的使用。这是可以由例如用于在SI-A 2205上的 VF 2220的设备驱动器(未示出)执行的操作。然后,SI-A 2205可 以向SWI 2215通知所有请求已经完成以及可以移除VF 2220。 SWI 2215接着可以从SI-A 2205中移除VF 2220。这将使VF 2220呈现出 由SI-A 2205不可探测和不可配置。SWI 2215现在可以通过清除在 端点的配置空间中的VF的表示来将VF 2220从目标物理功能(PF ) 2235中分离。
现在参考图21B,然后,SWI 2215可以将目标VF 2245附接到 其PF 2240上,该PF 2240位于与PF 2235不同的端点上,其中VF 2220(现在是VF 2245 )最初是与PF 2235相关联的。然后,SWI 2215 使VF 2245可用于SI-A2205进行配置,并且指示SI-A 2205配置VF 2245。例如,SWI 2215更新在固件中的SI-A的设备树,以包括新设 备。SI-A 2205可以使用例如设备驱动器来配置VF 2245,设备驱动 器的类型将依赖于所讨论的设备或功能的特定属性。相关联的应用 2210现在可以使用VF 2245。 SWI现在可以指示SI-A 2205启动完成 迁移的相关联的应用2210。结果,如由虛线所示,应用2210和VF 2220依然是相关联的,但已经将VF 2220从其与PF 2235相关联迁 移到现在的与在不同端点上的PF 2240相关联。
可以执行类似的操作,以从一个系统镜像向另 一个系统镜像迁
移虚拟功能。图23A和图23B是示出了根据一个说明性的实施方式 的从一个系统镜像向另 一个系统镜像的对虚拟功能及其相关联的应 用的单根无状态迁移的示例性图。如图23A所示,用于停止目标为 待迁移的VF 2320的操作的操作与前面关于图21A和图22A的描述 基本上相同。 一旦停止了与VF 2320相关联的应用2310,并且完成 了目标为VF 2320的操作,则SI-A 2305解配置其VF 2320的逻辑表 示,向SWI 2314通知已经完成所有请求并且可以移除VF 2320。
如果针对VF 2320将执行SI改变,则SWI 2315将VF 2320从 相关耳关的PF 2335分离,并将VF 2345附接到目标PF 2340。目标PF 2340可以位于相同或不同的端点上。SWI 2315使得VF 2345可用于 例如SI-B 2350的目标SI进行配置,并且指示目标SI 2350配置VF 2345。目标SI 2350有效地配置VF 2345,使其可为相关联(现在与 SI-B 2350相关联)的应用2310所用。SWI 2315通知目标SI 2350 启动相关联的应用,以使用在新的VF 2345上的资源。
图2 4是概括了根据 一 个说明性的实施方式的用于迁移虛拟功能 的示例性操作的流程图。如图24所示,操作开始于用户指定将要迁 移的VF、以及针对该VF的目标目的地(步骤2410 )。运行在主机 系统上的SWI向SI发送完成对VF的所有未完成的请求以便迁移 VF的请求(步骤2420 ) 。 SI暂停或停止使用VF的任何应用(步骤 2430),并确保已经完成了对VF的所有未完成的请求(步骤2440)。 然后,SI解配置其VF的逻辑表示(步骤2450) 。 SI向SWI通知已 经完成所有请求并且可以移除VF (步骤2460)。
然后,SWI从SI中移除VF,并将VF从相关联的PF分离(步 骤2470)。然后,SWI将VF附接到可以在相同或不同端点上并且 可以与相同或不同的系统镜像相关联的的目标PF (步骤2480)。然 后,SWI指示现在与VF相关联SI来配置VF,由此使其可为相关联 的应用所用(步骤2490 )。 SWI指示SI启动相关联的应用,以使用 在新VF上的资源(步骤2495 )。然后,该操作终止。
这样,利用说明性的实施方式,可在相同的端点内、不同的端 点之间、以及在相同或不同端点上的不同的系统镜像之间迁移虚拟 功能。这种迁移使得可以执行多种负载均衡操作。而且,这种迁移 允许将虛拟功能移动到更有益于虛拟功能的有效操作的操作环境。
这样,概括的说明性的实施方式提供了用于在相同的根联合体 内或跨过多个根联合体(RC)的多个系统镜像(SI)之间同时共享
例如PCIe适配器的端点的机制。而且,说明性的实施方式的;f几制支 持使用基于队列的通信、基于推送-拉回协议的通信和基于套接字的 通信的能力。另外,说明性的实施方式提供了用于从在相同或不同 端点上一个物理功能向另 一个物理功能以及从一个系统镜像向另一 个系统镜像迁移虚拟功能及其相关联的应用实例的机制。
除了这些机制,说明性的实施方式进一步提供了用于执行将新 组件热插入到运行中的多根PCIe架构或从运行中的多根PCIe架构 中热拔出的功能性。这些机制允许根联合体例如热插入到运行中的 PCIe架构或从运行中的PCIe架构中热拔出。例如,可将刀片热插入 到刀片机箱,而其相关联的根联合体可以实时地结合到在现有系统 中的PCIe架构之中。
这种热插/拔能力允许PCIe架构扩展并且在新合并的根联合体 之间本地地共享虛拟功能。因此,PCIe架构可扩展,而无需为此停 下系统。PCI-SIG I/O虚拟化标准没有提供这种用于CPIe架构的动态 扩展的能力或标准。
利用所说明性的实施方式机制,假设存在具有一个或多个PCI 根联合体和支持多根感知(MRA)的交换机的现有主机系统。例如, 主机系统可以具有两个根联合体RC1和RC2,其中根联合体RC1和 RC2由具有一个或多个MRA交换机的PCI架构连接。而且,假设存 在一个或多个端点连接到该PCIe架构的端点,其中可将该PCIe架
假设多根(MR) PCI配置管理器(MR-PCIM)能够并且已经通过遍 历所有通过互连的PCIe架构的交换机可访问的链路而发现PCIe架
构,其中该多根(MR) PCI配置管理器(MR-PCIM)可位于主机系 统之一的带内或带外。上文描述的关于在此阐明的说明性的实施方 式的多种机制可满足所有这些假设。
利用上文假设的配置,当系统管理员等向现有的PCIe架构添加 新的根联合体(例如,向刀片机箱中插入新的刀片)时,自动机制 (诸如热插入控制器)或系统管理员至少之一通过诸如管理员接口 等向MR-PCIM通知根联合体的添加。例如,可通过向MR-PCIM公 告一个指示已经发生了向架构添加新实体的动作的事件来进行这种
通知。这种事件可标识交换机和交换机端口 ,其中在所述交换机和 交换机端口处现在新的根联合体连接到PCIe架构,即,在所述交换机和交换机端口处插入新的根联合体。
然后,MR-PCIM可以通过执行大量操作以初始化在现有PCIe 架构中的新根联合体而处理该公告的事件。例如,MR-PCIM可利用 关于新增加的组件的信息来更新其PCIe架构配置数据结构。由 MR-PCIM使用PCIe架构配置数据结构来表示PCIe架构的配置。由 MR-PCIM从PCIe架构配置寄存器并从来自系统管理员的输入(例 如,通过与MR-PCIM的管理用户接口 )来收集存储在PCIe架构配 置数据结构中的信息。下面,将更充分地描述PCIe架构配置数据结 构的内容以及对此内容的使用。
在更新了 PCIe架构配置数据结构之后,然后,MR-PCIM执行 如由PCI规范所定义的PCI配置空间操作,以按照PCI规范来确定 新增加的组件的特征,例如,是否是端点、根联合体、交换机等, 端点、根联合体、交换机等是何种类型等等。如果确定新增加的组 件是交换机,则关于交换机的每个端口来执行PCI配置空间操作, 以确定存在耦合到交换机的附加组件。然后,将针对新增加的组件 的特征信息(例如组件类型、供应商名称、零件编号、序列号等) 存储在虛拟PCIe架构配置数据结构中,以供MR-PCIM使用。
如果组件是新根联合体或新端点,MR-PCIM将该新根联合体或 端点与虚拟平面相关联。按照这种方式,使得该新根联合体或端点
对系统可用。如果组件是MRA交换机,则MR-PCIM按照PCI I/O 虚拟化规范来配置该交换机的虛拟平面表。如果组件是交换机,则 检查交换机端口,以察看哪些组件(如果有的话)附接到这些端口, 并且MR-PCIM也按照类似的方式基于关于这些组件的信息来配置 其PCIe架构配置数据结构。按照这种方式,可以动态地将新组件添 加到PCIe架构。
关于新根联合体,已经将MR-PCIM配置为包括对于新根联合体 的特征信息,并将该新根联合体与虛拟平面相关联,可以在PCIe架 构中使用该新联合体。这样,说明性的实施方式的机制允许向现有 运行中的PCIe架构添加根联合体及其相关联的组件。结果,当扩展 系统以包括附加组件时,针对该系统没有停机时间。
图25是示出了根据一个说明性的实施方式的用于根联合体的热 插入操作的示例性框图。应该理解,尽管图25示出了用于根联合体 的热插入操作,但示例性实施方式并不局限于此。相反,正如上文 所述的,该热插入操作可以关于端点、交换机以及其他类型的组件 来执行而并不脱离本发明的精神和范围。
如图25中所示,主机系统2510具有分别与虚拟平面2511和2513 相关联的现有根联合体RC1 2512和RC2 2514。现有根联合体RC1 2512和RC2 2514由MR-PCIM 2562配置以与在虛拟平面2541和 2550内的端点2542、2544、2552以及2554进行通信。MR-PCIM 2562 维护架构配置数据结构2566,其中架构配置数据结构2566存储了用 于PCIe架构2530的所有组件以及附接到PCIe架构2530的组件(包 括主机系统2510的组件)的特征信息。
在所描绘的例子中,假设已经将新根联合体RC N 2516加入主 机系统2510。例如,该根联合体RCN2516可以与刀片相关联,并 且主机系统2510可以是具有机箱的刀片服务器,其中可以插入与 RCN2516相关联的刀片。可以使用可提供RCN2516的其他类型的 设备,而不脱离说明性的实施方式的精神和范围。
对于说明性的实施方式,存在与每个交换机端口相关联的两种
类型的标准PCI热插入控制器,其中所述交换机端口允许组件的热
插/拔。由MR-PCIM 2562使用这些热插入控制器的其中之一,用于 热插/拔操作的物理方面,并被称为"物理热插入"控制器。对于每 个可热插入的端口 ,存在这些物理热插入控制器中的一个。
另外,提供"虛拟热插入"控制器用于根联合体,其中该根联 合体使用虛拟热插入控制器,以控制在交换机端口下的它们通往共 享组件的逻辑连接。对于由交换机端口所支持的每个虛拟平面,存 在一个虛拟热插入控制器。
对于说明性的实施方式,响应于对新RC N 2516的添加,在与 RC N 2516相关联的交换机2532端口处,物理热插入控制器向 MR-PCIM 2562发送"存在检测改变,,中断消息,以通知MR-PCIM 2562新组件已被加入PCIe架构。此中断消息由PCI规范所定义,但 此处的使用是为了将中断引导至MR-PCIM 2562而并非引导至没有 运行MR-PCIM 2562的根联合体。可选地,作为新组件添加的另一 种通知形式,在插入前,系统管理员还可以通过通往MR-PCIM 2562 的管理接口 (未示出)来通知MR-PCIM2562。
MR-PCIM 2562然后可以通过执行多个操作来处理"存在检测改 变,,中断,以初始化在现有PCIe架构2530中的新组件,例如,才艮 联合体RCN2516。例如,MR-PCIM 2562利用关于新添加的组件的 信息来更新其架构配置数据结构2566。在更新架构配置数据结构 2566中,MR-PCIM 2562执行PCI配置空间操作,以查询并确定该 新添加组件的特征,例如,其是否为端点、根联合体、交换机等, 其是何种类型的端点、根联合体、交换机等,供应商名称、零件编 号、序列号等。
除了此自动查询,当所添加的组件为根联合体时,该系统管理 员也可以例如通过通往MR-PCIM 2562的管理4妻口 (未示出),来 告知MR-PCIM 2562将哪些组件配置纟合该新添加的一艮联合体。例如, MR-PCIM 2562需要知到系统管理员希望将哪些端点分配给新RC N 2516,使得可以将那些端点添加至正确的虛拟平面,乂人而该新RCN 2516能获得对它们的访问。通过MR-PCIM 2562访问MRA交换机 2532的PCI配置空间中的PCI多根配置结构并且如果该端点为MRA 端点,除了在MRA交换机2532之外还访问在该端点中的PCI多根 配置结构,来执行这种向虛拟平面的端点分配。
在描述的例子中,所添加的新组件为才艮联合体RCN2516,例如 提供RC N 2516的刀片。然而,该组件可以是多个不同类型的组件 中的任意一个,并且因此,MR-PCIM 2562可以基于从所添加的组件 收集的特征信息来确定添加组件的类型。基于确定的添加组件的类 型,MR-PCIM 2562可以执行各种操作,以动态地向PCIe架构2530 添加组件,使得其可以使用于PCIe架构2530的通信和#:作。
因为在所描述的例子中,添加组件为新根联合体RCN2516,所 以MR-PCIM 2562将新根联合体RC N 2516与虛拟平面2515相关联, 并且然后将系统管理员已经指定给新根联合体RC N 2516的端点相 关联,如上文的详细描述的那样。按照这种方式,新组件可以动态 添加至PCIe架构。
随着新根联合体RCN2516已由MR-PCIM 2562添加至PCIe架 构2530,通过在架构配置数据结构2566中包括对于新根联合体RCN 2516的特征信息,将该组件的PCI配置空间设置为与该新根联合体 相关联,并将该新根联合体与虛拟平面2515相关联,可在PCIe架 构2530中使用新根联合体RC N 2516。上述才喿作可以在PCIe架构 2530继续工作的同时动态地加以执行。因此,说明性的实施方式提 供一种用于向运行中的PCIe架构2530中热插入组件的机制。
应该注意,架构配置数据结构2566可以用于多种目的,其中该 架构配置数据结构2566由MR-PCIM 2562关于该系统配置保持为当 前值。例如,其可用于经由MR-PCIM管理接口向系统管理员显示 PCIe架构2530的I/O配置。即,可以通过由MR-PCIM 2562所提供 的管理接口来向给系统管理员提供将哪些端点分配给哪些根联合
体、哪些端点并未分配给任何根联合体并因此可用于分配等的表示。 架构配置数据结构2566还可以跨过系统电源周期而在诸如闪存或硬盘的非易失性存储器中持续保存,使得当该系统启动时,可以由MR-PCIM 2562自动恢复先前的端点到根联合体的分配,如系统管理 员先前分配的那样。
利用从I/O通信架构2530、端点PCI配置寄存器已知信息以及 系统管理员经由MR-PCIM 2562的管理接口输入的信息,来保持架 构配置数据结构2566。架构配置数据结构2566标识I/O结构的树数 据结构,并因此可以用于知道当执行移除操作时将移除哪些组件,
^!口下文所述。
在上文的例子中,添加了根联合体。当发生这种情况时,作为 正常加电操作的一部分,该根联合体的固件和软件使用正常的配置
访问来探测在架构配置数据结构2566中的I/O配置信息。当端点为 正在添加至运4亍中的1/0通信架构2530的组件时, 一旦系统管理员 已通过MR-PCIM的管理接口向该期望的根联合体添加了该组件,则 在如上文所述向期望的虛拟平面配置了该端点之后,MR-PCIM 2562 信令通知该根联合体已经通过上文所涉及的虛拟热插入控制器添加 了该端点。作为结果,该根联合体从该虚拟热插入控制器接收中断, 以及对将配置并开始使用该新端点的软件加以初始化。因此,可以 添加端点,而无需停止当前系统操作。
另外,说明性的实施方式的机制还提供了用于从PCIe架构2530 动态移除组件的功能性。类似于"添加"事件,系统管理员可以经 由接口、自动检测机制等向MR-PCIM 2562通知"移除"事件。对 于"移除"事件,该事件对MR-PCIM 2562标识在由MR-PCIM 2562 管理的虛拟层级中的哪个虛拟树数据分支上,该移除操作(即,组 件的热插入移除)已发生或将要发生。
在移除操作中,由架构配置数据结构2566标识待移除的组件。 如上文所述,此架构配置数据结构2566标识了 1/0组件的树数据结 构。该移除操作指向在该树数据结构中待移除的组件,并且该组件 以下的所有也都将^皮移除。例如,通过经由MR-PCIM 2562管理接 口向系统管理员显示的图形管理界面来指向待移除的组件。在这种
情况下,MR-PCIM 2562经由架构配置数据结构2566而知道所选择 的组件如何涉及其他组件。
优选地,可以由与该组件的虛拟热插入控制器中的状态位来标 识组件的关系。在后者的情况下,虛拟热插入控制器可以向 MR-PCIM 2562发布中断消息,MR-PCIM 2562然后可以从该虛拟热 插入控制器的寄存器中读取状态,以查看哪些组件将被移除。在这 种情况下,MR-PCIM 2562可以扫描架构配置数据结构2566以查找 该组件,以便发现哪些组件需要被移除。
移除操作的实例包括移除端点EP5 2552的操作,在此情况下, 基于架构配置数据结构2566中的树数据结构,仅将该端点标识用于 移除。在另一例子中,基于架构配置数据结构2566的树数据结构, MRA交换机3 2532的移除将涉及MRA交换机3 2532和端点 EP3-EP6 2542-2554的移除。
MR-PCIM 2562通过更新其虚拟PCIe架构配置数据结构2566来 处理"移除,,事件,以便移除与"移除"事件相关联的组件,并且 在所涉及的一个或者多个树分支中更新所述组件的PCI配置空间, 以将它们从它们先前所占用的虚拟平面内移除。在移除之后,端点 可以被返回至未使用的组件池,并可以随后由系统管理员分配给另 一根联合体。具体地,如果该组件是如架构配置数据结构2566中的 PCI配置信息所标识的端点,则MR-PCIM 2562在该端点所在的虚拟 树数据层级中将该端点从虛拟平面移除。如果该组件是根联合体、 或提供了根联合体,则从作为此虛拟平面的部分的所有组件中移除 与该组件相关联的虛拟平面。这样,除了能够动态地向PCIe架构添 加组件之外,说明性的实施方式的机制还提供在PCIe架构处于操作 或运行的同时从PCIe架构动态地移除组件的能力。
图26是概括了根据一个说明性的实施方式的用于向PCIe架构 添加组件的示例性操作的流程图。如图26所示,该操作开始于在 MR-PCIM中接收到指示向PCIe架构添加组件的"添加,,事件(步 -骤2610)。如上文所述,此事件可以标识组件所添加到的交换才几和
交才炎才几端口,并可以例如响应于组件添加的自动4企测或响应于系统 管理员命令输入来产生该事件。该"添加,,事件可以作为"存在检
测改变"中断的部分而接收,其中"呈现检测改变"中断例如由PCIe 交换机的物理热插入控制器响应于检测到添加新组件而发出。
MR-PCIM收集对于添加的组件的特征信息(步骤2620)。此收 集可以包括与该组件进行通信以取回特征信息,诸如从与组件相关 联的VPD存储设备等中取回特征信息。另外,该收集可以包括 MR-PCIM执行PCI配置空间操作以确定新添加组件的这些特征。 MR-PCIM基于收集的特征信息来确定该组件是否为交换机(步骤 2630 )。如果该组件为交换机,则MR-PCIM收集对于附接到该交换 机端口的任何组件的特征信息(步骤2640 ) 。 MR-PCIM基于对于该 组件的特征信息确定该交换机是MRA交换机还是基本交换机(步骤 2650 )。如果该交换机为MRA交换机,则MR-PCIM配置MRA交 换机虛拟平面表(步骤2660 )。如果该交换机为基本交换机,则 MR-PCIM向一个虛拟平面分配交换机上所有的端口 (步骤2670)。 如果该组件并非交换机,则MR-PCIM确定该组件提供了新根联 合体或者端点。MR-PCIM将该根联合体或端点与虛拟平面相关联
(步骤2680 )。然后,使用对于该组件的特征信息,以基于该相关 联的虛拟平面来更新与MR-PCIM相关联的PCIe架构配置数据结构
(步骤2690 )。此更新可以包括,例如,更新在架构配置数据结构 中保持的一个或多个虛拟层级。最终,MR-PCIM更新PCI配置空间 VP标识符(步骤2695 )。然后,操作终止。
图27是概括了根据一个说明性的实施方式的用于从PCIe架构 中动态地移除组件的示例性操作的流程图。如图27所示,该操作开 始于MR-PCIM接收到"移除"事件(步骤2710)。如上文所述, 可以例如响应于组件移除的自动检测或着响应于系统管理员命令输 入而产生该事件。
MR-PCIM确定该正在移除的组件是否为端点(步骤2720)。如 果该组件为端点,则将该组件从虛拟平面内移除(步骤2730 ),其
中在与MR-PCIM相关联的PCIe架构配置数据结构中已经将该组件 分配给该虛拟平面。如果该组件并非端点,则该组件为根联合体。 如果该组件为根联合体,则MR-PCIM将与该根联合体相关联的虚拟 平面从PCIe架构配置数据结构中作为此虛拟平面的部分的所有组件 中移除(步骤2740 )。除了从MR-PCIM的架构配置数据结构中移 除组件之外,MR-PCIM还向受影响的组件发出PCI配置操作,以更 新该组件中的VP数量(步骤2750 )。然后,该操作终止。
因此,说明性的实施方式的机制提供了用于在多个系统镜像和 根联合体来共享端点的各种功能性。这些功能性包括配置共享存 储器空间用于在根联合体和端点之间的通信中使用,动态地添加或 移除根联合体以及其他组件等。这些各种机制均向系统添加了当需 求随时间变化时进行扩展的能力。此外,这些各种机制增强了负载 均衡、并发维护、以及其他期望的系统能力的冗余。
请特别注意,尽管已经在全功能的数据处理系统的上下文中描 述了本发明,但本领域技术人员应当理解,本发明的处理能够以指 令的计算机可读介质的形式以及各种形式来分发,并且应当理解, 可以等同地应用本发明,而无论实际用于执行该分发的信号承载介 质的特定类型。计算机可读介质的例子包括可记录类型介质,诸 如软盘、硬盘驱动器、RAM、 CD-ROM、 DVD-ROM;以及传输类型 介质,诸如数字和模拟通信链路、使用例如射频以及光波传输的传 输形式的有线或无线链路。计算机可读介质可以采用编码格式的形 式,其中针对在特定数据处理系统中的实际使用,对所述编码格式
进行解码。
为了示例和说明的目的,提供本发明的说明,并且本发明的说明并 非旨在穷尽性的或者将本发明限制于所公开的形式。许多修改和变型对 于本领域技术人员将是明显的。选择和说明这些实施方式,以便最好地 解释本发明的原理和实际应用,并使得本领域的其他技术人员理解本发 明,具有各种修改的各种实施方式适用于所预期的特定使用。
权利要求
1.一种在数据处理系统中用于在第一主机系统和第二主机系统之间进行通信的方法,该方法包括初始化在所述第一主机系统的共享存储器中的存储器地址空间,以包括分配给与所述第二主机系统相关联的端点的地址范围;在所述地址范围中生成工作队列结构;由所述第一主机系统将套接字初始化请求记入到所述工作队列结构;由所述第二主机系统经由所述端点从所述工作队列结构取回所述套接字初始化请求;基于所述套接字初始化请求,在所述第一主机系统和所述第二主机系统之间建立套接字通信连接;以及使用所述建立的套接字通信连接来处理在所述第一主机系统和所述第二主机系统之间的发送和接收通信。
2. 根据权利要求1所述的方法,其中初始化在所述第一主机系 统的共享存储器中的存储器地址空间包括处理对于所述端点的重 要产品数据(VPD)信息,其中所述VPD信息包括指示所述端点是 否支持套接字连接的字段,并且其中仅在所述VP D信息指示所述端 点支持套接字连接的情况下,将所述套接字初始化请求记入到所述 工作队列结构。
3. 根据权利要求1所述的方法,还包括响应于记入所述套接字初始化请求,对所述共享存储器中的门铃 结构执行写操作;由所述第二主机系统对所述门铃结构进行轮询,以确定套接字初 始化请求是否可用于由所述第二主机系统处理。
4. 根据权利要求3所述的方法,还包括由所述第二主机系统经由所述端点来执行直接存储器访问 (DMA)操作,以基于在所述门铃结构中提供的信息来从所述工作队列结构取回所述套接字初始化请求;由所述第二主机系统解析所述套接字初始化请求;由所述第二主机系统确定是否接受或拒绝所述套接字初始化请求;由所述第二主机系统基于确定是否接受或拒绝所述套接字初始 化请求的结果,来向所述第一主机系统发送响应。
5. 根据权利要求4所述的方法,其中所述套接字初始化请求包 括基地址、界限、以及在所述工作队列结构内的起始偏移量,以用 于建立所述套接字通信连接的第 一部分参数。
6. 根据权利要求5所述的方法,还包括从所述端点对所述第 一主机系统的根联合体执行DMA操作,用 以在确定接受所述套接字初始化请求的情况下,传输用于建立所述 套接字通信连接的第二部分参数。
7. 根据权利要求6所述的方法,其中用于建立所述套接字通信 连接的所述第二部分参数包括在与所述第二主机系统相关联的共享 存储器中提供的基地址、界限以及在工作队列结构内的起始偏移量。
8. 根据权利要求1所述的方法,其中所述发送和接收操作包括 根据建立的事务协议的推送操作或拉回操作中的至少 一 个。
9. 根据权利要求8所述的方法,其中所述推送操作和拉回操作 是直接存储器访问(DMA)操作。
10. 根据权利要求1所述的方法,其中初始化在所述第一主机系 统的共享存储器中的存储器地址空间包括遍历所述数据处理系统的通信架构中的链路,以收集关于在所述 通信架构中存在的端点和根联合体的信息;生成至少一个虛拟层级,所述虛拟层级标识在物理上或逻辑上相 互关联的至少一个端点和至少一个根联合体;基于所述至少一个虚拟层级来初始化所述存储器地址空间,使得 与所述第 一主机系统的根联合体相关联的每个端点在所述存储器地 址空间中具有相应的地址范围。
11. 根据权利要求1所述的方法,其中所述数据处理系统是刀片 服务器,以及所述第一主机系统和第二主机系统是所述刀片服务器 中的刀片。
12. 根据权利要求1所述的方法,其中所述数据处理系统包括所述第 一 主机系统和第二主机系统与之耦合的外围组件互连Express (PCIe)结构,以及其中所述端点是PCIe适配器。
13. 根据权利要求12所述的方法,其中所述PCIe架构是包括一 个或多个多根感知(MRA)交换机的多根感知PCIe结构。
14. 一种计算机程序产品,包括具有计算机可读程序的计算机可 用介质,其中当在数据处理系统中执行所述计算机可读程序时,将 使所述数据处理系统执行根据权利要求1-13任何一个中的方法步 骤。
15. —种数据处理系统,包括 第一主机系统; 第二主机系统;以及耦合到所述第 一 主机系统和所述第二主机系统的通信架构,其中初始化在所述第一主机系统的共享存储器中的存储器地址空间, 以包括分配给与所述第二主机系统相关联的端点的地址范围; 在所述地址范围中生成工作队列结构;由所述第一主机系统将套接字初始化请求记入到所述工作队列 结构;由所述第二主机系统经由所述端点来从所述工作队列结构取回 所述套接字初始化请求;基于所述套接字初始化请求,在所述第一主机系统和所述第二主 机系统之间建立套接字通信连接;以及使用所述建立的套接字通信连接来处理在所述第一主机系统和 所述第二主机系统之间的发送和接收通信。
16. 根据权利要求15的数据处理系统,其中通过处理对于所述端点的重要产品数据(VPD)信息,初始化在所述第一主机系统的 共享存储器中的存储器地址空间,其中所述VPD信息包括指示所述 端点是否支持套接字连接的字段,以及其中仅在所述VP D信息指示 所述端点支持套接字连接的情况下,将所述套接字初始化请求记入 到所述工作队列结构。
17. 根据权利要求15所述的数据处理系统,其中 响应于记入所述套接字初始化请求,对所述共享存储器中的门铃结构执行写操作;由所述第二主机系统对所述门铃结构进行轮询,以确定套接字初 始化请求是否可用于由所述第二主机系统处理。
18. 根据权利要求17所述的数据处理系统,其中所述第二主机 系统基于在所述门铃结构中提供的信息,经由所述端点执行直接存储 器访问(DMA)操作,以从所述工作队列结构取回所述套接字初始化请求;解析所述套接字初始化请求;确定是否接受或拒绝所述套接字初始化请求;基于确定是否接受或拒绝所述套接字初始化请求的结果,向所述 第 一主机系统发送响应。
19. 根据权利要求18所述的数据处理系统,其中所述套接字初 始化请求包括基地址、界限、以及在所述工作队列结构内的起始偏 移量,以用于建立所述套接字通信连接的第一部分参数。
20. 根据权利要求19所述的数据处理系统,其中所述端点对所述第 一主机系统的根联合体执行DMA操作,以在 确定接受所述套接字初始化请求的情况下,传输用于建立所述套接 字通信连接的第二部分参数。
21. 根据权利要求20所述的数据处理系统,其中用于建立所述 套接字通信连接的所述第二部分参数包括在与所述第二主机系统相 关联的共享存储器中提供的基地址、界限以及在工作队列结构内的起始偏移量。
22. 根据权利要求15所述的数据处理系统,其中通过以下动作 来初始化在所述第一主机系统的共享存储器中的存储器地址空间遍历在所述数据处理系统的通信架构中的链路,以收集关于在所 述通信架构中存在的端点和根联合体的信息;生成至少一个虛拟层级,所述虛拟层级标识在物理上或逻辑上相 互关联的至少一个端点和至少一个根联合体;以及基于所述至少一个虚拟层级来初始化所述存储器地址空间,使得 与所述第一主机系统的根联合体相关联的每个端点在所迷存储器地 址空间中具有相应的地址范围。
23. 根据权利要求15所述的方法,其中所述数据处理系统是刀 片服务器,以及所述第 一 主机系统和第二主机系统是所述刀片服务 器中的刀片。
全文摘要
提供了一种用于使用套接字连接和共享存储器在主机系统之间进行通信的系统和方法。利用这种基于套接字的通信,可以使用主机系统中的工作队列来监听输入的套接字初始化请求。希望与第二主机系统建立套接字通信连接的第一主机系统可以在其工作队列中建立套接字初始化请求工作队列单元,并且可以通知第二主机系统该套接字初始化请求工作队列单元可用于处理。然后,第二主机系统可以接受或拒绝该请求。如果第二主机系统接受请求,则它返回套接字的参数的第二半,用于由第一主机系统在第一和第二主机系统之间执行基于套接字的通信时使用。
文档编号G06F15/167GK101206632SQ20071016505
公开日2008年6月25日 申请日期2007年11月6日 优先权日2006年12月19日
发明者C·A·萨尔兹伯格, D·M·弗赖穆特, J·A·瓦尔加斯, R·J·雷西奥, S·M·瑟伯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1