CN101206622B - 基于指定的有效功能组合配置端点的系统和方法 - Google Patents
基于指定的有效功能组合配置端点的系统和方法 Download PDFInfo
- Publication number
- CN101206622B CN101206622B CN2007101702143A CN200710170214A CN101206622B CN 101206622 B CN101206622 B CN 101206622B CN 2007101702143 A CN2007101702143 A CN 2007101702143A CN 200710170214 A CN200710170214 A CN 200710170214A CN 101206622 B CN101206622 B CN 101206622B
- Authority
- CN
- China
- Prior art keywords
- end points
- functions
- virtual functions
- host computer
- computer system
- 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
- 230000006870 function Effects 0.000 title claims abstract description 217
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000003863 physical function Effects 0.000 claims description 152
- 230000008676 import Effects 0.000 claims description 5
- 239000000284 extract Substances 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 3
- 238000000605 extraction Methods 0.000 claims 3
- 230000007246 mechanism Effects 0.000 abstract description 40
- 238000003860 storage Methods 0.000 description 77
- 238000010586 diagram Methods 0.000 description 49
- 238000004891 communication Methods 0.000 description 38
- 230000008569 process Effects 0.000 description 25
- 230000015572 biosynthetic process Effects 0.000 description 13
- 238000013519 translation Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 5
- 230000008447 perception Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000004744 fabric Substances 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
- 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
- 230000000007 visual effect Effects 0.000 description 2
- 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
- 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
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001360 synchronised 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
Abstract
提供了一种用于注册物理和/或虚拟功能的组合以配置端点的系统和方法。利用该系统和方法,一种机制将多功能端点的功能组合通知管理组件。管理组件然后可以使用该信息以选择将对每个系统镜像可见的功能组合。可以通过向针对物理或虚拟功能的配置空间中各种预先定义的字段写入值,来执行管理组件的输入,其中该物理或虚拟功能提供如下信息:所支持的虚拟功能数目、所支持的功能组合,将被物理功能使用的虚拟功能的名义组合,以及用于标识哪些功能被链接在组合分组中的分组标识符。
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对处理可用。
然后,第二主机系统可接受或拒绝该请求。如果第二主机系统接受该请求,则其返回套接字参数的后半个用于由第一主机系统执行在第一和第二主机系统之间的基于套接字的通信中使用。这些参数可以规定队列结构中将要与套接字相关联的部分以及门铃结构,门铃结构用于通知主机系统何时可获得队列单元用于经由套接字进行处理。实际的套接字通信可能涉及例如在主机系统之间拉回事务和/或推送事务。
说明性的实施方式的机制允许给定的根联合体内的系统镜像使用端点的一个或多个物理和虚拟功能。通过添加这种能力,当为系统镜像提供使用这些功能的能力时,可能需要考虑各种端点的物理功能和虚拟功能的交互。例如,取决于各种标准,可能需要,允许,或不允许各种功能组合。
作为一个实例,可能需要功能(物理的和/或虚拟的)彼此协同工作以完成所期待的操作。例如,可能需要密码功能和以太网功能一同工作,以提供加密业务量控制。而且,还可能存在不应被支持的功能组合,因为它们添加的功能不产生提高的功能性。此外,还可以有其它限制,其禁止所有物理功能具有相等数目的虚拟功能。
说明性的实施方式提供了将多个功能以组合方式进行注册的机制。该机制将多功能端点的功能组合通知管理组件。管理组件然后可以使用该信息以选择将对每个系统镜像可见的功能组合。
在一个说明性的实施方式中,提供了一种用于配置端点以与主机系统一起使用的方法。该方法可以包括:从端点配置空间中提取配置空间组合位图,产生与该端点相关联的一个或多个功能,并根据配置空间组合位图将至少一个功能与至少一个其它功能相关联,由此产生功能组合。该方法还可以包括使用功能组合处理提供给端点的输入/输出请求。
该方法还可以包括从端点配置空间中提取虚拟功能的最大数目。产生与端点相关联的一个或多个功能可以包括:基于虚拟功能的最大数目产生与端点中的一个或多个物理功能相关联的一个或多个虚拟功能。将至少一个功能与至少一个其它功能相关联可以包括:将一个或多个虚拟功能或一个或多个物理功能中的至少一个与另一个虚拟功能或另一个物理功能中的至少一个相关联。而且,该方法可以包括:基于端点配置空间中所标识的虚拟功能的最大数目,显示针对一个或多个物理功能的虚拟功能的最大数目。该方法还可以包括:基于所显示的虚拟功能的最大数目,接收指定用户所期待的端点配置的用户输入。该方法还可以包括:基于该用户输入,确定分配给端点中提供的一个或多个物理功能中每个物理功能的虚拟功能数目。而且,该方法可以包括:基于所确定的分配给每个物理功能的虚拟功能数目,在一个或多个物理功能的配置空间中设置虚拟功能数目字段的值。
配置空间组合位图中的每个位指定至少一个物理功能或虚拟功能的不同组合。设置配置空间组合位图中的相应位可以指定至少一个物理或虚拟功能的哪些组合是端点中的有效功能组合。配置空间组合位图中的每个位可与唯一组合编号相关联,该唯一组合编号对应于配置空间组合位图中位的位编号。可以在端点物理功能的配置空间中指定组合编号。
配置空间组合位图可以具有针对端点中提供的至少一个物理功能或虚拟功能的每个可能组合的位。该方法还可以包括:为端点中至少一个物理功能或虚拟功能的每个有效组合产生组合实例编号。该方法还可以包括:将对应的组合实例编号写入与端点中每个物理功能和虚拟功能相关联的配置空间。根据配置空间组合位图将一个或多个虚拟功能或一个或多个物理功能中的至少一个与另一个虚拟功能或另一个物理功能中的至少一个相关联包括:基于与物理功能或虚拟功能相关联的组合实例编号对物理功能或虚拟功能进行关联。
该方法可以包括显示与配置空间组合位图相对应的字段。该方法还可以包括:接收用户输入,用户输入指定要在端点中实现的一个或多个唯一的组合编号的选择。而且,该方法可以包括:将一个或多个唯一组合编号写入端点的至少一个物理功能或虚拟功能的配置空间。
在另一个说明性的实施方式中,提供了包括具有计算机可用的介质的计算机程序产品,该介质上具有计算机可读程序。当在计算设备上执行时,计算机可读程序引起计算设备执行上文列出的关于说明性的实施方式的方法的各种操作或其组合。
在另一个说明性的实施方式中,提供一种数据处理系统。该数据处理系统可以包括主机系统以及耦合到主机系统的端点。主机系统可以执行上文列出的关于说明性的实施方式的方法的各种操作或其组合。
在下文对本发明的示例性实施方式的详细描述中,将描述本发明的这些和其他特征及优点,而当看到在下文的对本发明的示例性实施方式的详细描述时,本发明的这些和其他特征及优点对本领域普通技术人员将变得显而易见。
附图说明
在所附的权利要求中阐明了确信新颖的本发明的特征。然而,通过结合附图阅读下文对说明性的实施方式的详细描述,将更好地理解本发明自身、以及优选的使用模式、其进一步的目标和优点,其中:
图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是概括了根据一个说明性的实施方式的用于使用基于套接字的通信连接而执行推送事务的示例性操作的流程图;
图21是示出了根据一个说明性的实施方式的被添加到PCIe配置空间中的三个新字段的示例性表;
图22是表示根据一个说明性的实施方式定义所支持的端点功能组合的所支持的组合位图的解释的示例性表;
图23是表示根据一个说明性的实施方式的SCB的特定实例的示例性表;
图24是概括根据一个说明性的实施方式用于端点配置的示例性操作的流程图;
图25是说明根据一个说明性的实施方式的每个物理功能(PF)可以实现的虚拟功能(VF)的最大数目的示例性确定的示例性示意图;
图26是说明根据一个说明性的实施方式的每个PF的VF数目的示例性设置的示例性示意图;
图27是说明根据一个说明性的实施方式的针对每个PF的名义组合编号(NCN)和组合实例编号(CIN)的示例性设置的示例性示意图;以及
图28是说明根据一个说明性的实施方式的针对每个VF的NCN和CIN的示例性设置的示例性示意图。
具体实施方式
说明性的实施方式提供了一种机制,该机制允许由相同或不同的根联合体的两个或更多系统镜像(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-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创建这种逻辑关联来指定逻辑关联。
类似地,在图11 B中假设端点EP1 1014、EP3 1042和EP6 1054通过描述逻辑关联的用户输入、和它们的VPD信息以及由MR-PCIM1062做出的比较,来与根联合体RC1 1012相关联。这样,在图11A中示例性的所描述的例子中,端点EP2 1024经由交换机21026和交换机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中生成套接字初始化请求,并可以写入EP21824的门铃结构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)。然后,该操作终止。
如上所述,说明性的实施方式的机制允许给定的根联合体内的系统镜像使用端点的一个或多个物理或虚拟功能。通过添加这种能力,当为系统镜像提供使用这些功能的能力时,可能需要考虑各种端点的物理功能和虚拟功能的交互。例如,基于各种标准,可能需要,允许,或不允许各种功能组合。
作为一个实例,可能需要功能(物理的和/或虚拟的)彼此协同工作以完成所期待的操作。例如,可能需要密码功能和以太网功能一同工作,以提供加密业务量控制。而且,还可能存在不应被支持的功能组合,因为他们附加的功能不产生提高的功能性。此外,还可以有其它限制,其禁止所有物理功能具有相等数目的虚拟功能。
说明性的实施方式提供了将多个功能以组合方式进行注册的机制。该机制将多功能端点的功能组合通知管理组件,例如SR-PCIM或MR-PCIM。管理组件然后可以使用该信息以选择将对每个系统镜像可见的功能组合。可以通过向针对物理或虚拟功能的配置空间中各种预先定义的字段写入值,来执行管理组件的通知,其中该物理或虚拟功能提供如下信息:所支持的虚拟功能数目,所支持的功能组合,将被物理功能使用的虚拟功能的名义组合,以及用于标识哪些功能被链接在组合分组中的分组标识符。
图21是示出了根据一个说明性的实施方式的被添加到PCIe配置空间中的三个新字段的示例性表。如图21所示,三个附加字段被添加到PCIe配置空间2100。第一个是所支持的组合(combo)位图(SCB)字段2103。这个字段由端点硬件的设计者产生,并允许该设计者向软件或固件准确地报告端点的物理功能(PF)和虚拟功能(VF)将支持哪些功能组合。一般地,不是所有组合都可以被允许,这个字段向软件或固件报告哪些组合可被使用。
SCB字段2103是对软件或固件的只读字段。SCB字段2103只在端点的PF0中出现,并指定针对该端点中所有VF和PF的有效组合。
名义组合编号(NCN)字段2101是由固件或软件写入值的字段,以指定哪些名义组合(如SCB字段2103所报告的)将被用于特定的PF或VF,在该特定的PF或VF中特定的扩展配置空间被关联。基于软件想要将哪些功能组合聚合在一起,软件确定其所选择的写入NCN字段的值。这可以由软件功能性或用户接口确定,该用户接口允许用户将功能分组在一起。NCN字段存在于每个功能的配置空间内。
一旦固件或软件为VF或PF确定了NCN,则如果NCN在组合中指定了多于一个PF或VF,固件或软件指定哪些其它的VF和PF与该VF或PF相关联。可以通过例如使用被称为组合实例编号(CIN)的分组编号来指定该关联,该组合群组编号(CIN)被存储在每个功能的配置空间内的CIN字段2102中。一旦确定了哪些功能将被分组在一起,由固件或软件写CIN字段2102。功能可以具有一个功能的分组大小,此情况下,它们在CIN字段2102中具有只针对该功能的唯一的值。而且,功能可以具有大于一个功能的任何其它分组大小,此情况下,与该功能相关联的CIN字段2102中的CIN值在该分组的功能之间被共享。
图22是表示了根据一个说明性的实施方式的定义了所支持端点功能组合的所支持组合位图(SCB)的解释的示例性表。如图22所示,SCB 2206是该解释表2200的最后一列。SCB 2206中存在针对端点的功能2202-2205的每个可能组合的位位置2207-2213,而不论该组合是否被支持。SCB 2206最低有效位2207,或最低有效位中所编号的位0,表示名义组合编号(NCN)2201为0。SCB 2206的下一位2208,即位1,代表NCN为1,它是F0 2205自己(即,没有与任何其它功能分组在一起),正如针对F0 2205的列中的值1以及针对NCN 1的行中的剩余列2202-2204中的值0所表示的。
SCB 2206的位2 2209代表NCN 2201为2,它是F0 2205和F12204分组在一起,正如这些列被标为值1,以此类推。每个位2207-2213在SCB 2206中的值代表了该组合是否有效,值0代表无效,值1代表有效。因此,SCB 2206中的每个位与唯一NCN编号2201相关联,其对应于SCB 2206的位编号。
图23是表示根据一个说明性的实施方式的SCB特定实例的示例性表。如图23所示,这个端点具有3个功能2302-2304,给出了8种可能的组合,因此SCB 2305中8个位的每一个代表一个NCN2301。在此情况下SCB 2305是二进制“00011110”(即,位1、2、3和4是值1),表示NCN1、2、3和4是有效的(即,代表那些NCN的SCB位2306是值1)。
图24是概括了根据一个说明性的实施方式用于配置端点的示例性操作的流程图。如图24所示,操作开始于配置管理器读取端点的PCI配置空间,特别地,读取VF最大数目(最大VF字段)和来自PF0的SCB(步骤2410),在此情况下配置管理器是例如单根PCI管理器(SR-PCIM)。SR-PCIM确定分配给每个PF多少VF(步骤2420)。这可以由关于用户希望系统被如何配置的用户输入完成。例如,软件可以向用户显示最大VF字段,且用户可以向软件提供输入,指示其实际想要使用多少VF。考虑该输入,SR-PCIM在PCI配置空间中为每个PF设置Num VF字段(步骤2430)。
SR-PCIM确定如何分组PF和VF。这由关于用户希望系统被如何配置的用户输入完成。例如,软件可以向用户显示SCB字段,且用户可以向软件输入其想要使用的NCN以及将哪些VF和PF分组在一起。考虑该输入,SR-PCIM为每个PF和VF设置NCN和CIN(步骤2540),且操作终止。
图25说明了根据一个说明性的实施方式的每个物理功能(PF)可以实现的虚拟功能最大数目的确定。如图25所示,端点2500包括3个PF。PF0报告其可支持3个VF 2510。同样地,PF1报告其可支持2个2520,且PF2报告其可支持两个2530。可以将这些值报告给正在配置系统的用户,以确定多少VF将被实际分配,如图26所示。
图26说明了根据一个说明性的实施方式的每个PF的VF数目设置。如图26所示,考虑来自图25的结果,确定在所有情形中将使用最大VF,因此,通过软件或固件将值3写入Num VF字段2610,PF0得到了被分配的3个VF。这然后将与PF0相关联的功能扩展到3个附加VF 2640。同样地,针对PF1的Num VF字段被设置为两个VF,扩展与PF1相关联的功能2650,且针对PF2的Num VF字段被设置为两个VF,扩展与PF2相关联的功能2660。
图27说明了根据一个说明性的实施方式的针对每个PF的名义组合编号(NCN)和组合实例编号(CIN)的设置实例。如图27所示,确定将在端点2700中被允许的组合(例如,像2440中一样),且针对PF设置NCN和CIN的过程开始(例如,像2450中一样)。针对PF0,设置NCN字段2710为值1,且设置CIN字段2720为值1。设置NCN字段为值1指示这是不会与任何其它功能分组在一起的功能。
针对PF1,设置NCN字段2730为值3,且设置CIN字段2740为值2。设置NCN字段为值3指示这是将同PF0相关联的VF分组在一起的功能(例如,如图22和23中的NCN)。当为与PF0相关联的VF设置NCN字段和CIN字段时,必须使其NCN字段被设置为值3且使其CIN字段被设置为值2,以将该功能与在这些字段具有相同值的PF1分组在一起。对于PF2,设置NCN字段2750为值4,且设置CIN字段2760为值3。设置NCN字段2750为值4指示这是不会与其它任何功能分组在一起的功能。
图28说明了根据一个说明性的实施方式针对每个VF的NCN和CIN的设置实例。如图28所示,在如所示的设置了NCN和CIN之后,VF3和PF1通过其NCN和CIN字段被设置为同样的值而在逻辑上被分组在一起,如虚线2830所示。同样地,VF4和VF6被链接在一起2820,且VF5和VF7被链接在一起2810。按照这种方式,可以将PF和VF按照功能组合的方式分组在一起。
一旦完成了NCN和CIN的分配,端点便知道哪些功能是链接在一起的。例如,以太网功能知道哪些(如果有)密码功能与其相链接。此外,为了像热插/拔这类操作以及将这些功能再分配给其它SI的目的,SR-PCIM将这些功能看作为一个实体。
因此,所示出实施方式的机制提供各种用于跨多系统视图和根联合体共享端点的功能性。这些功能性包括设置存储器空间用于在根联合体和端点之间的通信中使用,提供功能组合,等等。这些各种机制均向系统添加了当需求随时间变化时进行扩展的能力。而且,这些不同的机制增强了工作负载均衡、同步维护,以及其它所需的系统能力的冗余。
请特别注意,尽管已经在全功能的数据处理系统的上下文中描述了本发明,但本领域技术人员应当理解,本发明的处理能够以指令的计算机可读介质的形式以及各种形式来分发,并且应当理解,可以等同地应用本发明,而无论实际用于执行该分发的信号承载介质的特定类型。计算机可读介质的例子包括:可记录类型介质,诸如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM;以及传输类型介质,诸如数字和模拟通信链路、使用例如射频以及光波传输的传输形式的有线或无线链路。计算机可读介质可以采用编码格式的形式,其中针对在特定数据处理系统中的实际使用,对所述编码格式进行解码。
为了示例和说明的目的,提供本发明的说明,并且本发明的说明并非旨在穷尽性的或者将本发明限制于所公开的形式。许多修改和变型对于本领域技术人员将是明显的。选择和说明这些实施方式,以便最好地解释本发明的原理和实际应用,并使得本领域的其他技术人员理解本发明,具有各种修改的各种实施方式适用于所预期的特定使用。
Claims (20)
1.一种在数据处理系统中用于配置端点以与主机系统一起使用的方法,包括:
从所述端点的PCI或者PCIe配置空间中提取配置空间组合位图,其中所述配置空间组合位图的相应位指定至少一个物理功能或虚拟功能的哪些组合是所述端点中的有效配置;
产生与所述端点相关联的一个或多个功能;
根据所述配置空间组合位图,将所述一个或多个功能中的至少一个功能与所述一个或多个功能中的至少一个其它功能相关联,由此产生功能组合;以及
使用所述功能组合来处理提供给所述端点的输入/输出请求。
2.根据权利要求1所述的方法,还包括:
从所述端点配置空间中提取虚拟功能的最大数目,其中产生与所述端点相关联的一个或多个功能包括:基于所述虚拟功能的最大数目,产生与所述端点中的一个或多个物理功能相关联的一个或多个虚拟功能,并且其中将所述一个或多个功能中的至少一个功能与所述一个或多个功能中的至少一个其它功能相关联包括:将所述一个或多个虚拟功能或所述一个或多个物理功能中的至少一个与另一个虚拟功能或另一个物理功能中的至少一个相关联。
3.根据权利要求2所述的方法,还包括:
基于所述端点配置空间中的标识的虚拟功能的最大数目,显示针对所述一个或多个物理功能的虚拟功能的最大数目;以及
基于所显示的虚拟功能的最大数目,接收指定用户所期待的所述端点的配置的用户输入。
4.根据权利要求3所述的方法,还包括:
基于所述用户输入,确定分配给所述端点中提供的所述一个或多个物理功能中的每个物理功能的虚拟功能数目;以及
基于所确定的分配给每个物理功能的虚拟功能数目,在所述一个或多个物理功能的配置空间中设置虚拟功能数目字段的值。
5.根据权利要求2所述的方法,其中所述配置空间组合位图中的每个位指定至少一个物理功能或虚拟功能的不同组合。
6.根据权利要求5所述的方法,其中设置所述配置空间组合位图中的相应位指定至少一个物理或虚拟功能的哪些组合是所述端点中的有效功能组合。
7.根据权利要求6所述的方法,其中所述配置空间组合位图中的每个位与唯一组合编号相关联,所述唯一组合编号对应于所述配置空间组合位图中位的位编号,并且其中在所述端点的物理功能的配置空间中指定所述组合编号。
8.根据权利要求2所述的方法,其中所述配置空间组合位图具有针对所述端点中提供的至少一个物理功能或虚拟功能的每个可能组合的位。
9.根据权利要求2所述的方法,还包括:
为所述端点中的至少一个物理功能或虚拟功能的每个有效组合产生组合实例编号;
将对应的组合实例编号写入与所述端点中的每个物理功能和虚拟功能相关联的配置空间,其中根据所述配置空间组合位图将所述一个或多个虚拟功能或所述一个或多个物理功能中的至少一个与另一个虚拟功能或另一个物理功能中的至少一个相关联包括:基于与所述物理功能或虚拟功能相关联的组合实例编号对所述物理功能或虚拟功能进行关联。
10.根据权利要求2的方法,还包括:
显示与所述配置空间组合位图相对应的字段;
接收用户输入,该用户输入指定要在所述端点中实现的一个或多个唯一组合编号的选择;以及
将所述一个或多个唯一组合编号写入所述端点的至少一个物理功能或虚拟功能的配置空间。
11.一种在数据处理系统中用于配置端点以与主机系统一起使用的设备,包括:
提取装置,用于从所述端点的PCI或者PCIe配置空间中提取配置空间组合位图,其中所述配置空间组合位图的相应位指定至少一个物理功能或虚拟功能的哪些组合是所述端点中的有效配置;
功能产生装置,用于产生与所述端点相关联的一个或多个功能;
关联装置,用于根据所述配置空间组合位图将所述一个或多个功能中的至少一个功能与所述一个或多个功能中的至少一个其它功能相关联,由此产生功能组合;以及
请求处理装置,用于使用所述功能组合来处理提供给所述端点的输入/输出请求。
12.根据权利要求11所述的设备,还包括:
数目提取装置,用于从所述端点配置空间中提取虚拟功能的最大数目,
其中所述功能产生装置进一步用于:基于所述虚拟功能的最大数目,产生与所述端点中的一个或多个物理功能相关联的一个或多个虚拟功能,
并且其中所述关联装置进一步用于:将所述一个或多个虚拟功能或所述一个或多个物理功能中的至少一个与另一个虚拟功能或另一个物理功能中的至少一个相关联。
13.根据权利要求12所述的设备,还包括:
显示装置,用于基于所述端点配置空间中的标识的虚拟功能的最大数目,显示针对所述一个或多个物理功能的虚拟功能的最大数目;以及
输入接收装置,用于基于所显示的虚拟功能的最大数目,接收指定用户所期待的所述端点的配置的用户输入。
14.根据权利要求13所述的设备,还包括:
确定装置,用于基于所述用户输入,确定分配给所述端点中提供的所述一个或多个物理功能中的每个物理功能的虚拟功能数目;以及
设置装置,用于基于所确定的分配给每个物理功能的虚拟功能数目,在所述一个或多个物理功能的配置空间中设置虚拟功能数目字段的值。
15.根据权利要求12所述的设备,其中所述配置空间组合位图中的每个位指定至少一个物理功能或虚拟功能的不同组合。
16.根据权利要求15所述的设备,其中设置所述配置空间组合位图中的相应位指定至少一个物理或虚拟功能的哪些组合是所述端点中的有效功能组合。
17.根据权利要求16所述的设备,其中所述配置空间组合位图中的每个位与唯一组合编号相关联,所述唯一组合编号对应于所述配置空间组合位图中位的位编号,并且其中在所述端点的物理功能的配置空间中指定所述组合编号。
18.根据权利要求12所述的设备,其中所述配置空间组合位图具有针对所述端点中提供的至少一个物理功能或虚拟功能的每个可能组合的位。
19.根据权利要求12所述的设备,还包括:
编号产生装置,用于为所述端点中的至少一个物理功能或虚拟功能的每个有效组合产生组合实例编号;
编号写入装置,用于将对应的组合实例编号写入与所述端点中的每个物理功能和虚拟功能相关联的配置空间,其中根据所述配置空间组合位图将所述一个或多个虚拟功能或所述一个或多个物理功能中的至少一个与另一个虚拟功能或另一个物理功能中的至少一个相关联包括:基于与所述物理功能或虚拟功能相关联的组合实例编号对所述物理功能或虚拟功能进行关联。
20.根据权利要求12的设备,还包括:
显示装置,用于显示与所述配置空间组合位图相对应的字段;
输入接收装置,用于接收用户输入,该用户输入指定要在所述端点中实现的一个或多个唯一组合编号的选择;以及
编号写入装置,用于将所述一个或多个唯一组合编号写入所述端点的至少一个物理功能或虚拟功能的配置空间。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/612,555 | 2006-12-19 | ||
US11/612,555 US7529860B2 (en) | 2006-12-19 | 2006-12-19 | System and method for configuring an endpoint based on specified valid combinations of functions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101206622A CN101206622A (zh) | 2008-06-25 |
CN101206622B true CN101206622B (zh) | 2010-12-08 |
Family
ID=39528960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101702143A Expired - Fee Related CN101206622B (zh) | 2006-12-19 | 2007-11-15 | 基于指定的有效功能组合配置端点的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7529860B2 (zh) |
CN (1) | CN101206622B (zh) |
Families Citing this family (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7743197B2 (en) * | 2006-05-11 | 2010-06-22 | Emulex Design & Manufacturing Corporation | System and method for virtualizing PCIe devices |
US7813366B2 (en) | 2006-12-19 | 2010-10-12 | International Business Machines Corporation | Migration of a virtual endpoint from one virtual plane to another |
US7984454B2 (en) * | 2006-12-19 | 2011-07-19 | International Business Machines Corporation | Migration of single root stateless virtual functions |
US7836238B2 (en) * | 2006-12-19 | 2010-11-16 | International Business Machines Corporation | Hot-plug/remove of a new component in a running PCIe fabric |
US7836129B2 (en) * | 2006-12-19 | 2010-11-16 | International Business Machines Corporation | Communication between host systems using a queuing system and shared memories |
US7860930B2 (en) | 2006-12-19 | 2010-12-28 | International Business Machines Corporation | Communication between host systems using a transaction protocol and shared memories |
US8271604B2 (en) | 2006-12-19 | 2012-09-18 | International Business Machines Corporation | Initializing shared memories for sharing endpoints across a plurality of root complexes |
US7991839B2 (en) * | 2006-12-19 | 2011-08-02 | International Business Machines Corporation | Communication between host systems using a socket connection and shared memories |
US7979592B1 (en) * | 2007-02-09 | 2011-07-12 | Emulex Design And Manufacturing Corporation | Virtualization bridge device |
US7752360B2 (en) * | 2007-05-16 | 2010-07-06 | Nuova Systems, Inc. | Method and system to map virtual PCIe I/O devices and resources to a standard I/O bus |
US7603500B2 (en) * | 2007-08-10 | 2009-10-13 | Dell Products L.P. | System and method for allowing coexistence of multiple PCI managers in a PCI express system |
US8776080B2 (en) * | 2007-09-25 | 2014-07-08 | Intel Corporationa | Management component transport protocol interconnect filtering and routing |
US8463881B1 (en) * | 2007-10-01 | 2013-06-11 | Apple Inc. | Bridging mechanism for peer-to-peer communication |
CH705650B1 (de) * | 2007-11-12 | 2013-04-30 | Supercomputing Systems Ag | Paralleles Computersystem, Verfahren zum parallelen Verarbeiten von Daten. |
JP5154238B2 (ja) * | 2008-01-18 | 2013-02-27 | 株式会社日立製作所 | 複合型計算機システムの管理方法及び複合型計算機システム |
US7743189B2 (en) * | 2008-05-05 | 2010-06-22 | International Business Machines Corporation | PCI function south-side data management |
US8359408B2 (en) * | 2008-06-30 | 2013-01-22 | Intel Corporation | Enabling functional dependency in a multi-function device |
JP5272265B2 (ja) | 2008-09-29 | 2013-08-28 | 株式会社日立製作所 | Pciデバイス共有方法 |
KR101566004B1 (ko) * | 2009-03-05 | 2015-11-06 | 삼성전자주식회사 | 엔드 포인트를 복수개로 분할 가능한 반도체 장치 |
WO2010114910A1 (en) * | 2009-04-01 | 2010-10-07 | Aprius, Inc. | Input/output (i/o) virtualization system |
US8521915B2 (en) * | 2009-08-18 | 2013-08-27 | Fusion-Io, Inc. | Communicating between host computers and peripheral resources in an input/output (I/O) virtualization system |
US8732349B2 (en) * | 2009-11-18 | 2014-05-20 | Fusion-Io, Inc. | Assignment of resources in an input/output (I/O) virtualization system |
US8615645B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
US8645606B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Upbound input/output expansion request and response processing in a PCIe architecture |
US8626970B2 (en) | 2010-06-23 | 2014-01-07 | International Business Machines Corporation | Controlling access by a configuration to an adapter function |
US9342352B2 (en) | 2010-06-23 | 2016-05-17 | International Business Machines Corporation | Guest access to address spaces of adapter |
US8510599B2 (en) | 2010-06-23 | 2013-08-13 | International Business Machines Corporation | Managing processing associated with hardware events |
US8572635B2 (en) | 2010-06-23 | 2013-10-29 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification |
US8650335B2 (en) | 2010-06-23 | 2014-02-11 | International Business Machines Corporation | Measurement facility for adapter functions |
US8566480B2 (en) | 2010-06-23 | 2013-10-22 | International Business Machines Corporation | Load instruction for communicating with adapters |
US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US8650337B2 (en) | 2010-06-23 | 2014-02-11 | International Business Machines Corporation | Runtime determination of translation formats for adapter functions |
US8549182B2 (en) | 2010-06-23 | 2013-10-01 | International Business Machines Corporation | Store/store block instructions for communicating with adapters |
US8639858B2 (en) | 2010-06-23 | 2014-01-28 | International Business Machines Corporation | Resizing address spaces concurrent to accessing the address spaces |
US9213661B2 (en) | 2010-06-23 | 2015-12-15 | International Business Machines Corporation | Enable/disable adapters of a computing environment |
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 |
US8505032B2 (en) | 2010-06-23 | 2013-08-06 | International Business Machines Corporation | Operating system notification of actions to be taken responsive to adapter events |
US8621112B2 (en) | 2010-06-23 | 2013-12-31 | International Business Machines Corporation | Discovery by operating system of information relating to adapter functions accessible to the operating system |
US8478922B2 (en) | 2010-06-23 | 2013-07-02 | International Business Machines Corporation | Controlling a rate at which adapter interruption requests are processed |
US8645767B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Scalable I/O adapter function level error detection, isolation, and reporting |
US8615622B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Non-standard I/O adapters in a standardized I/O architecture |
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 |
US8683108B2 (en) | 2010-06-23 | 2014-03-25 | International Business Machines Corporation | Connected input/output hub management |
US8468284B2 (en) | 2010-06-23 | 2013-06-18 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification to a guest operating system |
US8504754B2 (en) | 2010-06-23 | 2013-08-06 | International Business Machines Corporation | Identification of types of sources of adapter interruptions |
US9195623B2 (en) | 2010-06-23 | 2015-11-24 | International Business Machines Corporation | Multiple address spaces per adapter with address translation |
US8327536B2 (en) | 2010-06-30 | 2012-12-11 | Apple Inc. | Method of manufacturing high-speed connector inserts and cables |
JP5241964B2 (ja) | 2010-06-30 | 2013-07-17 | アップル インコーポレイテッド | 能動的ケーブル用の回路網 |
US9112310B2 (en) | 2010-06-30 | 2015-08-18 | Apple Inc. | Spark gap for high-speed cable connectors |
US8447891B2 (en) * | 2011-01-11 | 2013-05-21 | International Business Machines Corporation | Dynamically assigning virtual functions to client applications |
US8966134B2 (en) | 2011-02-23 | 2015-02-24 | Apple Inc. | Cross-over and bypass configurations for high-speed data transmission |
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 |
US8918568B2 (en) * | 2011-05-06 | 2014-12-23 | International Business Machines Corporation | PCI express SR-IOV/MR-IOV virtual function clusters |
US8751713B2 (en) * | 2011-05-06 | 2014-06-10 | International Business Machines Corporation | Executing virtual functions using memory-based data in a PCI express SR-IOV and MR-IOV environment |
US8645600B2 (en) | 2011-11-10 | 2014-02-04 | International Business Machines Corporation | Configuring expansion component interconnect (‘ECI’) physical functions on an ECI device in a computing system |
US9411654B2 (en) | 2011-12-16 | 2016-08-09 | International Business Machines Corporation | Managing configuration and operation of an adapter as a virtual peripheral component interconnect root to expansion read-only memory emulation |
US9311127B2 (en) | 2011-12-16 | 2016-04-12 | International Business Machines Corporation | Managing configuration and system operations of a shared virtualized input/output adapter as virtual peripheral component interconnect root to single function hierarchies |
US9626207B2 (en) * | 2011-12-16 | 2017-04-18 | International Business Machines Corporation | Managing configuration and system operations of a non-shared virtualized input/output adapter as virtual peripheral component interconnect root to single function hierarchies |
US9047208B1 (en) * | 2012-12-10 | 2015-06-02 | Qlogic, Corporation | Method and system of configuring virtual function in peripheral devices |
US9720720B2 (en) * | 2015-02-25 | 2017-08-01 | Red Hat Israel, Ltd. | Dynamic management of assignment and number of virtual functions on SR-IOV capable hypervisors |
US11809799B2 (en) * | 2019-06-24 | 2023-11-07 | Samsung Electronics Co., Ltd. | Systems and methods for multi PF emulation using VFs in SSD controller |
US11609866B2 (en) * | 2020-01-02 | 2023-03-21 | Texas Instruments Incorporated | PCIe peripheral sharing |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1340761A (zh) * | 2000-08-24 | 2002-03-20 | 国际商业机器公司 | 为达到最优性能对输入输出适配器设备编程的方法 |
CN1601498A (zh) * | 2003-09-25 | 2005-03-30 | 国际商业机器公司 | 存储器映射输入/输出构造中存储器资源的基于位置的分配 |
CN1624674A (zh) * | 2003-11-06 | 2005-06-08 | 戴尔产品公司 | Pci express链路的动态重新配置 |
JP2005166028A (ja) * | 2003-11-11 | 2005-06-23 | Ricoh Co Ltd | データ転送システム、画像形成システム及びデータ転送方法 |
WO2005091154A1 (en) * | 2004-03-19 | 2005-09-29 | Koninklijke Philips Electronics N.V. | Simulation circuit of pci express endpoint and downstream port for a pci express switch |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US20020194407A1 (en) * | 2001-04-25 | 2002-12-19 | Kim Hyon T. | Maintaining fabric device configuration through dynamic reconfiguration |
US20040019729A1 (en) * | 2002-07-29 | 2004-01-29 | Kelley Richard A. | Buffer management and transaction control for transition bridges |
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 |
US7225287B2 (en) * | 2005-06-01 | 2007-05-29 | Microsoft Corporation | Scalable DMA remapping on a computer bus |
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 |
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 |
US20080034147A1 (en) * | 2006-08-01 | 2008-02-07 | Robert Stubbs | Method and system for transferring packets between devices connected to a PCI-Express bus |
-
2006
- 2006-12-19 US US11/612,555 patent/US7529860B2/en not_active Expired - Fee Related
-
2007
- 2007-11-15 CN CN2007101702143A patent/CN101206622B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1340761A (zh) * | 2000-08-24 | 2002-03-20 | 国际商业机器公司 | 为达到最优性能对输入输出适配器设备编程的方法 |
CN1601498A (zh) * | 2003-09-25 | 2005-03-30 | 国际商业机器公司 | 存储器映射输入/输出构造中存储器资源的基于位置的分配 |
CN1624674A (zh) * | 2003-11-06 | 2005-06-08 | 戴尔产品公司 | Pci express链路的动态重新配置 |
JP2005166028A (ja) * | 2003-11-11 | 2005-06-23 | Ricoh Co Ltd | データ転送システム、画像形成システム及びデータ転送方法 |
WO2005091154A1 (en) * | 2004-03-19 | 2005-09-29 | Koninklijke Philips Electronics N.V. | Simulation circuit of pci express endpoint and downstream port for a pci express switch |
Also Published As
Publication number | Publication date |
---|---|
CN101206622A (zh) | 2008-06-25 |
US7529860B2 (en) | 2009-05-05 |
US20080147898A1 (en) | 2008-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101206622B (zh) | 基于指定的有效功能组合配置端点的系统和方法 | |
CN101206632B (zh) | 用套接字连接和共享存储器在主机系统间通信的系统和方法 | |
CN101206634B (zh) | 用于初始化共享存储器的系统和方法 | |
CN101206633B (zh) | 用事务协议和共享存储器在主机系统间通信的系统和方法 | |
CN100583046C (zh) | 用于单根无状态虚拟功能迁移的系统和方法 | |
CN101206629B (zh) | 在运行的PCIe架构中热插/拔新组件的系统和方法 | |
CN101206623B (zh) | 迁移虚拟端点的系统和方法 | |
CN101206621B (zh) | 迁移无状态虚拟功能的系统和方法 | |
CN101165663B (zh) | 使用高速缓存的地址转换与i/o适配器进行通信的装置、方法 | |
CN100565478C (zh) | 管理访问数据处理系统的存储器的地址转换的方法和装置 | |
CN101165667B (zh) | 用于在数据处理系统中管理地址转换的方法和装置 | |
CN101165664B (zh) | 用于在数据处理系统中管理地址转换的方法和装置 | |
CN101165666B (zh) | 在数据处理系统中建立地址转换的方法和装置 | |
JP5541275B2 (ja) | 情報処理装置および不正アクセス防止方法 | |
US20130151750A1 (en) | Multi-root input output virtualization aware switch | |
WO2008074639A1 (en) | System and method for communication between host systems using a queuing system and shared memories | |
JP4723470B2 (ja) | 計算機システムおよびそのチップセット | |
US11928070B2 (en) | PCIe device | |
TWI791134B (zh) | 通信裝置、資訊處理系統及通信方法 |
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: 20101208 |