2.5 虚拟通道(VC)机制
虚拟通道(VC)机制提供了对可以在整个结构中传输使用TC(流量类别)标签区分的流量的支持。VC的基础是独立的结构资源(队列/缓冲区及其相关的控制逻辑)。这些资源被用来在具有完全独立的流控制的不同VC之间跨链路移动信息。这对于解决流控制引起的阻塞问题至关重要,其中单个流量可能为系统中的所有流量创建瓶颈。
通过将具有特定TC标签的数据包映射到相应的VC,将流量与VC关联起来。VC和多功能虚拟通道(MFVC)机制允许灵活地将TC映射到VC上。在最简单的形式中,TC可以一对一地映射到VC上。为了允许性能/成本权衡,PCI Express提供了将多个TC映射到单个VC的能力。第2.5.2节涵盖了TC到VC映射的详细信息。
当一个或多个TC与由虚拟通道识别(VC ID)指定的物理VC资源关联时,就会建立一个虚拟通道。这个过程由配置软件控制,如第6.3节、第7.9.1节和第7.9.2节所述。
支持默认的TC0/VC0对之外的TC和VC是可选的。TC0与VC0的关联是固定的,即“硬连线”的,并且必须由所有组件支持。因此,baseline TC/VC设置不需要任何VC特定的硬件或软件配置。为了确保互操作性,不实现可选的虚拟通道能力结构或多功能虚拟通道能力结构的组件必须遵守以下规则:
- 请求者只能生成带有TC0标签的请求。(请注意,如果请求者使用除TC0之外的TC标签发起请求,那么这些请求可能会被实现扩展VC能力并应用TC过滤的链路另一侧的组件视为格式错误。)
-
完成者必须接受带有非TC0标签的请求,并且必须保留TC标签。也就是说,它生成的任何完成事务都必须具有与请求标签相同的TC标签。
-
Switch必须将所有TC映射到VC0,并且必须转发所有事务,而不管TC标签是什么。
包含能够生成非TC0标签请求的功能的设备必须实现适当的VC(虚拟通道)或MFVC(多功能虚拟通道)能力结构(如适用),即使它只支持默认的VC。示例功能类型包括端点和根端口。这是为了能够启用超出默认配置的TC到VC的映射。它必须根据VC和MFVC能力结构的软件编程遵循TC/VC映射规则。
图2-45阐述了虚拟通道的概念。从概念上讲,通过VC流动的流量在传输端被复用到一个共同的物理链路资源上,并在接收端被解复用到单独的VC路径上。
在交换机内部,每个虚拟通道都需要专用的物理资源。图2-46从概念上展示了交换机内(如图2-45所示)支持上游方向流量流动所需的VC资源。
多功能设备(MFD)可以实现类似于交换机中的一部分虚拟通道资源,目的是为了管理来自不同功能到设备上游出口端口的上游请求的服务质量(Quality of Service,QoS)。
2.5.1 虚拟通道识别(VC ID)
PCI Express端口可以支持1到8个虚拟通道 - 每个端口独立配置/管理,因此允许实现根据使用模型特定要求变化每个端口支持的虚拟通道数量。 这些虚拟通道使用VC ID机制唯一标识。
请注意,虽然数据链路层协议(DLLPs)包含用于流量控制计算的VC ID信息,但事务层包(TLPs)则不包含。为了流量控制计算的目的,将TLPs与VC ID关联是在链路的每个端口使用TC到VC映射完成的,如第2.5.2节中讨论的。
所有支持超过VC0的端口必须根据第7.9.1节的定义至少提供一个VC能力结构。多功能设备(MFD)允许实现第7.9.2节中定义的MFVC(多功能虚拟通道)能力结构。对于仅支持默认TC0/VC0配置的端口,提供这些扩展结构是可选的。配置软件负责为链路的两侧端口配置匹配数量的VC。这是通过扫描层次结构并使用与支持多于默认VC0的端口相关联的VC或MFVC能力寄存器来完成的,以建立链路的VC数量。在端口内分配VC ID到VC硬件资源的规则如下:
- VC ID分配必须在每个端口内唯一 - 相同的VC ID不能分配给同一端口内的不同VC硬件资源。
- VC ID分配必须在链路两侧的两个端口上相同(在VC数量及其ID方面匹配)。
如果MFD实现了MFVC能力结构,其VC硬件资源与其功能(Functions)的任何VC能力结构相关联的VC硬件资源是不同的。VC ID的唯一性要求(上述第一点)对MFVC和任何VC能力结构仍然单独适用。此外,VC ID跨链路匹配要求(上述第二点)适用于MFVC能力结构,但不适用于功能(Functions)的VC能力结构。
- VC ID 0被分配并固定给默认VC。
2.5.2 TC到VC映射
每个支持的流量类别(Traffic Class)都必须映射到一个虚拟通道上。TC0到VC0的映射是固定的。除了TC0之外的TC到VC的映射是系统软件特定的。然而,映射算法必须遵守以下规则:
- 一个或多个TC可以映射到一个VC上。
- 任何端口或端点功能上,一个TC不能映射到多个VC上。
- 链路两侧的端口上TC/VC映射必须相同。
表2-41提供了TC到VC映射的示例。
图2-47提供了在几种不同链路配置中TC(流量类别)到VC(虚拟通道)映射的图形说明。有关TC/VC的额外考虑,请参考第6.3节。
2.5.3 VC和TC规则
以下是与TC/VC机制相关的关键规则的总结:
- 所有设备必须支持通用输入/输出流量类别,即TC0,并且必须实现默认的VC0。
- 每个虚拟通道(VC)都有独立的流量控制。
- 不同TC之间不需要排序关系。
- 不同VC之间不需要排序关系。
- 交换机的点对点能力适用于交换机支持的所有虚拟通道。
- 多功能设备(MFD)在不同功能之间的点对点能力适用于MFD支持的所有虚拟通道。
- 具有未映射到入口端口的任何已启用虚拟通道(VC)的流量类别(TC)的事务被视为畸形事务层数据包(TLP)由接收设备处理。
- 对于交换机,具有未映射到目标出口端口的任何已启用VC的TC的事务被视为畸形TLP。
- 对于根端口,具有未映射到目标根复合体(RCRB)的任何已启用VC的TC的事务被视为畸形TLP。
- 对于具有多功能虚拟通道(MFVC)能力结构的多功能设备(MFD),任何具有未映射到MFVC能力结构中的已启用VC的TC的事务被视为畸形TLP。
- 交换机必须支持每个端口独立的TC/VC映射配置。
- 根复合体必须支持每个RCRB、相关根端口和任何RCiEPs独立的TC/VC映射配置。
- 更多关于VC和TC机制的细节,包括配置、映射和仲裁,请参阅第6.3节。