流量类别(TC)和虚拟信道(VC)
TC 是数据包的头(header)内的一个3比特的字段。用来将流量分成8种(TC0 ~ TC7)不同的类别,本地应用软件和系统软件根据性能要求确定某个TLP使用什么样的TC标志。
VC 是物理缓冲区,它通过使用发送和接收虚拟信道缓冲区,提供一种在链路上实现多个独立数据流的方法。PCIe设备可以实现最多8个VC缓冲区(VC0 ~ VC7)。并且必须要实现 VC0,最通用的服务类别。
设备或交换器需要实现TC/VC映射逻辑,通过该逻辑形成对应关系,把给定的TC号的TLP使用特定的VC号的缓冲区通过链路发送出去。多个TC可以对应一个VC,因而可以使用有限数目的VC缓冲区来降低设备成本。系统软件通过配置寄存器设置 TC/VC 的映射。应用软件确定TLP的TC标志以及设置满足性能要求的TC/VC的映射关系。最简单的情况可以将 TC/VC 映射寄存器设置为TC到VC的一对一关系。
考虑上图的例子,我们假设端点(Endpoint)发送TLP到交换器,那么图中的发送设备A看做端点(Endpoint)的端口,接收设备B看作交换器的一个下游端口,接收来自端点的TLP。我们将设备A中的TC/VC映射寄存器设置为,TC2 ~ TC0类别的TLP映射到VC0,TC3 ~ TC7类别的TLP映射到VC1。接收设备B中的 TV/VC 映射寄存器也需要配置为与设备A同样的映射方式。在设备A和设备B中,启用了相同编号的VC缓冲区,即 VC0 和 VC1。
如果设备A需要发送一个 TC 标志为7的TLP,和另一个 TC 标志为0的TLP,那么在设备A中,这两个数据包分别被放入 VC1 缓冲区和 VC0 缓冲区。如果我们将 VC1 的优先级设置比 VC0 高,那么仲裁器优先将选择 VC1 缓冲区中的 TC7 TLP转发到链路上。当这些 TLP 到达接收设备B时,TC/VC 映射逻辑解码每个TLP中的TC标志,将 TC7 TLP放入 VC1 缓冲区,将 TC0 的TLP放入 VC0 缓冲区。通过 TC/VC 映射和 优先级的设置。便可以将数据包以不同的优先级传输。这样便可以将一条物理链路(实际的链路),变成两条优先级不同的虚拟链路。而在同一虚拟信道缓冲区内,以相同的优先级,按先后次序流动。
网友评论