本文主要是介绍SR-IOV Architectural Overview,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Single Root I/O Virtualization and Sharing -- PCIE spec 5.0, chapter 9
服务器项目遇到SRIOV功能,翻spec看看。
Single Root I/O Virtualization and Sharing (SR-IOV) 可以使多个系统映像(System Images, SI)共享PCI硬件资源,提升资源利用率。下面是通用平台配置框图。(Generic Platform Configuration)
为了在不需要修改硬件的情况下提升硬件资源利用,可以执行多个SI. 在硬件和SI之间插入一个中间层,叫Virtualization Intermediary (VI). VI管理所有的底层硬件,对硬件进行抽象化处理,使得从SI的角度来看各自拥有了独立的虚拟系统。每个SI可用的实际硬件资源会随工作负载或特定客户策略而有所不同。尽管此方法在大多数环境下运行良好,但是I / O密集型工作负载可能会导致性能显著下降。VI必须拦截和处理每个I / O操作(inbound or outbound),这会大量增加平台资源的开销。(Generic Platform Configuration with a VI and Multiple SI)
SR-IOV提供了减少这些平台资源开销的工具。 SR-IOV的优点是:
1. 避免VI承担大量数据移动的处理的能力,如在DMA, 内存空间访问,中断处理方面等。避免VI对每个I/O操作的拦截和处理能显著改善应用程序和平台的性能。
The ability to eliminate VI involvement in main data movement actions - DMA, Memory space access, interrupt processing, etc. Elimination of VI interception and processing of each I/O operation can provide significant application and platform performance improvements.
2. 通过Single Root PCI Manager (SR-PCIM)来控制SR-IOV资源配置和管理的标准化方法。
Standardized method to control SR-IOV resource configuration and management through Single Root PCI Manager (SR-PCIM).
3. 通过在设备中预配大量I / O Functions来降低硬件要求和相关成本的能力。
The ability to reduce the hardware requirements and associated cost with provisioning potentially a significant number of I/O Functions within a device.
4. 能够将SR-IOV与其他I / O虚拟化技术集成在一起,例如地址转换服务(ATS),地址转换和保护表(ATPT)技术以及中断重新映射技术,以创建强大、完整的I / O虚拟化解决方案。
The ability to integrate SR-IOV with other I/O virtualization technologies such as Address Translation Services(ATS), Address Translation and Protection Table (ATPT) technologies, and interrupt remapping technologies to create robust, complete I/O virtualization solutions.
(Generic Platform Configuration with SR-IOV and IOV Enablers)
SR-IOV通用平台配置由以下其他功能元素组成:(水平有限,把原文贴在后面)
1. SR-PCIM负责SR-IOV Extended Capability配置,管理Physical Functions和Virtual Functions,以及处理相关的错误事件和整体设备控制(例如电源管理和热插拔服务)的软件。
SR-PCIM - Software responsible for the configuration of the SR-IOV Extended Capability, management of Physical Functions and Virtual Functions, and processing of associated error events and overall device controls such as power management and hot-plug services.
2. 可选Translation Agent (TA) - TA是负责将PCIe事务中的地址转换为关联的平台物理地址的硬件或硬件和软件的组合。一个TA可能包含一个 Address Translation Cache (ATC),以加速转换表的访问。 TA还可以支持Address Translation Services(ATS),该服务使PCIe Function能够获得对相关存储器进行DMA访问的先验地址转换。
Optional Translation Agent (TA) - A TA is hardware or a combination of hardware and software responsible for translating an address within a PCIe transaction into the associated platform physical address. A TA may contain an Address Translation Cache (ATC) to accelerate translation table access. A TA may also support Address Translation Services (ATS) which enables a PCIe Function to obtain address translations a priori to DMA access to the associated memory. See Chapter 10 for more details on ATS benefits and operation.
3. 可选Address Translation and Protection Table (ATPT) - ATPT包含由TA访问以处理PCIe请求(DMA读取,DMA写入或中断请求)的地址转换集。
- 在PCIe中,中断被视为内存写入操作。 通过Requester Identifier 和PCIe事务中包含的地址的组合,可以将中断路由到对关联的I / O Function透明的任何目标(例如,处理器内核)。
- DMA读和写请求通过路由ID和PCIe事务中包含的地址的组合进行转换。
Optional Address Translation and Protection Table (ATPT) - An ATPT contains the set of address translations accessed by a TA to process PCIe requests - DMA Read, DMA Write, or interrupt requests.
- In PCIe, interrupts are treated as memory write operations. Through the combination of a Requester Identifier and the address contained within a PCIe transaction, an interrupt can be routed to any target (e.g., a processor core) transparent to the associated I/O Function.
- DMA Read and Write requests are translated through a combination of the Routing ID and the address contained within a PCIe transaction.
4. 可选Address Translation Cache (ATC) - ATC可以存在于平台内的两个位置-TA内,可以集成在RC内或RC上方;或PCIe设备内。在RC内,ATC可以加快翻译查找的速度。在设备内,ATC通过ATS技术来实现。指示其包含已转换地址的PCIe事务可绕过平台的ATC,以提高性能而不会影响ATPT技术带来的提升。
Optional Address Translation Cache (ATC) - An ATC can exist in two locations within a platform - within the TA which can be integrated within or sit above an RC - or within a PCIe Device. Within an RC, the ATC enables accelerated translation look ups to occur. Within a Device, the ATC is populated through ATS technology. PCIe transactions that indicate they contain translated addresses may bypass the platform’s ATC in order to improve performance without compromising the benefits associated with ATPT technology.
5. 可选Access Control Services (ACS) - ACS在PCI Express拓扑中定义了一组控制点,以确定是否应正常路由,阻塞或重定向TLP。在支持SR-IOV的系统中,ACS可用于防止分配给VI或不同SI的设备Functions相互通信或与对等设备通信。重定向可以允许Translation Agent 在做出对等转发决定之前翻译Upstream memory TLP addresses. 可选的ACS P2P Egress Control可以提供选择性阻塞。ACS必须与ATS进行交互。
Optional Access Control Services (ACS) - ACS defines a set of control points within a PCI Express topology to determine whether a TLP should be routed normally, blocked, or redirected. In a system that supports SR-IOV, ACS may be used to prevent device Functions assigned to the VI or different SIs from communicating with one another or a peer device. Redirection may permit a Translation Agent to translate Upstream memory TLP addresses before a peer-to-peer forwarding decision is made. Selective blocking may be provided by the optional ACS P2P Egress Control. ACS is subject to interaction with ATS.
6. Physical Function (PF) - PF是一种支持SR-IOV Extended Capability的PCIe Function,并且SR-PCIM、VI或SI均可访问。
Physical Function (PF) - A PF is a PCIe Function that supports the SR-IOV Extended Capability and is accessible to an SR-PCIM, a VI, or an SI.
7. Virtual Function (VF) - VF是SI可以直接访问的“轻量级” PCIe Function.
- 最少,与Function的主要数据移动相关的资源SI可以访问。配置资源应仅限于受信任的软件组件,例如VI或SR-PCIM.
- VF可以由不同的SI串行共享(即,可以将VF分配给一个SI,然后将其重置再分配给另一个SI.)
- VF可以从一个PF迁移到另一个PF。迁移过程本身不在本规范的范围之内,但可以通过本规范中定义的配置控制来简化。
Virtual Function (VF) - A VF is a “light-weight” PCIe Function that is directly accessible by an SI.
- Minimally, resources associated with the main data movement of the Function are available to the SI. Configuration resources should be restricted to a trusted software component such as a VI or SR-PCIM.
- A VF can be serially shared by different SI, (i.e., a VF can be assigned to one SI and then reset and assigned to another SI.)
- A VF can be optionally migrated from one PF to another PF. The migration process itself is outside the scope of this specification but is facilitated through configuration controls defined within this specification.
8. 与PF关联的所有VF必须与PF具有相同的设备类型(例如,相同的网络设备类型或相同的存储设备类型。)
All VFs associated with a PF must be the same device type as the PF, (e.g., the same network device type or the same storage device type.)
下面将PCIe Device 和PCIe SR-IOV capable device进行对比。
上图是multi-Function PCIe Device实例,具有如下特征:
1. PCIe Device共享相同的PCIe Link. 被所有Functions共享的Link和PCIe functionnality通过Function 0进行管理。
- 虽然上图仅描述了三个Functions, 但通过使用Alternative Routing Identifier(ARI) capability,一个PCIe Device最多可以支持256个Functions.
- 所有Functions都使用通过PCI枚举过程获取的单个Bus Number.
2. 在此示例中,每个PCIe Function都支持 ATS capability,因此具有关联的ATC来管理ATS获得的转换地址。
3. 每个PCIe Function都有一组唯一的物理资源,包括单独的配置空间和BAR.
4. 每个PCIe Function都可以分配给一个SI, 为防止一个SI影响另一个SI,VI应拦截并处理所有PCIe配置操作。
如此图所示,硬件资源随所提供Functions的数量而扩展。根据设备的复杂性和尺寸,每个Function的增量成本将有所不同。为了降低增加的硬件成本,可以使用SR-IOV构建设备以支持单个PF和多个VF,如下图所示(SR-IOV Single PF Capable Device).
1. PF符合PCIe规范。
- 常规复位之后SR-IOV capabilities应该disabled.
- 要发现PF及其关联的VF支持的页面大小,请读取“Supported Page Sizes”配置字段。
2. PF命名法PF M表示PF位于Function M.
3. VF命名法VF M,N表示与PF M相关联的第N个VF,VF从1开始编号。
4. 每个VF与PF共享部分公共配置空间字段。 (即,这些字段适用于所有VF并通过单个PF控制。共享减少了实现每个VF的硬件资源要求。)
- VF使用与PF相同的配置机制和header types.
- 与给定PF关联的所有VF共享一个VF BAR集,并共享SR-IOV extended capability中的一个VF Memory Space Enable (MSE) bit,该功能控制VF Memory space访问权限。即,如果VF MSE位为“ Clear”,则将禁用为所有VFs分配的内存映射空间。
- InitialVFs和TotalVFs字段用于发现可以与PF关联的VF的最大数量。
- 如果设备不支持VF迁移,则TotalVF和InitialVF应包含相同的值。如果设备支持VF迁移,则在读取TotalVF时,PF必须返回可以分配给PF的VF数量。对于这样的设备,当读取InitialVF时,PF必须返回分配给PF的VF的初始数量。
- 每个Function,PF和VF均分配有唯一的Routing ID. 每个VF的Routing ID是使用其关联PF的Routing ID和该PF的SR-IOV Extended Capability中的字段确定。
- 假定所有PCIe和SR-IOV配置访问都是通过可信软件组件(例如VI或SR-PCIM)进行的。
- 每个VF包含交付Function-specific services所需的一组非共享物理资源(例如,工作队列,数据缓冲区等资源)。SI可以直接访问这些资源,而无需VI或SR-PCIM 干涉。
- 一个或多个VF可以被分配给每个SI.
- 尽管此示例说明了PF中的单个ATC,但是是否存在任何ATC是可选的。另外,本规范并不排除实现支持设备内每个VF的ATC.
- Internal routing is implementation specific.
- 尽管存在许多有关PF操作的潜在使用模型,但常见的使用模型是使用PF严格在VI的控制下引导设备或平台。一旦配置了SR-IOV Extended Capability,就可以将VF分配给单个SI,则PF将承担更多的监督作用。例如,PF可用于管理设备特定的功能,例如对每个VF的内部资源分配,对共享资源(例如PCIe Link或Function-specific Link,例如网络或存储链接)的VF仲裁等。
在下一个示例中,设备支持多个PF,每个PF都有自己的一组VF. (SR-IOV Multi-PF Capable Device)
1. 可以为每个PF分配零个或多个VF。对于设备内的所有PF,每个PF的VF数量不必相同。
2. ARI Extended Capability使Functions可以分配给Function Groups,并定义如何配置Function Group仲裁。PF和VF可以分配给Function Groups,并使用相关的仲裁功能。但是,在每个Function Group中,仲裁仍然是特定于实现(implementation specific)的。
3. PF和VF之间的内部路由是特定于实现(implementation specific)的。
4. 对于某些使用模型,所有PF可能是相同的设备类型。(例如,所有PF交付相同的网络设备或全部交付相同的存储设备功能。)对于其他使用模型,每个PF可能代表不同的设备类型;(例如,在图中,一个PF可能代表网络设备,而另一个PF代表加密设备。)
- 在设备类型之间存在使用模型依赖关系的情况下(例如,对于每个VF是网络设备类型),每个SI也需要一个VF,它是加密设备类型。SR-IOV Extended Capability提供了一种指示这些依赖关系的方法。
从前面的示例中可以看出,PF和VF的数量可以根据使用模型要求而变化。 为了支持各种选项,SR-IOV设备可以支持以下数量以及PF和VF的混合:
1. 使用Alternative Routing Identifier (ARI) capability,设备最多可支持256个PF. Function Number分配是特定于实现的,选择范围覆盖整个256个功能编号空间。
2. PF只能与Device’s captured Bus Number相关联,如下图所示。(SR-IOV Device with Multiple Bus Numbers)
3. SR-IOV Devices可能消耗多个Bus Number。VF可以与Device’s Bus Number range的任何Bus Number相关联 - 捕获的Bus Number加上任何其他软件配置的Bus Number.
- 使用多个Bus Numbers可使设备支持非常多的VF - Routing ID space的大小减去用于标识中间总线的位为止。
- 如果软件没有配置足够的附加Bus Numbers,则为附加Bus Numbers实现的VF可能不可见。
最后一个示例,设备实现可以混合任意数量的Functions,PFs和VFs. (SR-IOV Device with a Mixture of Function Types)
1. 每个设备必须包含Function 0. Function 0可以是PF(即, 它可以包括SR-IOV extended capability).
2. 任何Functions组合都可以与captured Bus Number关联。
- 非VF只能与captured Bus Number关联。
3. 如果支持ARI Extended Capability,则可以将Functions分配给Function Groups. 如果不支持ARI Extended Capability,Functions仍可以使用Function arbitration capabilities.
这篇关于SR-IOV Architectural Overview的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!