CN101206623B - 迁移虚拟端点的系统和方法 - Google Patents
迁移虚拟端点的系统和方法 Download PDFInfo
- Publication number
- CN101206623B CN101206623B CN2007101702228A CN200710170222A CN101206623B CN 101206623 B CN101206623 B CN 101206623B CN 2007101702228 A CN2007101702228 A CN 2007101702228A CN 200710170222 A CN200710170222 A CN 200710170222A CN 101206623 B CN101206623 B CN 101206623B
- Authority
- CN
- China
- Prior art keywords
- virtual
- host computer
- endpoint
- computer system
- end points
- 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.)
- Expired - Fee Related
Links
- 238000013508 migration Methods 0.000 title claims abstract description 99
- 230000005012 migration Effects 0.000 title claims abstract description 99
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000006870 function Effects 0.000 claims abstract description 198
- 238000004891 communication Methods 0.000 claims description 52
- 230000004044 response Effects 0.000 claims description 11
- 238000010276 construction Methods 0.000 claims description 7
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 238000005538 encapsulation Methods 0.000 claims description 3
- 239000004744 fabric Substances 0.000 abstract description 6
- 230000003863 physical function Effects 0.000 description 107
- 238000003860 storage Methods 0.000 description 81
- 230000007246 mechanism Effects 0.000 description 62
- 238000010586 diagram Methods 0.000 description 59
- 230000008569 process Effects 0.000 description 34
- 230000015572 biosynthetic process Effects 0.000 description 15
- 238000005755 formation reaction Methods 0.000 description 15
- 238000013519 translation Methods 0.000 description 11
- 230000000694 effects Effects 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000008447 perception Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 238000001816 cooling Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000026676 system process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 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
- 238000005057 refrigeration Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010668 complexation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Abstract
提供了一种用于将虚拟端点从一个虚拟平面迁移到另一个虚拟平面的系统和方法。利用该系统和方法,当管理应用请求将虚拟端点(VE)从一个虚拟平面(VP)迁移到另一个虚拟平面时,架构管理器向输入/输出虚拟化中介(IOVI)提供中断,用以执行无状态迁移。IOVI静默针对VE的虚拟功能(VF)的未完成请求,促使VF的功能层级的重置,解配置中介交换机中对应于VP的地址,并向架构管理器通知目的地迁移被请求。架构管理器发送中断给目的地IOVI,目的地IOVI执行目的地VF的功能层级的重置,并利用目的地VP的地址对中介交换机重编程。然后,可以将目的地VF设置为活动状态。
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架构的多个根联合体的多个系统镜像可以同时共享端点。每个根联合体及其相关联的虚拟端点(VE)被给予其自己唯一的存储器地址空间。例如,如果刀片机箱具有两个处理器刀片,其中一个处理器刀片具有第一根联合体RC1,而另一个处理器刀片具有第二根联合体RC2,且PCIe MRA交换机将RC1和RC2连接到可以支持两个VE(即VE1和VE2)的单个端点上,则上述机制将RC1和VE1放置在其自己的PCIe存储器地址空间中,该存储器地址空间对RC1和VC1是唯一的,且对RC2和VE2是不可见的。类似地,说明性的实施方式的上述机制将RC2和VE2放置在其自己的PCIe存储器空间地址中,该存储器空间地址对RC2和VE2是唯一的,且对RC1和VE1是不可见的。
RC和VE之间的所有PCIe操作都存在于由虚拟平面划界的虚拟层级中。RC可以定义多个虚拟平面,VE中的功能被分配给这些虚拟平面。由此,可能出现VE需要从一个虚拟平面移动到另一个虚拟平面的情况。除上述各种机制外,说明性的实施方式还提供了用于将VE从一个虚拟平面移动到另一个虚拟平面的机制。
说明性的实施方式的机制还包括提供了第一虚拟平面(即“平面A”)中的源虚拟功能向第二虚拟平面(即“平面B”)中的目的地虚拟功能的迁移。用于将虚拟功能从一个虚拟平面迁移到另一个虚拟平面的机制可以与多根PCIe架构中其它虚拟资源的管理协调使用,例如,与相关联的系统镜像跨过根联合体的迁移协调使用。
利用说明性的实施方式的机制,当执行源虚拟功能向另一个虚拟平面中的目的地虚拟功能的迁移时,首先由MR-RCIM(其已经被管理应用指示)中断源SR-PCIM,以将状态改变为针对平面A中源虚拟功能的“源迁移”,并停止处理事务。按照这种方式,用于虚拟功能的事务被静默。然后,服务与虚拟功能相关联的所有“未完成”事务。
然后针对该无状态迁移在目的地虚拟功能上对定义了源虚拟功能的配置信息进行重定义。然而,可以封装和移动与应用相关联的更高层级的状态,以用于与目的地虚拟功能的关联。然后,可以在源虚拟功能上执行功能层级的重置。
MR-PCIM可以利用针对平面B中目的地虚拟功能的“目的地迁移”中断来将目的地SR-PCIM中断。然后,可以在目的地虚拟功能上执行功能层级的重置。然后,可以将目的地虚拟功能的状态改为“活动”状态,使得被迁移的虚拟功能开始处理事务。
在一个说明性的实施方式中,提供了一种用于将虚拟端点从数据处理系统的第一虚拟平面迁移到第二虚拟平面的方法。该方法可以包括接收将与第一虚拟平面相关联的第一虚拟端点从第一虚拟平面迁移到第二虚拟平面的迁移请求。该方法还可以包括静默与一个或多个第一虚拟功能相关联的请求,其中该第一虚拟功能与第一虚拟平面相关联。而且,该方法可以包括配置与第二虚拟平面相关联的第二虚拟端点,以使其如第一虚拟端点那样操作,并配置通信架构,以使其将指向第一虚拟端点的输入/输出(I/O)请求路由到与第二虚拟平面相关联的第二虚拟端点。可以激活第二虚拟端点的一个或多个第二虚拟功能,使得利用所述一个或多个第二虚拟功能来处理I/O请求。
静默与一个或多个第一虚拟功能相关联的请求可以包括:确定是否存在针对该一个或多个第一虚拟功能的未完成请求,并响应于确定不存在针对第一虚拟功能的未完成请求,执行该一个或多个第一虚拟功能的功能层级的重置。配置第二虚拟端点以使其如第一虚拟端点那样操作可以包括:发送目的地迁移中断给第二虚拟平面,并响应于该目的地迁移中断,执行第二虚拟平面中的一个或多个虚拟功能的功能层级的重置。
配置通信架构以使其将指向第一虚拟端点的输入/输出(I/O)请求路由到与第二虚拟平面相关联的第二虚拟端点可以包括:在通信架构的至少一个中介交换机中删除与第一虚拟平面相关联的一个或多个地址。可以利用用于第二虚拟平面的一个或多个地址对至少一个中介交换机进行编程。
可以从第三虚拟平面中运行的多根外围组件互连管理器(MR-PCIM)接收迁移请求。MR-PCIM可以响应于从管理应用接收的命令而发送迁移请求。
可以由第一虚拟平面中运行的输入/输出(I/O)虚拟化中介(IOVI)执行接收迁移请求以及静默与一个或多个第一虚拟功能相关联的请求。该方法还可以包括:封装与第一虚拟端点相关联的应用的应用状态,以产生应用状态容器,并将该应用状态容器从第一虚拟平面转移到第二虚拟平面。
第一虚拟端点可以在第一物理端点中,且第二虚拟端点可以在不同于第一物理端点的第二物理端点中。第一物理端点和第二物理端点可以是外围组件互连扩展(PCIe)适配器。通信架构可以是包括一个或多个PCIe交换机的PCIe架构。
在其它说明性的实施方式中,提供了一种计算机程序产品,其包括具有计算机可读程序的计算机可用介质。当计算机可读程序在计算设备上被执行时,将使计算设备执行上文关于方法的说明性的实施方式中略述的各种操作及其组合。
在又一个说明性的实施方式中,提供了一种数据处理系统。数据处理系统可以包括:提供第一虚拟平面和第二虚拟平面的主机系统;以及经由通信架构耦合到主机系统的的至少一个物理端点。主机系统可以上文关于方法的说明性的实施方式中略述的各种操作及其组合。
在下文对本发明的示例性实施方式的详细描述中,将描述本发明的这些和其他特征及优点,而当看到在下文的对本发明的示例性实施方式的详细描述时,本发明的这些和其他特征及优点对本领域普通技术人员将变得显而易见。
附图说明
在所附的权利要求中阐明了确信新颖的本发明的特征。然而,通过结合附图阅读下文对说明性的实施方式的详细描述,将更好地理解本发明自身、以及优选的使用模式、其进一步的目标和优点,其中:
图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是概括了根据一个说明性的实施方式的用于迁移虚拟功能的示例性操作的流程图;
图25A和25B是示出了根据一个说明性的实施方式的用于将虚拟端点(VE)从一个虚拟平面(VP)迁移到另一个虚拟平面的示例性框图;
图26是概括了根据一个说明性的实施方式的用于将虚拟端点从一个虚拟平面迁移到另一个虚拟平面的示例性操作的流程图;
图27A和27B是概括了用于将虚拟功能从一个虚拟平面迁移到同一根联合体中的另一个虚拟平面的操作的示意图;以及
图28是概括了根据一个说明性的实施方式的用于将虚拟功能从一个虚拟平面迁移到另一个虚拟平面的示例性操作的流程图。
具体实施方式
说明性的实施方式提供了一种机制,该机制允许由相同或不同的根联合体的两个或更多系统镜像(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性能。此方法所需要的额外的上下文交换和中断重定向机制也会影响系统的整体性能。而且,当在多个根联合体之间共享端点370-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可以依赖于对应的PF1的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-EP61042-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上的系统镜像来将EP21024作为端点而使用。按照这种方式,可以在不同虚拟平面和/或主机系统上的系统镜像之间共享与根联合体位于同一位置的端点。结果,当在节点之间通信时,可以实现高性能的节点到节点(即,主机系统到主机系统)的通信和负载均衡,并通过消除对通过诸如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的分配,使得端点EP21024、EP41044和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。端点EP41044和EP5 1052经由交换机31032和交换机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可访问端点EP21324。在第一主机系统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,并且据此处理它们。
然后,端点EP21324对根联合体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的端点EP21324使用一个或多个PCIe DMA操作向第一主机系统1310的根联合体RC 11312推送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信息,来确定端点EP21824支持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 1812PCIe总线存储器地址空间可访问该门铃结构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 2235不同的端点上,其中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 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。目标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架构的多个根联合体的多个系统镜像可以同时共享端点。给予每个根联合体及其相关联的虚拟端点(VE)其自己唯一的存储器地址空间。例如,如果刀片机箱具有两个处理器刀片,其一个处理器刀片具有第一根联合体RC1,而另一个处理器刀片具有第二根联合体RC2,且PCIe MRA交换机将RC1和RC2连接到可以支持两个VE(即VE1和VE2)的单个端点上,则上述机制将RC1和VE1放置在其自己的PCIe存储器地址空间中,该存储器地址空间对RC1和VC1是唯一的,且对RC2和VE2是不可见的。类似地,说明性的实施方式的上述机制将RC2和VE2放置在其自己的PCIe存储器空间地址中,该存储器空间地址对RC2和VE2是唯一的,且对RC1和VE1是不可见的。
如前所述,RC和VE之间的所有PCIe操作都存在于由虚拟平面划界的虚拟层级中。RC可以定义多个虚拟平面,VE中的功能被分配给这些虚拟平面。将端点划分为多个虚拟平面支持整个虚拟端点从源VP到目的地VP的移动,其被称之为虚拟端点迁移。跨过虚拟平面的虚拟端点迁移的应用情境由各种更高层操作来驱动,这些更高层操作包括系统镜像迁移,工作负载均衡,以及系统维护。
使用系统镜像迁移(包括I/O)来管理系统中的虚拟资源。例如,用于将虚拟端点从一个虚拟平面迁移到另一个的机制可以与其关联的系统镜像跨过根联合体的迁移协调使用。
当系统利用在正常处理中变得不平衡时,工作负载均衡是重要的。可以使用虚拟端点的移动来平衡系统的工作负载。当源系统进入过载状态时,可以将系统A上的虚拟端点移动到系统B,以降低源系统上的利用。当系统达到最佳边界(例如,性能,利用)时,可以移动虚拟端点以重新进入性能平衡状态。
当系统需要维护时,可以将虚拟端点从系统中移走,使得维护可以进行。例如,今天,数据中心正在达到功率和冷却管理的极限。虚拟端点的智能移动可以对平衡系统的功率和冷却需求起到帮助。
而且,当OS需要维护或调试时,可以将活动虚拟端点从系统中移走以将系统使用减小到零。在系统被更新后,例如对固件的更新,可以将活动虚拟端点移回被更新的系统。
说明性的实施方式提供了用于将VE所有权从源虚拟平面移动到目的地虚拟平面的机制。图25是示出了根据一个说明性的实施例的用于将虚拟端点(VE)所有权从源虚拟平面(VP2)迁移到目的地虚拟平面(VP1)的过程的示意图。如图25所示,假设存在现有的部件布置,其包括与源虚拟平面VP2 2540相关联的虚拟端点(VE)2510和源根联合体RC2 2556。说明性的实施方式的机制允许VE2510的所有权从源VP2 2540转移到与根联合体RC1 2526相关联的目的地虚拟平面VP1 2530。
管理应用2580请求MR-PCIM 2590执行针对源虚拟平面VP22540中的源虚拟端点2510的源迁移操作。通过这样的配置,在源主机系统2550上运行的I/O虚拟化中介(IOVI)2554接收来自MR-PCIM 2590的源迁移中断。如果源IOVI 2554已经针对与VE2510相关联的物理功能设置了迁移使能位,则迁移随后发生。
I/O虚拟化中介(IOVI)2554向源系统镜像2551、2552发送请求,请求其处理完(drain)任何针对源虚拟功能2514和2516的未完成请求,其中源系统镜像2551、2552与VE 2510中所有与源物理功能2512相链接的源虚拟功能(例如VE 2510中的虚拟功能2514和2516)相关联。应当注意,物理功能2512和所有与其相关联的虚拟功能2514和2516都与一个根联合体(例如根联合体RC2 2556)相关联。因此,只有单个源IOVI(例如1OVI 2554)与上述操作相关联,并且所有源系统镜像都在同一虚拟平面内,例如VP2 2540内。
一旦源IOVI 2554从所有系统镜像2551,2552接收到了通知,指示不存在针对VE2510中任何源虚拟功能2514,2516的剩余未完成请求,则源IOVI 2554在虚拟功能2514,2516的配置空间中设置适当的位,以在源虚拟功能2514,2516上创建功能层级的重置,用以清除与源虚拟功能2514,2516相关联的任何状态,从而为无状态VE迁移扫清障碍。可以封装更高层的应用状态,为向VE 2510的移动做准备。
源IOVI 2554等待直到由PCI SIG标准定义的功能层级的重置在所有虚拟功能上完成,并且向MR-PCIM 2590通知需要目的地迁移。MR-PCIM 2590发送目的地虚拟端点迁移中断到目的地IOVI 2524。如果目的地IOVI 2524已经针对与VE 2510相关联的物理功能设置了迁移使能位,则迁移随后发生。
目的地IOVI 2524通过在配置空间中设置适当的位,在目的地虚拟功能2518-2519上执行功能层级的重置。然后可以将被封装用于源虚拟功能的更高层级应用状态移动到适当位置。
如果没有任何交换机端点中的其它功能与源虚拟平面VP22540相关联,则MR-PCIM 2590通过从上端口和下端口删除与源虚拟平面VP22540、源物理功能2512以及源虚拟功能2514、2516相关联的地址,来重编程任何中介交换机,例如可被MR-PCIM 2590基于其表数据结构标识的交换机2570,该表数据结构为MR-PCIM 2590提供了PCIe架构的全局视图。
MR-PCIM 2590然后利用用于目的地虚拟平面VP1 2530的地址对中介交换机表进行编程。目的地IOVI 2524然后将目的地虚拟端点和目的地虚拟功能2518、2519通知目的地系统镜像SIn 2522。为了启动目的地VE 2560,目的地IOVI 2524然后将目的地物理功能2517的状态和所有目的地虚拟功能2518-2519的状态在其可能被使用的点改为“活动”。由此,VE 2860现在与VP1 2530相关联,并因而被从VP2 2540迁移到了VP1 2530。
如果虚拟端点2510也被跨过端点迁移,用以,例如,在端点上进行同步维护,MR-PCIM 2590对根联合体和端点之间的中介交换机重编程,使得源根联合体RC1 2526可以访问被迁移的目的地虚拟端点2560。目的地IOVI 2524然后将目的地虚拟端点和目的地虚拟功能2518、2519通知目的地系统镜像SIn 2522,并将目的地物理功能2517和目的地虚拟功能2518-2519初始化为活动。
图26是概括了根据一个说明性的实施方式的用于将虚拟端点从一个虚拟平面迁移到另一个虚拟平面的示例性操作的流程图。如图26所示,操作开始于管理应用请求将由MR-PCIM执行的虚拟端点的源迁移操作(步骤2610)。MR-PCIM发送迁移中断给虚拟端点的源IOVI(步骤2615)。确定是否针对与虚拟端点相关联的物理功能设置了迁移位(步骤2620)。如果没有设置迁移位,返回错误消息(步骤2625)并终止操作。
如果针对该物理功能设置了迁移位,源IOVI请求迁移与虚拟端点中的虚拟功能相关联的系统镜像处理完针对虚拟功能的未完成请求(步骤2630)。源IOVI然后等待来自系统镜像的不再有针对虚拟功能的未完成请求的通知(步骤2635)。源IOVI然后针对虚拟功能设置配置位,以启动功能层级的重置(步骤2640)。然后可以封装应用状态,用于随虚拟端点的迁移一同迁移。
源IOVI等待功能层级的重置完成并将目的地迁移请求通知MR-PCIM(步骤2650)。MR-PCIM发送目的地迁移中断给目的地IOVI(步骤2655)。目的地IOVI通过设置适当的配置位以启动功能层级的重置,来执行目的地虚拟功能的功能层级的重置(步骤2660)。
MR-PCIM通过移除与源虚拟平面、源物理功能和源虚拟功能相关联的地址来对中介交换机(如果有)重编程(步骤2665)。MR-PCIM利用用于目的地虚拟平面的地址对中介交换机重编程(步骤2670)。目的地IOVI将目的地虚拟功能通知相关联的系统镜像,并将现在与目的地虚拟平面相关联的目的地虚拟功能初始化为活动(2675)。操作然后终止。
这样,除了可以在系统镜像和端点之间迁移虚拟功能外,说明性的实施方式的机制还提供了用于在PCIe架构中主机系统的虚拟平面之间迁移虚拟端点及其相关联的虚拟功能的功能。说明性的实施方式的机制还提供了虚拟功能从一个虚拟平面到另一个虚拟平面的迁移。在优选实施方式中,每个根联合体只使用一个虚拟平面(可能存在的根联合体的例外是同时具有管理平面和普通地址平面),因此这种迁移是在根联合体之间的。然而,应当理解,说明性的实施方式不限于此,且PCIe架构的虚拟平面之间的任何迁移都可以利用说明性的实施方式的机制。
如上文与虚拟端点迁移一同讨论的,跨过虚拟平面的虚拟功能迁移的应用情境由多种更高层操作来驱动,这些更高层操作包括系统镜像迁移,工作负载均衡,以及维护操作。系统镜像迁移(包括I/O)被用以管理系统中的虚拟资源。例如,用于将虚拟功能从一个虚拟平面迁移到另一个虚拟平面的机制可以与相关联的系统镜像跨过根联合体的迁移协调使用。
当系统利用在正常处理中变得不平衡时,工作负载均衡是重要的。虚拟功能的移动可被用以平衡系统上的工作负载。当源系统进入过载状态时,可将“系统A”上的一些虚拟功能移动到“系统B”上以降低院系统上的利用。而且,当系统达到最优边界(例如,性能、利用)时,可以移动虚拟功能以重新进入性能平衡状态。
当系统需要维护时,可以将虚拟功能从系统移走,使得维护可以进行。当今,资料数据中心正在达到功率和制冷管理的极限。虚拟功能智能的移动可以对平衡系统的功率和制冷需求起到帮助。当OS需要维护或调试时,为了将系统使用减小到零,可以将活动虚拟动能从系统移走。在系统被升级(例如固件)之后,可以将工作移回被升级的系统。
图27是概括了用于将虚拟端点从一个虚拟平面迁移到同一根联合体中另一个虚拟平面的操作的示意图。如图27所示,操作假设存在已有的配置,其中源虚拟功能2710被分配给了与源根联合体RC22730和源系统镜像SI2 2740相关联的源虚拟平面VP2 2720。管理应用2780请求MR-PCIM 2790执行针对源虚拟平面VP2 2720中源虚拟功能2710的源迁移操作。利用这种配置,运行在源主机系统2720上的I/O虚拟化中介(IOVI)2750接收到源迁移中断,其请求源系统镜像SI2 2740处理完(drain)针对将被迁移的源虚拟功能2710的任何未完成请求。如果源IOVI2750已经针对与VF 2710相关联的物理功能设置了迁移使能位,迁移随后发生。一旦源IOVI 2750从源系统镜像SI2接到了通知,指示没有针对源虚拟功能2710的剩余未完成请求,则源IOVI 2750在源虚拟功能2710上执行功能层级的重置,以清除与虚拟功能2710相关联的任何状态,从而为无状态迁移扫清障碍。可以封装更高层应用状态,为向目的地虚拟功能2791的移动做准备。
源IOVI 2750等待功能层级的重置完成,并通知MR-PCIM 2790目的地迁移被请求。MR-PCIM 2790发送目的地虚拟功能中断给目的地IOVI 2792。如果目的地IOVI 2792已经针对与目的地VF 2791相关联的物理功能设置了迁移使能位,迁移随后发生。IOVI 2792在目的地虚拟功能2791上执行功能层级的重置。然后将被封装的针对源虚拟功能的更高层次的应用状态移动到适当位置。
如果任何交换机端点中没有其它功能与虚拟平面VP2 2720相关联,则源IOVI 2750通过从上端口和下端口删除与虚拟平面VP2 2720以及源虚拟功能2710相关联的地址,来对任何中介交换机重编程。目的地IOVI 2792然后利用用于虚拟平面VP 12770的地址对中介交换机编程。目的地IOVI 2792然后将目的地虚拟功能通知目的地系统镜像SI1 2793。IOVI 2792然后将目的地虚拟功能2791的状态在其可能被使用的点改为“活动”。
如果虚拟功能2710也被跨过端点迁移,用以,例如,在端点上进行同步维护,目的地IOVI 2792对根联合体和端点之间的交换机重编程,使得根联合体RC1 2760可以访问被迁移的目的地虚拟功能2791。目的地IOVI 2792然后将目的地虚拟功能通知目的地系统镜像SI1 2793,并将目的地虚拟功能2791初始化为活动。
图28是概括了根据一个说明性的实施方式的用于将虚拟功能从一个虚拟平面迁移到另一个虚拟平面的示例性操作的流程图。如图28所示,操作开始于管理应用请求MR-PCIM执行虚拟端点的源迁移操作(步骤2810)。MR-PCIM发送迁移中断给虚拟端点的源IOVI(步骤2815)。确定是否针对与虚拟端点相关联的物理功能设置了迁移位(步骤2820)。如果没有设置迁移位,返回错误消息(步骤2825)并终止操作。
如果针对该物理功能设置了迁移位,源IOVI请求迁移与虚拟端点中的虚拟功能相关联的系统镜像处理完针对虚拟功能的未完成请求(步骤2830)。源IOVI然后等待来自系统镜像的不再有针对虚拟功能的未完成请求的通知(步骤2835)。源IOVI然后针对虚拟功能设置配置位,以启动功能层级的重置(步骤2840)。然后可以封装应用状态,用于随虚拟端点的迁移一同迁移(步骤2845)。
源IOVI等待功能层级的重置完成并将目的地迁移请求通知MR-PCIM(步骤2850)。MR-PCIM发送目的地迁移中断给目的地IOVI(步骤2855)。MR-PCIM确定是否针对与目的地虚拟端点相关联的物理功能设置了迁移位(步骤2860)。如果没有,则返回错误消息(步骤2825)。否则,如果已经设置了迁移位,目的地IOVI通过设置适当的配置位以启动功能层级的重置,来执行目的地虚拟功能的功能层级的重置(步骤2865)。可以将被封装的应用状态也迁移到目的地虚拟平面(步骤2870)。
MR-PCIM通过删除与源虚拟平面、源物理功能和源虚拟功能相关联的地址来对中介交换机(如果有)重编程(步骤2875)。MR-PCIM利用用于目的地虚拟平面的地址对中介交换机(2880)重编程。目的地IOVI将目的地虚拟功能通知相关联的系统镜像,并将现在与目的地虚拟平面相关联的目的地虚拟功能初始化为活动状态(2885)。操作然后终止。
这样,除了可以在端点、虚拟端点、系统镜像等之间迁移虚拟功能和应用外,说明性的实施方式的机制还提供了用于在同一根联合体的虚拟平面之间迁移虚拟功能的功能性。说明性的实施方式的机制提供了各种用于跨过多个系统镜像和根联合体共享端点的功能性。这些功能性包括配置共享存储器空间用于在根联合体和端点之间的通信中使用,迁移虚拟功能,端点等。这些各种机制均向系统添加了当需求随时间变化时进行扩展的能力。而且,这些不同的机制增强了工作负载均衡、同步维护,以及其它所需的系统能力的冗余。
请特别注意,尽管已经在全功能的数据处理系统的上下文中描述了本发明,但本领域技术人员应当理解,本发明的处理能够以指令的计算机可读介质的形式以及各种形式来分发,并且应当理解,可以等同地应用本发明,而无论实际用于执行该分发的信号承载介质的特定类型。计算机可读介质的例子包括:可记录类型介质,诸如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM;以及传输类型介质,诸如数字和模拟通信链路、使用例如射频以及光波传输的传输形式的有线或无线链路。计算机可读介质可以采用编码格式的形式,其中针对在特定数据处理系统中的实际使用,对所述编码格式进行解码。
为了示例和说明的目的,提供本发明的说明,并且本发明的说明并非旨在穷尽性的或者将本发明限制于所公开的形式。许多修改和变型对于本领域技术人员将是明显的。选择和说明这些实施方式,以便最好地解释本发明的原理和实际应用,并使得本领域的其他技术人员理解本发明,具有各种修改的各种实施方式适用于所预期的特定使用。
Claims (10)
1.一种在数据处理系统中用于将虚拟端点从数据处理系统的第一虚拟平面迁移到第二虚拟平面的方法,包括:
接收将与所述第一虚拟平面相关联的第一虚拟端点从所述第一虚拟平面迁移到所述第二虚拟平面的迁移请求;
静默与一个或多个第一虚拟功能相关联的请求,其中所述一个或多个第一虚拟功能与所述第一虚拟平面相关联,其中静默与所述一个或多个第一虚拟功能相关联的请求包括确定是否存在针对所述一个或多个第一虚拟功能的未完成请求,以及响应于确定不存在针对所述一个或多个第一虚拟功能的未完成请求,执行所述一个或多个第一虚拟功能的功能层级的重置;
配置与所述第二虚拟平面相关联的第二虚拟端点,以使其如所述第一虚拟端点那样操作;
配置通信架构,以使其将指向所述第一虚拟端点的输入/输出请求路由到与所述第二虚拟平面相关联的所述第二虚拟端点;以及
激活所述第二虚拟端点的一个或多个第二虚拟功能,使得利用所述一个或多个第二虚拟功能来处理输入/输出请求。
2.根据权利要求1所述的方法,其中配置所述第二虚拟端点以使其如所述第一虚拟端点那样操作包括:
发送目的地迁移中断给所述第二虚拟平面;以及
响应于所述目的地迁移中断,执行所述第二虚拟平面中的所述一个或多个虚拟功能的功能层级的重置。
3.根据权利要求1所述的方法,其中配置通信架构以使其将指向所述第一虚拟端点的输入/输出请求路由到与所述第二虚拟平面相关联的所述第二虚拟端点包括:
在所述通信架构的至少一个中介交换机中删除与所述第一虚拟平面相关联的一个或多个地址;以及
利用用于所述第二虚拟平面的一个或多个地址对所述至少一个中介交换机编程。
4.根据权利要求1所述的方法,其中从第三虚拟平面中运行的多根外围组件互连管理器接收所述迁移请求。
5.根据权利要求4所述的方法,其中所述多根外围组件互连管理器响应于从管理应用接收的命令而发送所述迁移请求。
6.根据权利要求1所述的方法,其中由所述第一虚拟平面中运行的输入/输出虚拟化中介执行接收所述迁移请求以及静默与所述一个或多个第一虚拟功能相关联的请求。
7.根据权利要求1所述的方法,还包括:
封装与所述第一虚拟端点相关联的应用的应用状态,以产生应用状态容器;以及
将所述应用状态容器从所述第一虚拟平面转移到所述第二虚拟平面。
8.根据权利要求1所述的方法,其中所述第一虚拟端点在第一物理端点中,以及所述第二虚拟端点在不同于所述第一物理端点的第二物理端点中。
9.根据权利要求8所述的方法,其中所述第一物理端点和所述第二物理端点是外围组件互连扩展适配器,以及其中所述通信架构是包括一个或多个外围组件互连扩展交换机的外围组件互连扩展架构。
10.一种数据处理系统,包括:
提供第一虚拟平面和第二虚拟平面的主机系统;以及
经由通信架构耦合到所述主机系统的至少一个物理端点,其中所述主机系统包括:
用于接收将与所述第一虚拟平面相关联的物理端点中的第一虚拟端点从所述第一虚拟平面迁移到第二虚拟平面的迁移请求的装置;
用于静默与一个或多个第一虚拟功能相关联的请求的装置,其中所述一个或多个第一虚拟功能与所述第一虚拟平面相关联,并且其中静默与所述一个或多个第一虚拟功能相关联的请求包括确定是否存在针对所述一个或多个第一虚拟功能的未完成请求,以及响应于确定不存在针对所述一个或多个第一虚拟功能的未完成请求,执行所述一个或多个第一虚拟功能的功能层级的重置;
用于配置与所述第二虚拟平面相关联的物理端点中的第二虚拟端点,以使其如所述第一虚拟端点那样操作的装置;
用于配置所述通信架构,以使其将指向所述第一虚拟端点的输入/输出请求路由到与所述第二虚拟平面相关联的所述第二虚拟端点的装置;以及
用于激活所述第二虚拟端点的一个或多个第二虚拟功能,使得利用所述一个或多个第二虚拟功能来处理输入/输出请求的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/612,547 | 2006-12-19 | ||
US11/612,547 US7813366B2 (en) | 2006-12-19 | 2006-12-19 | Migration of a virtual endpoint from one virtual plane to another |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101206623A CN101206623A (zh) | 2008-06-25 |
CN101206623B true CN101206623B (zh) | 2010-04-21 |
Family
ID=39528987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101702228A Expired - Fee Related CN101206623B (zh) | 2006-12-19 | 2007-11-15 | 迁移虚拟端点的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7813366B2 (zh) |
CN (1) | CN101206623B (zh) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008188304A (ja) * | 2007-02-06 | 2008-08-21 | Terumo Corp | 医療用カテーテル |
US7979592B1 (en) * | 2007-02-09 | 2011-07-12 | Emulex Design And Manufacturing Corporation | Virtualization bridge device |
KR101445436B1 (ko) * | 2008-04-02 | 2014-09-26 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 공유 i/o 시스템에서의 리셋 변환 방법, 컴퓨터 판독 가능한 매체 및 컴퓨터 시스템 |
US8122225B2 (en) * | 2008-08-12 | 2012-02-21 | International Business Machines Corporation | LUN masking/mapping in a SR-IOV enabled SAS adapter |
JP5440507B2 (ja) * | 2008-10-15 | 2014-03-12 | 日本電気株式会社 | マルチルートpciエクスプレススイッチ、その起動方法、及び、マルチルートpciマネージャプログラム |
JP5232602B2 (ja) * | 2008-10-30 | 2013-07-10 | 株式会社日立製作所 | ストレージ装置、及びストレージコントローラ内部ネットワークのデータ経路フェイルオーバー方法 |
US7873068B2 (en) * | 2009-03-31 | 2011-01-18 | Intel Corporation | Flexibly integrating endpoint logic into varied platforms |
US8369325B2 (en) * | 2009-06-30 | 2013-02-05 | Oracle America, Inc. | Method and apparatus for packet classification and spreading in a virtualized system |
US8352799B2 (en) * | 2010-02-12 | 2013-01-08 | Symantec Corporation | Data corruption prevention during application restart and recovery |
US8606975B2 (en) * | 2010-05-21 | 2013-12-10 | Oracle International Corporation | Managing interrupts in a virtualized input/output device supporting multiple hosts and functions |
US8918573B2 (en) | 2010-06-23 | 2014-12-23 | International Business Machines Corporation | Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment |
US8416834B2 (en) | 2010-06-23 | 2013-04-09 | International Business Machines Corporation | Spread spectrum wireless communication code for data center environments |
US8615586B2 (en) * | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Discovery of logical images at storage area network endpoints |
US8645606B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Upbound input/output expansion request and response processing in a PCIe architecture |
US8745292B2 (en) | 2010-06-23 | 2014-06-03 | International Business Machines Corporation | System and method for routing I/O expansion requests and responses in a PCIE architecture |
US8615622B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Non-standard I/O adapters in a standardized I/O architecture |
US8417911B2 (en) | 2010-06-23 | 2013-04-09 | International Business Machines Corporation | Associating input/output device requests with memory associated with a logical partition |
US8677180B2 (en) | 2010-06-23 | 2014-03-18 | International Business Machines Corporation | Switch failover control in a multiprocessor computer system |
US8656228B2 (en) | 2010-06-23 | 2014-02-18 | International Business Machines Corporation | Memory error isolation and recovery in a multiprocessor computer system |
US8671287B2 (en) | 2010-06-23 | 2014-03-11 | International Business Machines Corporation | Redundant power supply configuration for a data center |
US8645767B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Scalable I/O adapter function level error detection, isolation, and reporting |
JP5569197B2 (ja) * | 2010-07-06 | 2014-08-13 | 富士通株式会社 | 計算機装置およびリセット制御プログラム |
WO2012023151A2 (en) * | 2010-08-19 | 2012-02-23 | Ineda Systems Pvt. Ltd | I/o virtualization and switching system |
US8543754B2 (en) * | 2011-02-25 | 2013-09-24 | International Business Machines Corporation | Low latency precedence ordering in a PCI express multiple root I/O virtualization environment |
US9772858B2 (en) | 2011-04-21 | 2017-09-26 | Ineda Systems Inc. | Multi-root peripheral component interconnect manager |
US8990459B2 (en) | 2011-04-30 | 2015-03-24 | Ineda Systems Pvt. Ltd | Peripheral device sharing in multi host computing systems |
CN102819447B (zh) * | 2012-05-29 | 2015-06-03 | 中国科学院计算技术研究所 | 一种用于多根共享系统的直接i/o虚拟化方法和装置 |
CN102722458B (zh) * | 2012-05-29 | 2015-01-07 | 中国科学院计算技术研究所 | 一种用于多根共享系统的i/o重映射方法和装置 |
US10051054B2 (en) | 2013-03-15 | 2018-08-14 | Oracle International Corporation | System and method for efficient virtualization in lossless interconnection networks |
US9990221B2 (en) * | 2013-03-15 | 2018-06-05 | Oracle International Corporation | System and method for providing an infiniband SR-IOV vSwitch architecture for a high performance cloud computing environment |
US9201682B2 (en) * | 2013-06-21 | 2015-12-01 | Ati Technologies Ulc | Virtualized device reset |
US9135200B2 (en) * | 2013-06-28 | 2015-09-15 | Futurewei Technologies, Inc. | System and method for extended peripheral component interconnect express fabrics |
WO2015100622A1 (zh) * | 2013-12-31 | 2015-07-09 | 华为技术有限公司 | 虚拟机热迁移的方法和服务器 |
US10397105B2 (en) | 2014-03-26 | 2019-08-27 | Oracle International Corporation | System and method for scalable multi-homed routing for vSwitch based HCA virtualization |
US9798377B2 (en) | 2014-10-08 | 2017-10-24 | Apple Inc. | Methods and apparatus for recovering errors with an inter-processor communication link between independently operable processors |
US9984017B2 (en) * | 2014-12-27 | 2018-05-29 | Intel Corporation | Intelligent network fabric to connect multiple computer nodes with one or more SR-IOV devices |
US9990327B2 (en) | 2015-06-04 | 2018-06-05 | Intel Corporation | Providing multiple roots in a semiconductor device |
US10085214B2 (en) | 2016-01-27 | 2018-09-25 | Apple Inc. | Apparatus and methods for wake-limiting with an inter-device communication link |
US10042720B2 (en) | 2016-02-22 | 2018-08-07 | International Business Machines Corporation | Live partition mobility with I/O migration |
US10042723B2 (en) | 2016-02-23 | 2018-08-07 | International Business Machines Corporation | Failover of a virtual function exposed by an SR-IOV adapter |
US10002018B2 (en) | 2016-02-23 | 2018-06-19 | International Business Machines Corporation | Migrating single root I/O virtualization adapter configurations in a computing system |
US10558580B2 (en) | 2016-02-29 | 2020-02-11 | Apple Inc. | Methods and apparatus for loading firmware on demand |
US10025584B2 (en) | 2016-02-29 | 2018-07-17 | International Business Machines Corporation | Firmware management of SR-IOV adapters |
US10191859B2 (en) | 2016-03-31 | 2019-01-29 | Apple Inc. | Memory access protection apparatus and methods for memory mapped access between independently operable processors |
US9720863B1 (en) | 2016-10-21 | 2017-08-01 | International Business Machines Corporation | Migrating MMIO from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9760512B1 (en) | 2016-10-21 | 2017-09-12 | International Business Machines Corporation | Migrating DMA mappings from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9740647B1 (en) | 2016-10-21 | 2017-08-22 | International Business Machines Corporation | Migrating DMA mappings from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US9715469B1 (en) | 2016-10-21 | 2017-07-25 | International Business Machines Corporation | Migrating interrupts from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9720862B1 (en) | 2016-10-21 | 2017-08-01 | International Business Machines Corporation | Migrating interrupts from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US9785451B1 (en) | 2016-10-21 | 2017-10-10 | International Business Machines Corporation | Migrating MMIO from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US10331612B1 (en) | 2018-01-09 | 2019-06-25 | Apple Inc. | Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors |
US10430352B1 (en) * | 2018-05-18 | 2019-10-01 | Apple Inc. | Methods and apparatus for reduced overhead data transfer with a shared ring buffer |
US11321240B2 (en) * | 2018-06-08 | 2022-05-03 | International Business Machines Corporation | MMIO addressing using a translation lookaside buffer |
CN113906400A (zh) * | 2019-04-29 | 2022-01-07 | 迈凌有限公司 | 经由PCIe(高速串行计算机扩展总线)链接的系统通信技术 |
CN110175139B (zh) * | 2019-05-08 | 2021-01-05 | 厦门亿联网络技术股份有限公司 | 一种usb设备的通用调试方法及usb设备 |
US11609866B2 (en) * | 2020-01-02 | 2023-03-21 | Texas Instruments Incorporated | PCIe peripheral sharing |
US20220398207A1 (en) * | 2021-06-09 | 2022-12-15 | Enfabrica Corporation | Multi-plane, multi-protocol memory switch fabric with configurable transport |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040059807A1 (en) * | 2002-09-16 | 2004-03-25 | Finisar Corporation | Network analysis topology detection |
US6864886B1 (en) * | 2000-08-10 | 2005-03-08 | Sportvision, Inc. | Enhancing video using a virtual surface |
WO2006103169A1 (en) * | 2005-04-01 | 2006-10-05 | International Business Machines Corporation | Host ethernet adapter for networking offload in server environment |
US20060281541A1 (en) * | 2002-03-12 | 2006-12-14 | Igt. | Virtual player tracking and related services |
Family Cites Families (53)
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 |
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 |
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 |
US20030065856A1 (en) * | 2001-10-03 | 2003-04-03 | Mellanox Technologies Ltd. | Network adapter with multiple event queues |
US7493438B2 (en) | 2001-10-03 | 2009-02-17 | Intel Corporation | Apparatus and method for enumeration of processors during hot-plug of a compute node |
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 |
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 |
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 |
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 |
US7293129B2 (en) * | 2005-04-22 | 2007-11-06 | Sun Microsystems, Inc. | Flexible routing and addressing |
US7565463B2 (en) * | 2005-04-22 | 2009-07-21 | Sun Microsystems, Inc. | Scalable 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 |
KR20090087119A (ko) * | 2006-12-06 | 2009-08-14 | 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) | 빈 데이터 토큰 지시어를 사용한 저장 장치 내의 데이터 관리 장치, 시스템 및 방법 |
US7657663B2 (en) | 2006-12-19 | 2010-02-02 | International Business Machines Corporation | Migrating stateless virtual functions from one virtual plane to another |
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 |
-
2006
- 2006-12-19 US US11/612,547 patent/US7813366B2/en not_active Expired - Fee Related
-
2007
- 2007-11-15 CN CN2007101702228A patent/CN101206623B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6864886B1 (en) * | 2000-08-10 | 2005-03-08 | Sportvision, Inc. | Enhancing video using a virtual surface |
US20060281541A1 (en) * | 2002-03-12 | 2006-12-14 | Igt. | Virtual player tracking and related services |
US20040059807A1 (en) * | 2002-09-16 | 2004-03-25 | Finisar Corporation | Network analysis topology detection |
WO2006103169A1 (en) * | 2005-04-01 | 2006-10-05 | International Business Machines Corporation | Host ethernet adapter for networking offload in server environment |
Also Published As
Publication number | Publication date |
---|---|
US7813366B2 (en) | 2010-10-12 |
US20080147943A1 (en) | 2008-06-19 |
CN101206623A (zh) | 2008-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101206623B (zh) | 迁移虚拟端点的系统和方法 | |
CN101206621B (zh) | 迁移无状态虚拟功能的系统和方法 | |
CN100583046C (zh) | 用于单根无状态虚拟功能迁移的系统和方法 | |
CN101206634B (zh) | 用于初始化共享存储器的系统和方法 | |
CN101206633B (zh) | 用事务协议和共享存储器在主机系统间通信的系统和方法 | |
CN101206632B (zh) | 用套接字连接和共享存储器在主机系统间通信的系统和方法 | |
CN101206629B (zh) | 在运行的PCIe架构中热插/拔新组件的系统和方法 | |
CN101206622B (zh) | 基于指定的有效功能组合配置端点的系统和方法 | |
TWI570563B (zh) | 後置中斷架構 | |
CN104871493B (zh) | 用于高性能计算网络中的通信信道故障切换的方法和设备 | |
CN100565478C (zh) | 管理访问数据处理系统的存储器的地址转换的方法和装置 | |
CN101165664B (zh) | 用于在数据处理系统中管理地址转换的方法和装置 | |
CN101165663B (zh) | 使用高速缓存的地址转换与i/o适配器进行通信的装置、方法 | |
CN101165667B (zh) | 用于在数据处理系统中管理地址转换的方法和装置 | |
CN100410912C (zh) | 从一个设备驱动程序向另一个传送信息的系统和方法 | |
TWI434181B (zh) | 電腦系統中溝通中斷之處理器中斷裝置、計算方法及電腦系統技術 | |
CN104685479A (zh) | 客户虚拟机内的虚拟输入/输出存储器管理单元 | |
CN102906716A (zh) | 依据适配器的多个地址空间 | |
CN102023932A (zh) | 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 | |
CN1983185A (zh) | 在操作系统实例中共享输入/输出适配器的方法和系统 | |
CN103186481A (zh) | 信息处理设备及防止未授权访问的方法 | |
WO2008074639A1 (en) | System and method for communication between host systems using a queuing system and shared memories |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100421 Termination date: 20151115 |