CN101206634A - 用于初始化共享存储器的系统和方法 - Google Patents
用于初始化共享存储器的系统和方法 Download PDFInfo
- Publication number
- CN101206634A CN101206634A CNA2007101650577A CN200710165057A CN101206634A CN 101206634 A CN101206634 A CN 101206634A CN A2007101650577 A CNA2007101650577 A CN A2007101650577A CN 200710165057 A CN200710165057 A CN 200710165057A CN 101206634 A CN101206634 A CN 101206634A
- Authority
- CN
- China
- Prior art keywords
- host computer
- computer system
- end points
- root complex
- pcie
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 79
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000003860 storage Methods 0.000 claims description 112
- 238000004891 communication Methods 0.000 claims description 89
- 238000010276 construction Methods 0.000 claims description 36
- 238000013519 translation Methods 0.000 claims description 13
- 230000008447 perception Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 5
- 230000014759 maintenance of location Effects 0.000 claims description 5
- 230000000295 complement effect Effects 0.000 claims description 4
- 230000009471 action Effects 0.000 claims description 3
- 239000004744 fabric Substances 0.000 abstract description 6
- 230000003863 physical function Effects 0.000 description 92
- 230000006870 function Effects 0.000 description 80
- 238000010586 diagram Methods 0.000 description 57
- 230000007246 mechanism Effects 0.000 description 53
- 230000008569 process Effects 0.000 description 31
- 230000005012 migration Effects 0.000 description 24
- 238000013508 migration Methods 0.000 description 24
- 230000015572 biosynthetic process Effects 0.000 description 15
- 238000005755 formation reaction Methods 0.000 description 15
- 230000004044 response Effects 0.000 description 10
- 230000014509 gene expression Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 6
- 238000003780 insertion Methods 0.000 description 6
- 230000037431 insertion Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 230000000712 assembly Effects 0.000 description 5
- 238000000429 assembly Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 230000011664 signaling Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000026676 system process Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005315 distribution function Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000010668 complexation reaction Methods 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了用于为多个根联合体之间共享端点而初始化共享存储器的系统和方法。在一个说明性的实施方式中,多根PCIe管理器(MR-PCIM)通过遍历所有链路来发现PCIe交换机架构而初始化在根联合体和端点之间的共享存储器,其中通过PCIe交换机架构的互连的交换机可访问所述链路。当遍历链路时,MR-PCIM比较对于根联合体和端点每一个所获得的信息,以确定哪些端点和根联合体驻留在相同的刀片上。然后,生成虚拟PCIe树数据结构,该虚拟PCIe树数据结构将在PCIe交换机架构上可用的端点绑定到每个根联合体。然后,MR-PCIM或单根PCIe管理器(SR-PCIM)可以在端点所属的PCIe存储器地址空间内为每个端点和根联合体分配基地址和界限。
Description
技术领域
本申请一般涉及改进的数据处理系统和方法。更具体地,本申请涉及用于为在多个根联合体间共享端点而初始化共享存储器的机制。
背景技术
大部分现代计算设备利用使用外围组件互连标准的某个版本或实现的总线和输入/输出(I/O)适配器,其中外围组件互连标准最初由英特尔公司在20世纪90年代建立。外围组件互连(PCI)标准规定了用于将外围组件附接到计算机主板的计算机总线。PCT Express或PCIe是使用现有PCI编程概念的PCI计算机总线的实现,但是该实现是基于完全不同且更快的串行物理层通信协议的计算机总线。物理层不包括可以在多个设备之间共享的双向总线,而是包括严格地连接到两个设备的单一单向链路。
图1是示出了根据PCIe规范的PCI Express(PCIe)架构拓扑的示意图。如图1所示,PCIe架构拓扑100包括耦合到根联合体130的主处理器(CPU)100和存储器120,根联合体130接着耦合到一个或多个PCIe端点140(在PCIe规范中使用术语“端点”来表示支持PCIe的I/O适配器)、PCI Express-PCI桥150以及一个或多个互连交换机160。根联合体130表示将CPU/存储器连接到I/O适配器的I/O层级的根。根联合体130包括主桥、集成了零个或多个根联合体的端点、零个或多个根联合体事件收集器、以及一个或多个根端口。每个根端口支持单独的I/O层级。I/O层级可以包括根联合体130、零个或多个互连交换机160和/或桥150(其包含交换或PCIe架构)、以及一个或者多个诸如端点170和182-188的端点。关于PCI和PCIe的更多信息,参见在外围组件互连特殊兴趣组(PCI-SIG)的网站www.pcisig.com上可获得的PCI和PCIe规范。
今天,将PCI和PCIe I/O适配器、总线等集成到包括刀片服务器的刀片的几乎每一个计算设备的主板上。刀片服务器本质上是用于大量的单独的最小封装的计算机主板“刀片”的壳体,每个刀片包括一个或多个处理器、计算机存储器、计算机存储设备和计算机网络连接,但共享机箱的公共电源和空气冷却资源。刀片服务器对于诸如Web主控和集群计算的特定用途是理想的。
如前所述,通常将PCI和PCIe I/O适配器集成到刀片自身之中。结果,在相同刀片服务器的刀片之间无法共享I/O适配器。而且,I/O适配器的集成限制了链路速率的可扩展性。即,随着时间的过去,链路速率无法随着处理器性能而扩展。到目前为止,还没有设计出一种机制以允许由多个系统镜像跨过多个刀片而共享PCI和PCIeI/O适配器。而且,还没有设计出一种机制以允许以非集成的方式来提供PCI和PCIe I/O适配器,以供刀片服务器中的多个刀片使用。
发明内容
为了解决由于当前PCI和PCIe I/O适配器集成的限制,说明性的实施方式提供了一种机制,其允许由两个或更多的系统镜像(SI)本地地共享PCIe适配器。例如,提供一种机制,用于使在相同根联合体内或跨过多个根联合体(RC)的多个SI能够同时共享例如PCIeI/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总线存储器地址是可访问的。第一主机可以使用存储器转换和保护表数据结构以将由第二主机看到的PCIe存储器地址映射到第一主机的实际存储器地址。
在另一个说明性的实施方式中,已经初始化了主机系统的存储器地址空间,使得可以跨过主机系统由根联合体访问端点,然后,可使用这些存储器地址空间以允许与这些根联合体相关联的系统镜像和它们对应的应用来与端点进行通信。
支持这种通信的一种方式是通过队列系统,其中队列系统利用在不同主机系统中的这些经初始化的存储器地址空间。这种队列系统可包括工作队列结构和完成队列结构。工作队列结构和完成队列结构二者可包括:用于识别大量队列单元(工作队列单元(WQE)或者完成队列单元(CQE),这依赖于该队列结构是工作队列结构还是完成队列结构)的门铃结构、用于队列的起始的基地址、用于队列的末尾的界限地址和指示在队列中将要被处理的下一个WQE或CQE的偏移量。可以使用工作队列结构和完成队列结构二者来发送和接收数据。
可在对应于将与其进行通信的根联合体和端点的主机系统存储器的部分中提供队列结构和门铃结构。可以生成队列单元,并将所述队列单元添加到队列结构中,以及可以写入门铃结构,以便由此就队列单元可用于处理而通知端点或根联合体。可以执行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架构或从运行中的多根PCIe架构中热拔出新组件的功能性。这些机制允许根联合体例如热插入到运行中的PCIe架构或从运行中的PCIe架构中热拔出。例如,可将刀片热插入到刀片机箱,而其相关联的根联合体可以实时地结合到在现有系统中的PCIe架构之中。
这种热插/拔能力允许PCIe架构增长,并允许跨过新合并的根联合体而本地地共享虚拟功能。因此,可扩展PCIe架构而无需为此关闭系统。PCI-SIG I/O虚拟化标准没有提供用于CPIe架构的这种动态扩展的能力或标准。
在一个说明性的实施方式中,提供了一种用于针对在数据处理系统的多个根联合体之间的通信而初始化共享存储器的方法。该方法可包括生成在数据处理系统中的通信架构的组件的第一虚拟层级,该第一虚拟层级与数据处理系统的第一根联合体相关联。该方法进一步可包括生成在数据处理系统中的通信架构的组件的第二虚拟层级,该第二虚拟层级与数据处理系统的第二根联合体相关联。可将在与第一根联合体相关联的第一共享存储器中的地址范围分配给在第一虚拟层级中的每个端点。可将在与第二根联合体相关联的第二共享存储器中的地址范围分配给在第二虚拟层级中的每个端点。该方法可以进一步包括利用在第一和第二共享存储器中分配的地址范围,来在与第一根联合体相关联的第一主机系统和与第二根联合体相关联的第二主机系统之间执行通信。
生成第一虚拟层级和生成第二虚拟层级可包括:遍历在通信架构中的链路以发现该通信架构的组件,存储用于该通信架构的组件的标识数据,并基于所存储的标识数据而生成第一和第二虚拟层级。
基于所存储的标识数据而生成第一和第二虚拟层级可包括:将用于每个端点组件的标识数据与用于在遍历在通信架构中的链路期间发现的每个根联合体组件的标识数据进行比较。如果用于端点组件的标识数据与用于根联合体端点的标识数据相匹配,则可设置与端点组件相关联的共同驻留字段值。可基于与通信架构的端点组件相关联的共同驻留的字段值来生成第一和第二虚拟层级。
可由与各自的第一和第二根联合体相关联的单根外围组件互连管理器(SR-PCIM)来执行生成和分配操作。SR-PCIM可以为对应的虚拟层级的每个端点分配在该端点所属的PCI存储器地址空间内的基地址和界限。SR-PCIM可以向端点的基地址寄存器(BAR)写入基地址和界限。SR-PCIM可以仅基于与其各自的根联合体相关联的虚拟层级来单独地配置与其各自的根联合体相关联的共享存储器。SR-PCIM可以基于由多根外围组件互连管理器(MR-PCIM)收集的信息来生成虚拟层级,MR-PCIM遍历通信架构的所有链路,并标识在该通信架构中存在的端点和根联合体之间的关联。
通信架构可以是外围组件互连EXPRESS(PCIe)架构,而端点是PCIe适配器。通信架构可以是包括一个或多个多根感知(MRA)交换机的多根感知通信架构。该数据处理系统可以是刀片服务器,而主机系统可以是刀片服务器的刀片。
至少一个端点具有在第一共享存储器和第二共享存储器二者中相关联的地址范围,使得在第一根联合体和第二根联合体之间共享该至少一个端点。利用在第一和第二共享存储器内的所分配的地址范围来在第一根联合体和第二根联合之间执行通信可以包括:利用地址转换和保护表数据结构来将与第一或第二共享存储器之一相关联的地址映射到与第一或第二共享存储器的另一个相关联的地址。
该方法还可以包括针对在第一虚拟层级中的每个根联合体,在与第一根联合体相关联的第一共享存储器中分配地址范围。该方法还可以包括针对在第二虚拟层级中的每个根联合体,在与第二根联合体相关联的第二共享存储器中分配地址范围。可以在第一根联合体和第二根联合体之间直接执行第一主机系统和第二主机系统之间的通信。可以在第一主机系统和第二主机系统中的一个的根联合体与第一主机系统和第二主机系统中的另一个的端点之间执行第一主机系统和第二主机系统之间的通信。
在其他说明性的实施方式中,提供了包括计算机可用介质的计算机程序产品,该计算机可用介质上具有计算机可读程序。当在计算设备上执行计算机可读程序时,使得计算设备执行上文列出的关于说明性的实施方式的方法的各种操作或其组合。
在又一个说明性的实施方式中,提供一种数据处理系统。该数据处理系统可以包括第一主机系统、第二主机系统和将第一主机系统耦合到第二主机系统的通信架构。第一主机系统和第二主机系统可以执行上文列出的关于说明性的实施方式的方法的各种操作或其组合。
在下文对本发明的示例性实施方式的详细描述中,将描述本发明的这些和其他特征及优点,而当看到在下文的对本发明的示例性实施方式的详细描述时,本发明的这些和其他特征及优点对本领域普通技术人员将变得显而易见。
附图说明
在所附的权利要求中阐明了确信新颖的本发明的特征。然而,通过结合附图阅读下文对说明性的实施方式的详细描述,将更好地理解本发明自身、以及优选的使用模式、其进一步的目标和优点,
其中:
图1是示出了在本领域公知的PCIe架构拓扑的示例性示意图;
图2是示出了在本领域公知的系统虚拟化的示例性示意图;
图3是示出了使用I/O虚拟化中介对PCI根联合体的I/O进行虚拟化的第一方法的示例性示意图;
图4是示出了使用本地共享的PCI I/O适配器对PCI根联合体的I/O进行虚拟化的第二方法的示例性示意图;
图5是支持PCIe I/O虚拟化的端点的示例性示意图;
图6是示出了没有本地虚拟化的单根端点的物理和虚拟功能的示例性示意图;
图7是示出了支持本地I/O虚拟化的单根端点的物理和虚拟功能的示例性示意图;
图8是示出了根据一个说明性的实施方式的多根虚拟化I/O拓扑的示例性示意图;
图9是示出了根据一个说明性的实施方式的从根节点的SR-PCIM的视角的多根虚拟化I/O拓扑的虚拟层级视图的示例性示意图;
图10是示出了根据一个说明性的实施方式的基于共享存储器的PCIe系统的示例性示意图;
图11A和11B是表示了根据一个说明性的实施方式的示例性虚拟PCI树数据结构的示意图;
图12是概括了根据一个说明性的实施方式的用于为端点的共享而将主机系统的存储器地址空间进行初始化的示例性操作的流程图;
图13是示出了根据一个说明性的实施方式的用于从第一主机系统向第二主机系统发送工作队列单元(WQE)的过程的示例性的框图;
图14是示出了根据一个说明性的实施方式的用于从第二主机系统向第一主机系统发送完成队列单元(CQE)的过程的示例性的框图;
图15是概括了根据一个示例性实施方式的用于在第一主机系统的根联合体和与第二主机系统相关联的端点之间传送WQE的示例性操作的示例性流程图;
图16是概括了根据一个示例性实施方式的用于从第二主机系统的端点向第一主机系统的根联合体传送CQE的示例性操作的示例性流程图;
图17是示出了可以用于在相同或不同的主机系统的根联合体和端点之间执行通信的事务的各种可能的组合的示例性表;
图18是示出了根据一个示例性实时方式的用于建立套接字并在第一主机系统和第二主机系统之间执行基于套接字的通信的过程的示例性框图;
图19是概括了根据一个说明性的实施方式的用于使用基于套接字的通信连接来执行拉回事务的示例性操作的流程图;
图20是概括了根据一个说明性的实施方式的用于使用基于套接字的通信连接而执行推送事务的示例性操作的流程图;
图21A和21B是示出了根据一个说明性的实施方式的从在相同PCIe适配器上的一个物理功能向另一个物理功能的虚拟功能及其相关联的应用的单根无状态迁移的示例性示意图;
图22A和22B是示出了根据一个说明性的实施方式的从一个PCIe适配器向另一个PCIe适配器的虚拟功能及其相关联的应用的单根无状态迁移的示例性示意图;
图23A和23B是示出了根据一个说明性的实施方式的从一个系统镜像向另一个系统镜像的虚拟功能及其相关联的应用的单根无状态迁移的示例性示意图;
图24是概括了根据一个说明性的实施方式的用于迁移虚拟功能的示例性操作的流程图;
图25是示出了根据一个说明性的实施方式的用于根联合体的热插入操作的示例性框图;
图26是概括了根据一个说明性的实施方式的用于向PCIe架构增加组件的示例性操作的流程图;以及
图27是概括了根据一个说明性的实施方式的用于从PCIe架构动态移除组件的示例性操作的流程图。
具体实施方式
说明性的实施方式提供了一种机制,该机制允许由相同或不同的根联合体的两个或更多系统镜像(SI)来本地地(natively)共享PCIe适配器或“端点”,其中所述相同或不同的根联合体可以位于相同或不同的根节点(例如,刀片服务器的刀片)上。另外,说明性的实施方式提供了一种支持在系统镜像和本地共享的端点之间的通信的机制。此外,说明性的实施方式提供了用于在虚拟平面(plane)、根联合体和系统镜像之间迁移虚拟功能的机制,以实现对PCIe架构的管理。另外,说明性的实施方式提供了一种机制,其中通过该机制,根联合体的单根PCI管理器(SR-PCIM)能够从端点读取该端点的实现者在设计该端点时所允许的功能的有效组合。然后,SR-PCIM可以设置将在当前配置中使用的功能的组合,其中在该当前配置中正在使用该端点。
图2是示出了本领域中公知的系统虚拟化的示例性示意图。系统虚拟化是对物理系统的处理器、存储器、I/O适配器、存储设备以及其他资源的划分,其中每组资源与其自身的系统镜像实例和应用一起独立地操作。在这种系统虚拟化中,虚拟资源由物理资源组成,并作为物理资源的代理来操作,其中物理资源例如为具有相同外部接口和功能的存储器、磁盘驱动器以及具有构建的接口/功能的其他硬件组件。系统虚拟化通常利用虚拟化中介,该虚拟化中介创建虚拟资源并将其映射到物理资源,由此提供虚拟资源之间的隔离。通常,将虚拟化中介提供作为软件、固件和硬件机制之一或其组合。
如图2所示,通常在虚拟化系统中,应用210与系统镜像(SI)220进行通信,其中该系统镜像(SI)220为诸如通用或专用操作系统的软件组件,由该软件组件分配特定的虚拟和物理资源。系统镜像220与虚拟系统230相关联,虚拟系统230包括为运行单个SI实例所必需的物理或虚拟化资源,例如,虚拟化的处理器、存储器、I/O适配器、存储设备等。
系统镜像220通过使用虚拟系统230而经由虚拟化中介240来访问物理系统资源250。虚拟化中介240管理对SI的资源分配,并隔离分配给SI的资源免受其他SI访问。通常,基于由虚拟化中介240执行的资源映射以及由虚拟化中介240维护的一个或多个资源映射数据结构来执行这种分配和隔离。
可使用这种虚拟化以允许对I/O操作和I/O资源的虚拟化。即,关于I/O虚拟化(IOV),可由使用I/O虚拟化中介(IOVI)(诸如虚拟化中介240)的多于一个的SI来共享单个物理I/O单元。IOVI可以是软件、固件等,用于通过干预例如一个或多个的配置、I/O、来自SI的存储器操作、以及直接存储器访问(DMA)、完成和对SI的中断操作来支持IOV。
图3是示出了使用I/O虚拟化中介的对PCI根联合体的I/O进行虚拟化的第一方法的示例性示意图。如图3所示,主机计算机组310可以是一个或者多个芯片处理器、主板、刀片等,该主机计算机组310可以支持多个系统镜像320-330,应用(未示出)通过这些系统镜像可以访问诸如PCIe端点370-390的系统资源。通过I/O虚拟化中介340、PCIe根联合体350以及一个或多个PCIe交换机360和/或其他PCIe架构单元,该系统镜像与虚拟化的资源进行通信。
通过图3所示的方法,I/O虚拟化中介340介入到所有的I/O事务中,并执行所有的I/O虚拟化功能。例如,I/O虚拟化中介340将来自各种SI的I/O队列多路传输到PCIe端点370-390中的单一队列。这样,I/O虚拟化中介充当在SI 320-330和物理PCIe端点370-390之间的代理。
这种I/O虚拟化中介340的介入可能在I/O操作中引入额外的延迟,这限制了每时间单位的I/O操作的数量,并且由此限制了I/O性能。此外,I/O中介需要额外的CPU周期,这样,降低了对其他系统操作可用的CPU性能。此方法所需要的额外的上下文交换和中断重定向机制也会影响系统的整体性能。而且,当在多个根联合体之间共享端点3 70-390时,IOVI 340是不可行的。
图4是示出了使用本地共享的PCI I/O适配器对PCI根联合体的I/O进行虚拟化的第二方法的示例性示意图。如图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的虚拟化结构中也提供了I/O虚拟化接口450。将I/O虚拟化接口450与不支持IOV的PCIe端点一起使用,其中所述不支持IOV的PCIe端点可耦合到PCIe交换机460。即,对于那些对I/O虚拟化(IOV)没有本地(即,在端点内部)支持的PCIe端点,以同如前所述的关于图3相类似的方式,将I/O虚拟化接口(IOVI)450与PCIe端点一起使用。
对于支持IOV的PCIe端点470-490,使用IOVI 450主要用于配置事务的目的,并且在存储器地址空间操作中不涉及IOVI 450,所述存储器地址空间操作诸如为从SI发起的存储器映射的输入/输出(MMIO)操作、或者从PCIe端点470-490发起的直接存储器访问(DMA)操作。相反,直接执行在SI 420-430和端点470-490之间的数据传输,而无需由IOVI 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是支持PCIe I/O虚拟化(IOV)的端点的示例性示意图。如图5中所示,PCIe IOV端点500包括PCIe端口510,通过该端口可执行与PCIe架构的PCIe交换机等的通信。内部路由520提供到配置管理功能530和多个虚拟功能(VF)540-560的通信通路。配置管理功能530可以是与虚拟功能540-560相对的物理功能。如同在PCI规范中所用的,术语物理“功能”是由单一配置空间所表示的一组逻辑。换言之,物理“功能”是电路逻辑,其基于在存储器中与该功能相关联的配置空间中存储的数据是可配置的,例如可在不可分离的资源570中提供。
可使用配置管理功能530来配置虚拟功能540-560。在支持I/O虚拟化的端点内,虚拟功能是共享一个或多个例如链路的物理端点资源,并且可以与其他功能一起提供在例如PCIe IOV端点500的可共享资源池580中的功能。无需通过I/O虚拟化中介的运行时干预,虚拟功能可以直接是针对来自系统镜像的I/O和存储器操作的宿(sink),以及是对系统镜像(SI)的中断、完成、以及直接存储器访问(DMA)操作的源。
PCIe端点关于由PCIe端点所支持的“功能”可以具有许多不同的配置类型。例如,端点可以支持单物理功能(PF)、多个独立的PF、或甚至多个依赖的PF。在支持本地I/O虚拟化的端点中,由端点支持的每个PF可以与一个或多个虚拟功能(VF)相关联,这些虚拟功能(VF)自身可以依赖于与其他PF相关联的VF。将在下文的图6和图7中示出在物理和虚拟功能之间示例性关系。
图6是示出了没有本地虚拟化的单根端点的物理和虚拟功能的示例性示意图。术语“单根端点”是指与单根节点(即,单主机系统)的单根联合体相关联的端点。利用单根端点,可由与单根联合体相关联的多个系统镜像(SI)共享该端点,但无法在相同或不同的根节点上的多个根联合体之间共享该端点。
如图6所示,根节点600包括:与PCIe端点670-690通信的多个系统镜像610、612;I/O虚拟化中介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的能力以及来自用户(诸如,系统管理员)的输入、或者关于将哪些资源分配给哪个SI610、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(即,PF0到PFN)。类型涉及PF或VF的功能性,例如以太网功能和光纤通道功能是两种不同类型的功能。端点690支持具有两个或多个相关PF的不同类型的多个PF。在所描述的例子中,PF0依赖于PF1,或者反之亦然。
在图6中示例性的例子中,端点670-690是由系统镜像(SI)610-612通过由I/O虚拟化中介(IOVI)630可用的虚拟化机制而共享的。如前所述,在这种布置中,在SI 610、612和PCIe端点670-690之间的所有PCIe事务中涉及IOVI 630。单独的PCIe端点670-690无需在其自身中支持虚拟化,这是因为处理虚拟化的负担完全放在IOVI 630上。结果,虽然在这种布置中可以使用已知的用于虚拟化的机制,但与如果在每个I/O操作中均没有涉及IOVI 630的I/O速率潜力相比,可以执行I/O操作的速率相对较慢。
图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虚拟化,使得可由多个SI 710、712来共享该PF。
如图7中所示,VF和PF可以依赖于其他VF和PF。通常,如果PF是依赖的PF,那么与该PF相关联的所有VF也将是依赖的。这样,例如,PF0的VF可以依赖于对应的PF 1的VF。
对于图7所示的布置,SI 710、712可以通过PCI根联合体730和PCIe交换机740与支持IOV的PCIe端点770-790直接进行通信,反之亦然,而无需包括I/O虚拟化中介。通过在端点770-790中和在SR-PCIM 720中提供的IOV支持,可以进行这种直接通信,SR-PCIM720对在端点770-790中的PF和VF进行配置。
在SI和端点之间的直接通信显著地增加了可以在多个SI710-712和共享的支持IOV的PCIe端点770-790之间执行I/O操作的速度。然而,为使这种性能增强变得可行,PCIe端点770-790必须通过在SR-PCIM 720和端点770-790的物理功能(PF)中提供用于生成和管理虚拟功能(VF)的机制而支持I/O虚拟化。
上文对PCIe层级的描述局限于单根层级。换言之,仅由在与单PCI根联合体730相关联的单根节点700上的SI 710、712来共享PCIe端点。上述的机制对共享PCIe端点的多根联合体没有提供支持。这样,无法向多个节点提供对PCIe端点的资源的共享访问。这限制了利用这种布置的系统的可扩展性,这是因为对于每个根节点需要单独的端点集合。
这里,说明性的实施方式利用多个根I/O虚拟化,其中多个PCI根联合体可以共享对同一组支持IOV的PCIe端点的访问。结果,与这些PCI根联合体的每个相关联的系统镜像的每个可以共享对同一组支持IOV的PCIe端点资源的访问,但在适当位置处具有针对在每个根节点上的每个SI的虚拟化的保护。这样,通过提供允许添加根节点和对应的PCI根联合体的机制而将可扩展性最大化,其中这些根联合体可以共享支持IOV的PCIe端点的相同的现有组。
图8是示出了根据一个说明性的实施方式的多根虚拟化的I/O拓扑的示例性示意图。如图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的一部分而提供。系统1000具有包括第二根联合体(CR2)1022和第二端点(EP2)1024的第二主机系统1020,并且第二主机系统1020也与第二多根感知(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标识符是链路本地的,所以RC1的VH可以是例如在1032和1016之间的链路上具有VP=4,而在1032和1042之间的链路上具有VP=4。换言之,VH由一组PCIe组件和连接这些组件的链路构成,这些链路的每个都具有链路本地VP标识符,用于指明给定事务正引用哪个VH。
在所描述的例子中,目标是允许根联合体1012、以及因此允许与同该根联合体1012相关联的一个或多个系统镜像相联合运行的应用来同与另一个根联合体相关联的端点(例如,与根联合体RC2 1022相关联的端点EP2 1024)进行通信。这样,例如,可由运行在根联合体RC1 1012上的系统镜像来将EP2 1024作为端点而使用。按照这种方式,可以在不同虚拟平面和/或主机系统上的系统镜像之间共享与根联合体位于同一位置的端点。结果,当在节点之间通信时,可以实现高性能的节点到节点(即,主机系统到主机系统)的通信和负载均衡,并通过消除对通过诸如InfiniBand或以太网交换机的外部网络适配器和交换机的需要而降低系统成本。
为了允许在主机系统之间由系统镜像共享端点,在主机系统1010或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存储器地址空间中的基地址和界限,该PCIe存储器地址空间例如是与主机系统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-PCIM1062的非易失性存储器区域(未示出)中。
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树数据结构,诸如图11A和11B中所示例性的。如同在图11A和11B中示例性的,虚拟PCI树数据结构将在PCIe架构上可用的端点绑定到每个根联合体。
假设在图11A中示例性的虚拟PCI树数据结构中,通过由用户指示给MR-PCIM 1062的分配,使得端点EP2 1024、EP4 1044和EP51052与根联合体RC1 1012相关联。仅执行上述的VPD匹配以允许RC确定EP物理地位于该RC的主机上。这告诉RC,通过在RC的地址空间中的标准存储器映射寻址,EP对该RC是可访问的。这是物理的关联。利用虚拟PCI树数据结构,通过用户指示他/她希望MR-PCIM 1062创建这种逻辑关联来指定逻辑关联。
类似地,在图11B中假设端点EP1 1014、EP3 1042和EP6 1054通过描述逻辑关联的用户输入、和它们的VPD信息以及由MR-PCIM1062做出的比较,来与根联合体RC1 1012相关联。这样,在图11A中示例性的所描述的例子中,端点EP2 1024经由交换机2 1026和交换机1 1016关联于(或绑定到)根联合体RC1 1012。端点EP4 1044和EP5 1052经由交换机3 1032和交换机1 1016而与根联合体RC11012相关联。在图11B中,端点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可访问EP1 1014。在主机系统1 1010中,通过主机系统的存储器1070地址空间,该主机系统的处理器(未示出)可访问EP1 1014。在主机系统2 1020中,EP1 1014具有在主机系统2的存储器1080地址空间中的由EP1基地址和限制定义的PCIe孔径,其中主机系统2的存储器1080地址空间可通过PCI总线存储器地址,经由存储器影射的I/O来访问。例如,主机系统1 1010的处理器可使用存储器地址转换和保护表(未示出),以将由主机系统21020的处理器看到的PCIe存储器地址映射成为主机系统1的存储器地址,该存储器地址转换和保护表诸如是在虚拟化中介(诸如管理程序、根联合体1012等)中提供的。
类似地,通过用于主机系统存储器1070和1080的两个PCI存储器地址空间,可访问EP2 1024。在主机系统2 1020中,由主机系统2的处理器通过用于其存储器1080的主机系统2的实际存储器地址可访问EP2 1024。在主机系统1 1010中,EP2 1024具有在主机系统1的存储器1070中的由用于EP2 1024的基地址和限制所定义的PCIe孔径,其中作为存储器映射的I/O,通过PCI总线存储器地址可访问该存储器1070。主机系统2 1020可使用存储器地址转换和保护表(未示出),以将由主机系统1 1010看到的PCIe存储器地址映射到主机系统2的实际存储器地址。
可针对根联合体RC1 1012和RC2 1022来初始化主机系统存储器1070和1080的类似部分。例如,在主机系统1 1010中,由主机系统1的处理器,通过用于主机系统1的存储器1070的主机系统1的实际存储器地址可访问RC1 1012。RC1 1012在主机系统2的存储器空间中具有PCIe孔径,其中经由直接存储器访问(DMA)I/O,通过主机系统1的PCI总线存储器地址可访问该主机系统2的存储器空间。主机系统1 1010可使用存储器地址转换和保护表(未示出),以将由主机系统2 1020看到的PCIe存储器地址映射成为主机系统1的实际存储器地址。
类似地,在主机系统2 1020中,主机系统2的处理器通过用于存储器1080的主机系统2的实际存储器地址可访问RC2 1022。RC21022具有在主机系统1的存储器1070中的PCIe孔径,其中作为DMAI/O,通过主机系统2的PCI总线存储器地址可访问该主机系统1的存储器1070。主机系统2 1020可使用存储器地址转换和保护表(未示出),以将由主机系统1 1010看到的PCIe存储器地址映射成为主机系统2的实际存储器地址。
这样,说明性的实施方式的机制提供了对在主机系统中的存储器空间的初始化,使得在多个主机系统中,可由多于一个的根联合体来访问端点。然后,可由根联合体利用分配给不同端点的存储器空间的部分,以向端点发送请求和完成消息,和从端点发送请求和完成消息。
图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存储器地址映射成为用于第一主机系统的存储器空间1370的实际存储器地址。
类似地,通过两个主机系统存储器空间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包含数据段的列表,其中每个数据段包括都位于第二主机系统的PCIe存储器总线地址空间中的基地址和界限地址,并且还通过地址转换和保护表(ATPT)将该基地址和界限地址映射到在第一主机系统的存储器空间1370中的实际存储器地址。
然后,第一主机系统1310将所发送的WQE的数量写入到用于门铃结构1375的端点EP2的PCIe地址之中。通过ATPT,将用于此门铃结构的地址映射到第一主机系统的PCIe存储器总线地址空间,并且还映射到在第二主机系统的存储器空间1380中的实际存储器地址。当门铃写操作完成时,第二主机系统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)。然后,该操作终止。
图16是概括了根据一个示例性实施方式的用于从第二主机系统的端点向第一主机系统的根联合体传送CQE的示例性操作的示例性流程图。该操作开始于端点完成与向端点提交的一个或多个WQE相关联的处理工作(步骤1610)。然后,该端点对与主机系统相关联的根联合体执行一个或多个PCIe DMA操作,以向根联合体发送一个或多个CQE,其中从该主机系统接收该一个或多个WQE(步骤1620)。将DMA操作的结果放入第一主机系统的存储器(步骤1630)。然后,该操作终止。
这样,可使用说明性的实施方式的共享存储器,以提供队列结构,其中通过该队列结构,可在不同主机系统上的根联合体和端点之间交换工作请求和完成消息。这样,根联合体可以同与提供了该根联合体的主机系统不同的主机系统上的端点进行通信,并且反之亦然。
根据在此示例性的一种实施方式,可建立一种面向事务的协议,用于使用说明性的实施方式的共享存储器,以在相同或不同的主机系统的根联合体和端点之间通信。如同下文将要描述的,面向事务的协议描述了将由例如根联合体或端点的各种单元执行的一系列事务,以推送或拉回数据。
返回图13,上文关于向端点提供WQE并向根联合体返回CQE的方式的描述是拉回-拉回-推送协议的一个例子。即,响应于第一主机系统1310对门铃结构1375的写入,第二主机系统1320的端点EP21324使用PCIe DMA操作从第一主机系统的共享存储器1370拉回WQE。这些WQE提供了用于将要执行的操作的“命令”。基于在WQE中存储的段信息,第二主机系统1320的端点EP2 1324从在第一主机系统的共享存储器1370的工作队列结构1374中拉回对应的数据。一旦完成了对应于WQE的工作,则第二主机系统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可包括用以指示事件已经发生的存储器中的地址。例如主机系统1810的发送者主机系统通过在接收者主机系统1820的存储器1870中的PCIe孔径1872来写入门铃结构1878,其中PCIe孔径1872可由发送者主机系统的根联合体RC1 1812访问,对应于例如端点EP2 1824的连接端点。
如前所述,在为实现在相同或不同的主机系统上的多个根联合体之间共享端点而初始化主机系统的共享存储器期间,针对每个所发现的根联合体和端点来读出重要产品数据(VPD)信息,以便生成虚拟PCI树数据结构。该VPD信息可包括指示特定的根联合体或端点是否支持PCIe上的套接字的字段。根据一种说明性的实施方式,可使用此信息以标识可以与哪些端点建立套接字用于基于套接字的通信。
这样,在初始化期间,第一主机系统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表面的套接字初始化请求,或拉回端点EP2 1824的门铃结构1878,以确定套接字初始化请求是否已经到达。套接字初始化请求包含到工作队列1850中的基、界限和起始偏移量,这将用于套接字的第一主机系统的那一半。
第一主机系统1810(即,发送主机系统)可在其工作队列1850中生成套接字初始化请求,并可以写入EP2 1824的门铃结构1878,指示套接字初始化请求WQE可用。一旦在门铃结构1878中取回数据时,第二主机系统的端点EP2 1824可执行PCIe DMA操作,以使用根联合体RC1的PCIe总线存储器地址来从第一主机系统的工作队列1850中取回套接字初始化请求,端点EP2 1824可访问该根联合体RC1的PCIe总线存储器地址。
然后,第二主机系统1820可解析该套接字初始化请求,并且以应用或操作系统特定的方式确定接受还是拒绝该套接字初始化请求。如果第二主机系统1820拒绝套接字初始化请求,则第二主机系统1820向第一主机系统的根联合体RC1 1812发送非连接响应PCIeDMA,并且如果需要,则中断第一主机系统的根联合体RC1 1812。
如果第二主机系统1820接受套接字初始化请求,则端点EP21824对第一主机系统的根联合体RC1 1812执行PCIe DMA操作,指示套接字参数的后一半,即,基、界限和在工作队列1860内的起始偏移量,用于套接字的第二主机系统的那一半。
一旦已经以上述方式初始化了套接字,可按照拉回事务或推送事务两种方式之一,使用建立的套接字来执行发送/接收操作。利用拉回事务,第一主机系统1810的根联合体RC1 1812通过向其工作队列1850写入WQE而执行发送操作,并然后写入与端点EP2 1824相关联的门铃结构1878,其中通过根联合体RC1 1812 PCIe总线存储器地址空间可访问该门铃结构1878。当门铃写入操作完成时,第二主机系统或者1820轮询或者收到中断然后轮询,以通过第二主机系统的实际存储器地址空间来取回门铃结构1878。端点EP2 1824然后对根联合体RC1 1812执行PCIe DMA操作,以取回与发送操作相关联的WQE。PCIe DMA操作使用第一主机系统的PCIe存储器总线地址空间,并将结果放入第二主机系统上的存储器1880,其中通过第二主机系统的实际存储器地址空间可访问该存储器1880。第二主机系统1820然后取回在WQE中描述的并且与发送操作相关联的数据段。
当第二主机系统完成在WQE中的工作请求时,端点EP2 1824对根联合体RC1 1812执行PCIe DMA操作,以推送信令通知发送操作已经完成的CQE。该DMA操作使用第一主机系统的PCIe存储器总线地址空间,并将结果放入第一主机系统上的存储器1870,其中通过第一主机系统的实际存储器地址空间可访问该存储器1870。
对于推送事务,根联合体RC2 1822写入用于端点EP1 1814的门铃结构1888,指示已经可用的接收WQE的数量。当端点EP1 1814有数据要发送时,端点EP1 1814检查以确定端点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)。目标端点将PCIeDMA操作的结果放入在第二主机系统上的存储器(步骤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)。第二端点将PCIe DMA操作的结果放入在第一主机系统上的存储器(步骤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-PCIM 2100描述的特定的迁移场景,其中SR-PCIM访问该VF迁移能力位以确定特定的VF是否可迁移。基于来自SR-PCIM 2100的所述信息,SWI 2115可以通过管理控制台或实体解译并将此数据转换为对用户可用的VF迁移场景。这些迁移场景将高度依赖于所讨论的组件的设计。例如,为了迁移以太网适配器,OS可能必须对其进行解配置。如果OS没有提供这种功能性,则管理实用工具将无法描述这种场景。换言之,管理实用工具维护组件(系统镜像类型、硬件等)的知识,然后使用该知识来描述迁移场景。所述信息以及存储于VF的迁移能力位中的迁移能力信息标识哪些用于迁移的场景可供选择。
系统管理员启动该过程,以迁移所希望的VF 2120和相关联的应用2110。例如,诸如在图形用户界面显示中,管理软件(未示出)可将VF及其相关联的应用描述为实体,其中可在主机系统和PCIe架构上的可用资源之间迁移所述实体。管理软件可以存在于诸如从国际商业机器公司可获得的HMC的硬件管理控制台上、或者存在于设计为与固件(例如,软件中介或管理程序)交互并控制硬件资源的功能的系统运行软件的任何其他控制台或部分之中。
运行在主机系统上的软件中介(SWI)2115可向SI-A 2105发送请求,以请求完成所有的未完成的请求或迁移VF2120的灵活性,其中软件中介(SWI)2115是任意类型的固件或软件代码,其使用在管理应用和硬件之间以创建允许额外的功能性的抽象层。例如,SI-A2105和SWI 2115可以具有应用程序接口(API),SI-A 2105和SWI2115通过应用程序接口(API)进行通信。SI-A 2105可以通过暂停或停止使用VF 2120的任何应用2110来响应该请求。SI-A 2105可以确保完成对VF 2120的未完成的所有请求。本质上,SI-A 2105检查以确信所有的队列都处于表示没有未决的请求以及已经完成了所有事务的状态中。例如,完全此任务的一种方式是检查所有的WQE都具有对应的CQE。
然后,SI-A 2105可以对其VF 2120的逻辑表示进行解配置,有效地停止SI-A对VF 2120的使用。这是可以由例如用于在SI-A 2105上的VF 2120的设备驱动器(未示出)执行的操作。然后SI-A 2105可以向SWI 2115通知所有请求已经完成以及可以移除VF 2120。SWI2115接着可以从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。例如,SWI 2115更新在固件中的SI-A的设备树,以包括例如VF 2145的新设备,该VF 2145可以呈现为例如新的端点。该新端点或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。SWI2215接着可以从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 223 5不同的端点上,其中VF2220(现在是VF 2245)最初是与PF 2235相关联的。然后,SWI 2215使VF 2245可用于SI-A2205进行配置,并且指示SI-A 2205配置VF2245。例如,SWI 2215更新在固件中的SI-A的设备树,以包括新设备。SI-A 2205可以使用例如设备驱动器来配置VF 2245,设备驱动器的类型将依赖于所讨论的设备或功能的特定属性。相关联的应用2210现在可以使用VF 2245。SWI现在可以指示SI-A 2205启动完成迁移的相关联的应用2210。结果,如由虚线所示,应用2210和VF2220依然是相关联的,但已经将VF 2220从其与PF 223 5相关联迁移到现在的与在不同端点上的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。目标PF2340可以位于相同或不同的端点上。SWI 2315使得VF 2345可用于例如SI-B 2350的目标SI进行配置,并且指示目标SI 2350配置VF2345。目标SI 2350有效地配置VF 2345,使其可为相关联(现在与SI-B 2350相关联)的应用2310所用。SWI 2315通知目标SI 2350启动相关联的应用,以使用在新的VF 2345上的资源。
图24是概括了根据一个说明性的实施方式的用于迁移虚拟功能的示例性操作的流程图。如图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适配器的端点的机制。而且,说明性的实施方式的机制支持使用基于队列的通信、基于推送-拉回协议的通信和基于套接字的通信的能力。另外,说明性的实施方式提供了用于从在相同或不同端点上一个物理功能向另一个物理功能以及从一个系统镜像向另一个系统镜像迁移虚拟功能及其相关联的应用实例的机制。
除了这些机制,说明性的实施方式进一步提供了用于执行将新组件热插入到运行中的多根PCIe架构或从运行中的多根PCIe架构中热拔出的功能性。这些机制允许根联合体例如热插入到运行中的PCIe架构或从运行中的PCIe架构中热拔出。例如,可将刀片热插入到刀片机箱,而其相关联的根联合体可以实时地结合到在现有系统中的PCIe架构之中。
这种热插/拔能力允许PCIe架构扩展并且在新合并的根联合体之间本地地共享虚拟功能。因此,PCIe架构可扩展,而无需为此停下系统。PCI-SIG I/O虚拟化标准没有提供这种用于CPIe架构的动态扩展的能力或标准。
利用所说明性的实施方式机制,假设存在具有一个或多个PCI根联合体和支持多根感知(MRA)的交换机的现有主机系统。例如,主机系统可以具有两个根联合体RC1和RC2,其中根联合体RC 1和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。现有根联合体RC12512和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。例如,该根联合体RC N 2516可以与刀片相关联,并且主机系统2510可以是具有机箱的刀片服务器,其中可以插入与RC N 2516相关联的刀片。可以使用可提供RC N 2516的其他类型的设备,而不脱离说明性的实施方式的精神和范围。
对于说明性的实施方式,存在与每个交换机端口相关联的两种类型的标准PCI热插入控制器,其中所述交换机端口允许组件的热插/拔。由MR-PCIM 2562使用这些热插入控制器的其中之一,用于热插/拔操作的物理方面,并被称为“物理热插入”控制器。对于每个可热插入的端口,存在这些物理热插入控制器中的一个。
另外,提供“虚拟热插入”控制器用于根联合体,其中该根联合体使用虚拟热插入控制器,以控制在交换机端口下的它们通往共享组件的逻辑连接。对于由交换机端口所支持的每个虚拟平面,存在一个虚拟热插入控制器。
对于说明性的实施方式,响应于对新RC N 2516的添加,在与RC N 2516相关联的交换机2532端口处,物理热插入控制器向MR-PCIM 2562发送“存在检测改变”中断消息,以通知MR-PCIM2562新组件已被加入PCIe架构。此中断消息由PCI规范所定义,但此处的使用是为了将中断引导至MR-PCIM 2562而并非引导至没有运行MR-PCIM 2562的根联合体。可选地,作为新组件添加的另一种通知形式,在插入前,系统管理员还可以通过通往MR-PCIM 2562的管理接口(未示出)来通知MR-PCIM 2562。
MR-PCIM 2562然后可以通过执行多个操作来处理“存在检测改变”中断,以初始化在现有PCIe架构2530中的新组件,例如,根联合体RC N 2516。例如,MR-PCIM 2562利用关于新添加的组件的信息来更新其架构配置数据结构2566。在更新架构配置数据结构2566中,MR-PCIM 2562执行PCI配置空间操作,以查询并确定该新添加组件的特征,例如,其是否为端点、根联合体、交换机等,其是何种类型的端点、根联合体、交换机等,供应商名称、零件编号、序列号等。
除了此自动查询,当所添加的组件为根联合体时,该系统管理员也可以例如通过通往MR-PCIM 2562的管理接口(未示出),来告知MR-PCIM 2562将哪些组件配置给该新添加的根联合体。例如,MR-PCIM 2562需要知到系统管理员希望将哪些端点分配给新RC N2516,使得可以将那些端点添加至正确的虚拟平面,从而该新RC N2516能获得对它们的访问。通过MR-PCIM 2562访问MRA交换机2532的PCI配置空间中的PCI多根配置结构并且如果该端点为MRA端点,除了在MRA交换机2532之外还访问在该端点中的PCI多根配置结构,来执行这种向虚拟平面的端点分配。
在描述的例子中,所添加的新组件为根联合体RC N 2516,例如提供RC N 2516的刀片。然而,该组件可以是多个不同类型的组件中的任意一个,并且因此,MR-PCIM 2562可以基于从所添加的组件收集的特征信息来确定添加组件的类型。基于确定的添加组件的类型,MR-PCIM 2562可以执行各种操作,以动态地向PCIe架构2530添加组件,使得其可以使用于PCIe架构2530的通信和操作。
因为在所描述的例子中,添加组件为新根联合体RC N 2516,所以MR-PCIM 2562将新根联合体RC N 2516与虚拟平面2515相关联,并且然后将系统管理员已经指定给新根联合体RC N 2516的端点相关联,如上文的详细描述的那样。按照这种方式,新组件可以动态添加至PCIe架构。
随着新根联合体RC N 2516已由MR-PCIM 2562添加至PCIe架构2530,通过在架构配置数据结构2566中包括对于新根联合体RC N2516的特征信息,将该组件的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配置信息。当端点为正在添加至运行中的I/O通信架构2530的组件时,一旦系统管理员已通过MR-PCIM的管理接口向该期望的根联合体添加了该组件,则在如上文所述向期望的虚拟平面配置了该端点之后,MR-PCIM 2562信令通知该根联合体已经通过上文所涉及的虚拟热插入控制器添加了该端点。作为结果,该根联合体从该虚拟热插入控制器接收中断,以及对将配置并开始使用该新端点的软件加以初始化。因此,可以添加端点,而无需停止当前系统操作。
另外,说明性的实施方式的机制还提供了用于从PCIe架构2530动态移除组件的功能性。类似于“添加”事件,系统管理员可以经由接口、自动检测机制等向MR-PCIM 2562通知“移除”事件。对于“移除”事件,该事件对MR-PCIM 2562标识:在由MR-PCIM 2562管理的虚拟层级中的哪个虚拟树数据分支上,该移除操作(即,组件的热插入移除)已发生或将要发生。
在移除操作中,由架构配置数据结构2566标识待移除的组件。如上文所述,此架构配置数据结构2566标识了I/O组件的树数据结构。该移除操作指向在该树数据结构中待移除的组件,并且该组件以下的所有也都将被移除。例如,通过经由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)。如上文所述,此事件可以标识组件所添加到的交换机和交换机端口,并可以例如响应于组件添加的自动检测或响应于系统管理员命令输入来产生该事件。该“添加”事件可以作为“存在检测改变”中断的部分而接收,其中“呈现检测改变”中断例如由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;以及传输类型介质,诸如数字和模拟通信链路、使用例如射频以及光波传输的传输形式的有线或无线链路。计算机可读介质可以采用编码格式的形式,其中针对在特定数据处理系统中的实际使用,对所述编码格式进行解码。
为了示例和说明的目的,提供本发明的说明,并且本发明的说明并非旨在穷尽性的或者将本发明限制于所公开的形式。许多修改和变型对于本领域技术人员将是明显的。选择和说明这些实施方式,以便最好地解释本发明的原理和实际应用,并使得本领域的其他技术人员理解本发明,具有各种修改的各种实施方式适用于所预期的特定使用。
Claims (23)
1.一种在数据处理系统中用于针对在所述数据处理系统的多个根联合体之间的通信而初始化共享存储器的方法,该方法包括:
生成在所述数据处理系统中的通信架构的组件的第一虚拟层级,所述第一虚拟层级与所述数据处理系统的第一根联合体相关联;
生成在所述数据处理系统中的所述通信架构的组件的第二虚拟层级,所述第二虚拟层级与所述数据处理系统的第二根联合体相关联;
将在与所述第一根联合体相关联的第一共享存储器中的地址范围分配给在所述第一虚拟层级中的每个端点;
将在与所述第二根联合体相关联的第二共享存储器中的地址范围分配给在所述第二虚拟层级中的每个端点;以及
利用在所述第一和第二共享存储器中的分配的地址范围,来在与所述第一根联合体相关联的第一主机系统和与所述第二根联合体相关联的第二主机系统之间执行通信。
2.根据权利要求1所述的方法,其中生成所述第一虚拟层级和生成所述第二虚拟层级包括:
遍历所述通信架构中的链路,以发现所述通信架构的所述组件;
存储对于所述通信架构的所述组件的标识数据;以及
基于所述存储的标识数据来生成所述第一和第二虚拟层级。
3.根据权利要求2所述的方法,其中基于所述存储的标识数据来生成所述第一和第二虚拟层级,包括:
将对于每个端点组件的所述标识数据与对于在遍历所述通信架构中的所述链路期间发现的每个根联合体组件的标识数据进行比较;
如果对于端点组件的所述标识数据与对于根联合体组件的标识数据相匹配,则设置与所述端点组件相关联的共同驻留字段值;以及
基于与所述通信架构的端点组件相关联的共同驻留字段值来生成所述第一和第二虚拟层级。
4.根据权利要求1所述的方法,其中所述通信架构是外围组件互连Express(PCIe)架构,以及所述端点是PCIe适配器。
5.根据权利要求1所述的方法,其中由与相应的第一和第二根联合体相关联的单根外围组件互连管理器(SR-PCIM)来执行生成和分配操作。
6.根据权利要求5所述的方法,其中所述SR-PCIM为对应的虚拟层级的每个端点,在所述端点所属的PCI存储器地址空间内,分配基地址和界限,并且其中所述SR-PCIM将所述基地址和界限写入所述端点的基地址寄存器(BAR)。
7.根据权利要求5所述的方法,其中所述SR-PCIM仅基于与它们各自的根联合体相关联的所述虚拟层级,来分别配置与它们各自的根联合体相关联的共享存储器,并且其中所述SR-PCIM基于由多根外围组件互连管理器(MR-PCIM)收集的信息来生成所述虚拟层级,所述多根外围组件互连管理器遍历所述通信架构的所有所述链路并且标识在所述通信架构中存在的端点和根联合体之间的关联。
8.根据权利要求1所述的方法,其中所述数据处理系统是刀片服务器,以及其中所述主机系统是所述刀片服务器的刀片。
9.根据权利要求1所述的方法,其中所述通信架构是包括一个或多个根感知(MRA)交换机的多根感知通信架构。
10.根据权利要求1所述的方法,其中至少一个端点具有在所述第一共享存储器和所述第二共享存储器二者中的相关联的地址范围,使得在所述第一根联合体和所述第二根联合体之间共享所述至少一个端点。
11.根据权利要求1所述的方法,其中利用在所述第一和第二共享存储器中的分配的地址范围来在所述第一根联合体和所述第二根联合体之间执行通信包括:利用地址转换和保护表数据结构,来将与所述第一或第二共享存储器之一相关联的地址映射到与所述第一或第二共享存储器的另一个相关联的地址。
12.根据权利要求1所述的方法,进一步包括:
将在与所述第一根联合体相关联的所述第一共享存储器中的地址范围分配给在所述第一虚拟层级中的每个根联合体;以及
将在与所述第二根联合体相关联的所述第二共享存储器中的地址范围分配给在所述第二虚拟层级中的每个根联合体,其中在所述第一根联合体和所述第二根联合体之间直接地执行在所述第一主机系统和所述第二主机系统之间的通信。
13.根据权利要求1所述的方法,其中在所述第一主机系统和所述第二主机系统之一的根联合体与所述第一主机系统和所述第二主机系统中的另一个的端点之间执行在所述第一主机系统和所述第二主机系统之间的通信。
14.一种计算机程序产品,包括具有计算机可读程序的计算机可用介质,其中当在数据处理系统中执行所述计算机可读程序时,引起所述数据处理系统执行在权利要求1-13任何一个中的方法步骤。
15.一种数据处理系统,包括:
第一主机系统,所述第一主机系统包括第一根联合体;
第二主机系统,所述第二主机系统包括第二根联合体;以及
将所述第一主机系统耦合到所述第二主机系统的通信架构,其中:
所述第一主机系统生成所述通信架构的组件的第一虚拟层级,所述第一虚拟层级与所述第一根联合体相关联;
所述第二主机系统生成所述通信架构的组件的第二虚拟层级,所述第二虚拟层级与所述第二根联合体相关联;
所述第一主机系统将在与所述第一根联合体相关联的第一共享存储器中的地址范围分配给在所述第一虚拟层级中的每个端点;
所述第二主机系统将在与所述第二根联合体相关联的第二共享存储器中的地址范围分配给在所述第二虚拟层级中的每个端点;以及
利用在所述第一和第二共享存储器中的分配的地址范围,来在所述第一主机系统和第二主机系统之间执行通信。
16.根据权利要求15所述的数据处理系统,其中通过以下动作,所述第一主机系统生成所述第一虚拟层级以及所述第二主机系统生成所述第二虚拟层级:
遍历在所述通信架构中的链路,以发现所述通信架构的所述组件;
存储对于所述通信架构的所述组件的标识数据;以及
基于所述存储的标识数据,来生成所述第一和第二虚拟层级。
17.根据权利要求16所述的数据处理系统,其中通过以下动作,基于所述存储的标识数据,所述第一主机系统生成所述第一虚拟层级以及所述第二主机系统生成所述第二虚拟层级:
将对于每个端点组件的所述标识数据与对于在遍历所述通信架构中的所述链路期间发现的每个根联合体组件的标识数据进行比较;
如果对于所述端点组件的所述标识数据与对于根联合体组件的标识数据相匹配,则设置与端点组件相关联的共同驻留字段值;以及
基于与所述通信架构的端点组件相关联的共同驻留字段值来生成所述第一和第二虚拟层级。
18.根据权利要求16所述的数据处理系统,其中所述通信架构是外围组件互连Express(PCIe)架构,以及所述端点是PCIe适配器。
19.根据权利要求16所述的数据处理系统,其中第一主机系统和第二主机系统使用与相应的第一和第二根联合体相关联的单根外围组件互连管理器(SR-PCIM)来执行生成和分配操作。
20.根据权利要求19所述的数据处理系统,其中所述SR-PCIM为对应的虚拟层级的每个端点,在所述端点所属的PCI存储器地址空间内,分配基地址和界限,以及其中所述SR-PCIM将所述基地址和界限写入所述端点的基地址寄存器(BAR)。
21.根据权利要求19中所述的数据处理系统,其中所述SR-PCIM仅基于与它们各自的根联合体相关联的所述虚拟层级,来分别配置与它们各自的根联合体相关联的共享存储器;以及其中所述SR-PCIM基于由多根外围组件互连管理器(MR-PCIM)收集的信息来生成所述虚拟层级,所述多根外围组件互连管理器遍历所述通信架构的所有所述链路并且标识在所述通信架构中存在的端点和根联合体之间的关联。
22.根据权利要求15所述的数据处理系统,其中所述数据处理系统是刀片服务器,以及其中所述主机服务器是所述刀片服务器的刀片。
23.根据权利要求15所述的数据处理系统,其中至少一个端点具有在所述第一共享存储器和所述第二共享存储器二者中的相关联的地址范围,使得在所述第一根联合体和所述第二根联合体之间共享所述至少一个端点。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/612,522 | 2006-12-19 | ||
US11/612,522 US8271604B2 (en) | 2006-12-19 | 2006-12-19 | Initializing shared memories for sharing endpoints across a plurality of root complexes |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101206634A true CN101206634A (zh) | 2008-06-25 |
CN101206634B CN101206634B (zh) | 2010-06-09 |
Family
ID=39528995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101650577A Expired - Fee Related CN101206634B (zh) | 2006-12-19 | 2007-11-06 | 用于初始化共享存储器的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8271604B2 (zh) |
JP (1) | JP5763873B2 (zh) |
CN (1) | CN101206634B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019949A (zh) * | 2012-12-27 | 2013-04-03 | 华为技术有限公司 | 一种写合并属性内存空间的分配方法及装置 |
WO2015070818A1 (en) * | 2013-11-18 | 2015-05-21 | Huawei Technologies Co., Ltd. | Method and apparatus for delivering msi-x interrupts through non-transparent bridges to computing resources in pci-express clusters |
CN105359123A (zh) * | 2013-06-12 | 2016-02-24 | 阿卡诺英国有限公司 | 协作服务器 |
CN106055516A (zh) * | 2015-04-07 | 2016-10-26 | 三星电子株式会社 | 片上系统和包括其的电子装置以及将存储器初始化的方法 |
CN116303154A (zh) * | 2023-05-19 | 2023-06-23 | 珠海星云智联科技有限公司 | 用于数据处理单元的基地址寄存器资源分配方法及介质 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8189603B2 (en) | 2005-10-04 | 2012-05-29 | Mammen Thomas | PCI express to PCI express based low latency interconnect scheme for clustering systems |
US7979592B1 (en) * | 2007-02-09 | 2011-07-12 | Emulex Design And Manufacturing Corporation | Virtualization bridge device |
JP5440507B2 (ja) * | 2008-10-15 | 2014-03-12 | 日本電気株式会社 | マルチルートpciエクスプレススイッチ、その起動方法、及び、マルチルートpciマネージャプログラム |
US20100180067A1 (en) * | 2009-01-14 | 2010-07-15 | International Business Machines Corporation | System for emulating and expanding a spi configuration rom for io enclosure |
US20110103391A1 (en) * | 2009-10-30 | 2011-05-05 | Smooth-Stone, Inc. C/O Barry Evans | System and method for high-performance, low-power data center interconnect fabric |
US9146863B2 (en) * | 2010-12-08 | 2015-09-29 | International Business Machines Corporation | Address translation table to enable access to virtualized functions |
US8972611B2 (en) * | 2011-08-11 | 2015-03-03 | Cisco Technology, Inc. | Multi-server consolidated input/output (IO) device |
CN102388357B (zh) | 2011-09-23 | 2013-08-28 | 华为技术有限公司 | 访问存储设备的方法及系统 |
US10380041B2 (en) | 2012-08-23 | 2019-08-13 | Dell Products, Lp | Fabric independent PCIe cluster manager |
US9086919B2 (en) | 2012-08-23 | 2015-07-21 | Dell Products, Lp | Fabric independent PCIe cluster manager |
US9189441B2 (en) * | 2012-10-19 | 2015-11-17 | Intel Corporation | Dual casting PCIE inbound writes to memory and peer devices |
US9129071B2 (en) * | 2012-10-24 | 2015-09-08 | Texas Instruments Incorporated | Coherence controller slot architecture allowing zero latency write commit |
KR101397969B1 (ko) * | 2012-10-26 | 2014-06-11 | 주식회사 셈웨어 | Pci 익스프레스 기반 입/출력 카드 시스템 및 이 시스템의 입/출력 카드 인식 방법 |
US9170976B2 (en) * | 2013-01-03 | 2015-10-27 | International Business Machines Corporation | Network efficiency and power savings |
US9135200B2 (en) | 2013-06-28 | 2015-09-15 | Futurewei Technologies, Inc. | System and method for extended peripheral component interconnect express fabrics |
US9612973B2 (en) * | 2013-11-09 | 2017-04-04 | Microsoft Technology Licensing, Llc | Using shared virtual memory resources for performing memory-mapping |
JP6409399B2 (ja) | 2014-08-11 | 2018-10-24 | 富士通株式会社 | 電子機器、通信制御回路および通信制御方法 |
US10162786B2 (en) * | 2014-12-01 | 2018-12-25 | SK Hynix Inc. | Storage node based on PCI express interface |
US9860841B2 (en) * | 2015-08-20 | 2018-01-02 | Apple Inc. | Communications fabric with split paths for control and data packets |
US10628192B2 (en) * | 2015-12-24 | 2020-04-21 | Intel Corporation | Scalable techniques for data transfer between virtual machines |
US10445280B2 (en) * | 2016-10-12 | 2019-10-15 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | PCIe switch for aggregating a large number of endpoint devices |
US11030102B2 (en) | 2018-09-07 | 2021-06-08 | Apple Inc. | Reducing memory cache control command hops on a fabric |
US10599598B1 (en) * | 2018-09-18 | 2020-03-24 | Hewlett Packard Enterprise Development Lp | PCIe write request acknowledgment |
JP6574917B1 (ja) * | 2019-05-20 | 2019-09-11 | 富士通クライアントコンピューティング株式会社 | 情報処理システム、及び中継装置 |
CN112000594B (zh) * | 2020-07-31 | 2022-04-19 | 瑞芯微电子股份有限公司 | 一种PCIe设备管理方法及其运行系统 |
CN114153771A (zh) * | 2020-08-18 | 2022-03-08 | 许继集团有限公司 | 一种pcie总线系统及ep设备获取总线上其它设备信息的方法 |
KR20240127074A (ko) * | 2023-02-15 | 2024-08-22 | 김창욱 | 인터커넥트 기반의 컴퓨팅 장치 연결 및 컴퓨팅 장치 사상 방법 |
Family Cites Families (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL8501143A (nl) | 1985-04-19 | 1986-11-17 | Philips Nv | Kommunikatiesysteem voorzien van een eerst-in-eerst-uit-buffer. |
US5754677A (en) * | 1994-10-25 | 1998-05-19 | Fuji Machine Mfg. Co., Ltd. | Image processing apparatus |
US5784576A (en) * | 1996-10-31 | 1998-07-21 | International Business Machines Corp. | Method and apparatus for adding and removing components of a data processing system without powering down |
DE69734968T2 (de) * | 1996-12-20 | 2006-07-27 | International Business Machines Corp. | Vermittlungssystem mit verteilten Elementen zur Verbindung mit Leitungsanpassern und mit Mehrfachübertragungsmöglichkeit |
US5875308A (en) * | 1997-06-18 | 1999-02-23 | International Business Machines Corporation | Peripheral component interconnect (PCI) architecture having hot-plugging capability for a data-processing system |
US5930496A (en) * | 1997-09-26 | 1999-07-27 | Compaq Computer Corporation | Computer expansion slot and associated logic for automatically detecting compatibility with an expansion card |
US6070207A (en) * | 1998-01-26 | 2000-05-30 | Intel Corporation | Hot plug connected I/O bus for computer system |
US6185642B1 (en) * | 1998-07-15 | 2001-02-06 | International Business Machines Corporation | Bus for high frequency operation with backward compatibility and hot-plug ability |
US6189058B1 (en) * | 1999-02-12 | 2001-02-13 | Compaq Computer Corporation | Crossbar connect switch mechanism for hot plugability |
US6289405B1 (en) * | 1999-03-10 | 2001-09-11 | International Business Machines Corporation | Addition of slot, backplane, chassis and device parametric properties to vital product data (VPD) in a computer system |
JP2001134546A (ja) * | 1999-11-05 | 2001-05-18 | Nec Corp | マルチプロセッサシステムの障害処理方法 |
US6505263B1 (en) * | 2000-01-25 | 2003-01-07 | Dell U.S.A. L.P. | Bus controller operating code in system memory |
US7103888B1 (en) * | 2000-06-06 | 2006-09-05 | Intel Corporation | Split model driver using a push-push messaging protocol over a channel based network |
US6978335B2 (en) * | 2000-06-30 | 2005-12-20 | 02Micro International Limited | Smart card virtual hub |
US6864886B1 (en) * | 2000-08-10 | 2005-03-08 | Sportvision, Inc. | Enhancing video using a virtual surface |
US6684281B1 (en) * | 2000-11-02 | 2004-01-27 | Fujitsu Limited | Fast delivery of interrupt message over network |
US6779049B2 (en) * | 2000-12-14 | 2004-08-17 | International Business Machines Corporation | Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism |
US20020194407A1 (en) * | 2001-04-25 | 2002-12-19 | Kim Hyon T. | Maintaining fabric device configuration through dynamic reconfiguration |
US6826154B2 (en) * | 2001-05-24 | 2004-11-30 | 3Com Corporation | Method and apparatus for seamless mobility between different access technologies |
US7493438B2 (en) * | 2001-10-03 | 2009-02-17 | Intel Corporation | Apparatus and method for enumeration of processors during hot-plug of a compute node |
US20030065856A1 (en) * | 2001-10-03 | 2003-04-03 | Mellanox Technologies Ltd. | Network adapter with multiple event queues |
US6968414B2 (en) * | 2001-12-04 | 2005-11-22 | International Business Machines Corporation | Monitoring insertion/removal of server blades in a data processing system |
US7178050B2 (en) | 2002-02-22 | 2007-02-13 | Bea Systems, Inc. | System for highly available transaction recovery for transaction processing systems |
US8597116B2 (en) * | 2002-03-12 | 2013-12-03 | Igt | Virtual player tracking and related services |
US6725284B2 (en) * | 2002-04-25 | 2004-04-20 | International Business Machines Corporation | Logical partition hosted virtual input/output using shared translation control entries |
US6944847B2 (en) * | 2002-05-02 | 2005-09-13 | International Business Machines Corporation | Virtualization of input/output devices in a logically partitioned data processing system |
US20040019729A1 (en) * | 2002-07-29 | 2004-01-29 | Kelley Richard A. | Buffer management and transaction control for transition bridges |
US7103743B2 (en) * | 2002-08-23 | 2006-09-05 | Intel Corporation | System and method of accessing vital product data |
US7519650B2 (en) * | 2002-09-05 | 2009-04-14 | International Business Machines Corporation | Split socket send queue apparatus and method with efficient queue flow control, retransmission and sack support mechanisms |
US20040059807A1 (en) * | 2002-09-16 | 2004-03-25 | Finisar Corporation | Network analysis topology detection |
US6920521B2 (en) | 2002-10-10 | 2005-07-19 | International Business Machines Corporation | Method and system of managing virtualized physical memory in a data processing system |
US6954813B2 (en) * | 2002-12-18 | 2005-10-11 | International Business Machines Corporation | Method, system and program product for facilitating hotplugging of multiple adapters into a system bus and transparently optimizing configuration of the system bus |
US20040215569A1 (en) * | 2003-04-24 | 2004-10-28 | International Business Machines Corporation | Method to ensure a unique machine serial number |
US7028125B2 (en) * | 2003-08-04 | 2006-04-11 | Inventec Corporation | Hot-pluggable peripheral input device coupling system |
TWM245481U (en) * | 2003-10-14 | 2004-10-01 | Wistron Corp | Extendable computer system |
JP2005122640A (ja) * | 2003-10-20 | 2005-05-12 | Hitachi Ltd | サーバシステム及びi/oスロット共有方法。 |
US8374175B2 (en) * | 2004-04-27 | 2013-02-12 | Hewlett-Packard Development Company, L.P. | System and method for remote direct memory access over a network switch fabric |
US7058738B2 (en) | 2004-04-28 | 2006-06-06 | Microsoft Corporation | Configurable PCI express switch which allows multiple CPUs to be connected to multiple I/O devices |
US9264384B1 (en) * | 2004-07-22 | 2016-02-16 | Oracle International Corporation | Resource virtualization mechanism including virtual host bus adapters |
US7133958B1 (en) * | 2004-07-23 | 2006-11-07 | Atheros Communications, Inc. | Multiple personality I/O bus |
US7650275B2 (en) * | 2005-01-20 | 2010-01-19 | Hewlett-Packard Development Company, L.P. | Virtualization of a parition based on addresses of an I/O adapter within an external emulation unit |
US7565463B2 (en) * | 2005-04-22 | 2009-07-21 | Sun Microsystems, Inc. | Scalable routing and addressing |
US7478178B2 (en) * | 2005-04-22 | 2009-01-13 | Sun Microsystems, Inc. | Virtualization for device sharing |
US7293129B2 (en) * | 2005-04-22 | 2007-11-06 | Sun Microsystems, Inc. | Flexible routing and addressing |
US7225287B2 (en) * | 2005-06-01 | 2007-05-29 | Microsoft Corporation | Scalable DMA remapping on a computer bus |
US7395367B2 (en) * | 2005-10-27 | 2008-07-01 | International Business Machines Corporation | Method using a master node to control I/O fabric configuration in a multi-host environment |
US7793010B2 (en) * | 2005-11-22 | 2010-09-07 | Lsi Corporation | Bus system with multiple modes of operation |
EP1977635A2 (en) * | 2006-01-13 | 2008-10-08 | Sun Microsystems, Inc. | Modular blade server |
US7743197B2 (en) * | 2006-05-11 | 2010-06-22 | Emulex Design & Manufacturing Corporation | System and method for virtualizing PCIe devices |
US7308523B1 (en) * | 2006-04-10 | 2007-12-11 | Pericom Semiconductor Corp. | Flow-splitting and buffering PCI express switch to reduce head-of-line blocking |
US20080005415A1 (en) * | 2006-06-06 | 2008-01-03 | Lopez Fernando A | Disabling a Universal Serial Bus Port |
US7457900B2 (en) * | 2006-06-20 | 2008-11-25 | Intel Corporation | Method for discovering and partitioning PCI devices |
US7836352B2 (en) * | 2006-06-30 | 2010-11-16 | Intel Corporation | Method and apparatus for improving high availability in a PCI express link through predictive failure analysis |
US7487284B2 (en) * | 2006-07-28 | 2009-02-03 | Intel Corporation | Transaction flow and ordering for a packet processing engine, located within an input-output hub |
US20080034147A1 (en) * | 2006-08-01 | 2008-02-07 | Robert Stubbs | Method and system for transferring packets between devices connected to a PCI-Express bus |
US20080040463A1 (en) * | 2006-08-08 | 2008-02-14 | International Business Machines Corporation | Communication System for Multiple Chassis Computer Systems |
US7823020B2 (en) * | 2006-08-30 | 2010-10-26 | International Business Machines Corporation | System and method for applying a destructive firmware update in a non-destructive manner |
CN101715575A (zh) * | 2006-12-06 | 2010-05-26 | 弗森多系统公司(dba弗森-艾奥) | 采用数据管道管理数据的装置、系统和方法 |
US7529860B2 (en) | 2006-12-19 | 2009-05-05 | International Business Machines Corporation | System and method for configuring an endpoint based on specified valid combinations of functions |
US7657663B2 (en) | 2006-12-19 | 2010-02-02 | International Business Machines Corporation | Migrating stateless virtual functions from one virtual plane to another |
-
2006
- 2006-12-19 US US11/612,522 patent/US8271604B2/en not_active Expired - Fee Related
-
2007
- 2007-11-06 CN CN2007101650577A patent/CN101206634B/zh not_active Expired - Fee Related
- 2007-12-17 JP JP2007324246A patent/JP5763873B2/ja not_active Expired - Fee Related
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014101422A1 (zh) * | 2012-12-27 | 2014-07-03 | 华为技术有限公司 | 一种写合并属性内存空间的分配方法及装置 |
EP2763045A4 (en) * | 2012-12-27 | 2014-12-03 | Huawei Tech Co Ltd | METHOD AND APPARATUS FOR AFFECTING MEMORY SPACE HAVING WRITING COMBINATION ATTRIBUTE |
CN103019949A (zh) * | 2012-12-27 | 2013-04-03 | 华为技术有限公司 | 一种写合并属性内存空间的分配方法及装置 |
CN103019949B (zh) * | 2012-12-27 | 2015-08-19 | 华为技术有限公司 | 一种写合并属性内存空间的分配方法及装置 |
US9274940B2 (en) | 2012-12-27 | 2016-03-01 | Huawei Technologies Co., Ltd. | Method and apparatus for allocating memory space with write-combine attribute |
CN105359123B (zh) * | 2013-06-12 | 2019-04-23 | 阿卡诺英国有限公司 | 协作服务器 |
CN105359123A (zh) * | 2013-06-12 | 2016-02-24 | 阿卡诺英国有限公司 | 协作服务器 |
WO2015070818A1 (en) * | 2013-11-18 | 2015-05-21 | Huawei Technologies Co., Ltd. | Method and apparatus for delivering msi-x interrupts through non-transparent bridges to computing resources in pci-express clusters |
US9465760B2 (en) | 2013-11-18 | 2016-10-11 | Futurewei Technologies, Inc. | Method and apparatus for delivering MSI-X interrupts through non-transparent bridges to computing resources in PCI-express clusters |
CN105993009B (zh) * | 2013-11-18 | 2019-04-19 | 华为技术有限公司 | 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置 |
CN105993009A (zh) * | 2013-11-18 | 2016-10-05 | 华为技术有限公司 | 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置 |
CN106055516A (zh) * | 2015-04-07 | 2016-10-26 | 三星电子株式会社 | 片上系统和包括其的电子装置以及将存储器初始化的方法 |
CN116303154A (zh) * | 2023-05-19 | 2023-06-23 | 珠海星云智联科技有限公司 | 用于数据处理单元的基地址寄存器资源分配方法及介质 |
CN116303154B (zh) * | 2023-05-19 | 2023-08-22 | 珠海星云智联科技有限公司 | 用于数据处理单元的基地址寄存器资源分配方法及介质 |
Also Published As
Publication number | Publication date |
---|---|
US20080147959A1 (en) | 2008-06-19 |
JP5763873B2 (ja) | 2015-08-12 |
CN101206634B (zh) | 2010-06-09 |
JP2008165776A (ja) | 2008-07-17 |
US8271604B2 (en) | 2012-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101206634B (zh) | 用于初始化共享存储器的系统和方法 | |
CN101206633B (zh) | 用事务协议和共享存储器在主机系统间通信的系统和方法 | |
CN101206632B (zh) | 用套接字连接和共享存储器在主机系统间通信的系统和方法 | |
CN100583046C (zh) | 用于单根无状态虚拟功能迁移的系统和方法 | |
CN101206629B (zh) | 在运行的PCIe架构中热插/拔新组件的系统和方法 | |
CN101206623B (zh) | 迁移虚拟端点的系统和方法 | |
CN101206621B (zh) | 迁移无状态虚拟功能的系统和方法 | |
CN101206622B (zh) | 基于指定的有效功能组合配置端点的系统和方法 | |
CN100565478C (zh) | 管理访问数据处理系统的存储器的地址转换的方法和装置 | |
CN101165663B (zh) | 使用高速缓存的地址转换与i/o适配器进行通信的装置、方法 | |
CN101165667B (zh) | 用于在数据处理系统中管理地址转换的方法和装置 | |
TWI570563B (zh) | 後置中斷架構 | |
CN101165664B (zh) | 用于在数据处理系统中管理地址转换的方法和装置 | |
CN101165666B (zh) | 在数据处理系统中建立地址转换的方法和装置 | |
CN103186481A (zh) | 信息处理设备及防止未授权访问的方法 | |
WO2008074639A1 (en) | System and method for communication between host systems using a queuing system and shared memories | |
CN104685479A (zh) | 客户虚拟机内的虚拟输入/输出存储器管理单元 | |
US11995019B2 (en) | PCIe device with changeable function types and operating method thereof | |
US11928070B2 (en) | PCIe device | |
CN115203101A (zh) | PCIe装置及其操作方法 | |
CN115203110A (zh) | PCIe功能及其操作方法 | |
US20230318606A1 (en) | Interface device and method of operating the same |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100609 Termination date: 20181106 |
|
CF01 | Termination of patent right due to non-payment of annual fee |