PCIE6.0协议学习小记-Flit_Mode

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

PCI Express (Peripheral Component Interconnect Express),通常简写为 PCIe,是一种高速串行计算机扩展总线标准。它被设计用来替代旧的PCI、PCI-X和AGP总线标准,广泛应用于个人电脑、服务器、嵌入式系统等设备中。PCIe的主要目的是提供一个更高性能、更低延迟的数据传输解决方案,支持更高效的电源管理,并允许热插拔(即在不关闭系统的情况下添加或移除硬件组件)。

PCIe接口通过一系列的连接通道(被称为“lanes”)来传输数据,每个lane由两对线路组成:一对用于发送数据,另一对用于接收数据。根据不同的配置,PCIe卡可以使用单个lane (x1) 到最大32个lane (x3/XMLSchema 32,但在实际应用中很少见)。目前,PCIe技术已经发展到了第五代(PCIe 5.0),其数据传输速率相较于初代有了显著提高。例如,PCIe 4.0 x16配置可以提供高达64 GB/s的双向数据传输速度。

PCIe常用于连接各种高性能组件,如显卡、固态硬盘、网卡、声卡以及其他需要高速数据传输的外围设备。随着技术的进步,PCIe规范也在不断更新以满足日益增长的带宽需求和性能要求。


PCIE6.0-Flit_Mode学习

一、新增的Flit模式是什么?

Flit Mode是PCIe 6.0中新增的一种全新的数据传输机制,和之前有很大的改变。它支持更高的数据传输速率、改进的信号完整性和更高效的带宽利用。数据被分割成固定大小的数据包,成为Flow Control Units(FLITs),每个FLIT固定大小为256字节。

Flit Mode的主要特点和优势包括:
1、固定大小的数据包:使用固定大小的FLIT可以简化数据链路层的设计,并提高带宽效率,因为不需要额外的开销来处理不同大小的TLP头部。
2、内置错误检测与纠正:每个FLIT都包含自己的循环冗余校验(CRC),这意味着不再需要像前几代那样为TLP和DLLP单独提供CRC字节。此外,轻量级前向纠错(FEC)被用来降低误码率,同时保持低延迟。
3、支持高数据速率:PCIe 6.0将数据速率提升到了64GT/s,并且由于采用了PAM-4编码,使得在高频率下信号更加稳定。Flit Mode配合轻量级FEC解决了PAM-4带来的误码问题,从而允许系统在不显著增加延迟的情况下达到更高的可靠性。
4、减少延迟:尽管FEC通常会增加延迟,但PCIe 6.0使用的轻量级FEC仅引入了很小的延迟(如2ns到32ns不等,取决于链路宽度),这使得总往返时延显著降低至约25ns左右。
5、新的电源管理状态L0p:这是专门为Flit Mode设计的一种新的低功耗状态,可以在不影响数据流的情况下动态调整链路宽度,以节省电力。

二、Flit Mode 结构组成是怎么样的?

1.Flit 组成和Flit Type

在这里插入图片描述当使用Flit Mode时,在PCIE6.0协议4.2.3中说由 236B TLP + 6BDLP+ 8B CRC + 6B ECC 共 256B 一个Flit作为最小单位进行传输。
而Flit Type又分为三类,分别为Idle Flit、Nop Flit、Payload Flit
在这里插入图片描述

2.Flit 中TLP包的 组成结构

在这里插入图片描述
在这里插入图片描述
但所有的Flit Mode的TLP包中的第一个DW的结构都是一样的,例如
在这里插入图片描述

3.Type【7:0】

取消了Fmt字段,采用位宽更快一点的Type来指示TLP包类型
下面截取了部分Type字段不同的定义时指定的TLP包类型(共可有256种)
在这里插入图片描述

4.TC【2:0】和OHC【4:0】

原来的TC字段也移了一下位置,不过依旧是3个bit位宽,
OHC简介:在PCIe 6.0中新增了OHC(Orthogonal Header Content )字段来指示存在编码为“正交标头内容”,不同的OHC代表了不同的TLP header格式,不同的OHC按照OHC-A/B/C/E顺序依次排布,它允许扩展TLP头以支持新的功能和特性,而无需改变现有TLP格式的基本结构。不同的OHC类型代表了不同的附加信息或控制指令,有助于提高协议的灵活性和可扩展性。

当OHC【4:0】=0 0000b=当前没有OHC相关内容,一般用于Nop TLP
当OHC【4:0】=x xxx1b=这表示当前存在OHC-A类型。具体的细分(A1至A5)则由剩余的比特位进一步定义。

OHC-A1:用于明确的内存请求,特别是那些需要使用字节启用(Byte Enables)和/或进程地址空间标识符(PASID, Process Address Space ID)的情况。
OHC-A2:专门针对I/O请求设计,同样要求使用字节启用。这种类型的OHC增强了对I/O操作的支持,允许在进行I/O读写时指定具体的字节范围,这对于实现高效的数据传输至关重要。
OHC-A3:用于配置请求,这也要求使用字节启用。配置请求通常涉及设备配置空间的访问,通过添加字节启用的支持,可以实现更精确的配置操作,比如仅更新配置空间中的特定部分而不影响其他区域。
OHC-A4:用于需要目的地段(Destination Segment)和/或PASID的ID路由消息。此类型特别适用于多段系统架构或多租户环境,其中数据包可能需要被路由到特定的段或基于PASID进行处理,以确保数据安全和服务隔离。
OHC-A5:用于完成请求,也就是Completion

当OHC【4:0】=x xx1xb=这里指的是OHC-B的存在,用于携带TPH相关信息。(发送TPH TLP时需要携带OHC-B)
当OHC【4:0】=x x1xxb=当前为OHC-C
当OHC【4:0】=0 0xxxb=当前没有OHC出口
当OHC【4:0】=0 1xxxb=当前为OHC-E1
当OHC【4:0】=1 0xxxb=当前为OHC-E2
当OHC【4:0】=1 1xxxb=当前为OHC-E4

需要注意的是:
对于特定TLP类型,发送器必须包含特定的OHC内容。接收者必须检查是否违反这些规则。如果接收方确定请求违反了,该请求必须作为不支持的请求处理(也就是返回UR)。
不同的OHC时,代表不同类型的TLP请求,所以的结构也不一样,例如:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.TS【2:0】

新增了TS字段(Trailer Size ),
当TS【2:0】=000b时。表示当前TLP后面没有跟随任何Trailer。
当TS【2:0】=001b时。表示当前TLP包含了一个双字(DW, Double Word,4字节)长度的ECRC。ECRC用于提供额外的数据完整性检查。
当TS【2:0】=010b时。这些值表示存在一个DW长度的Trailer,但具体内容被保留,可能根据具体实现或未来的规范扩展而有所不同。
当TS【2:0】=011b时。这些值表示存在两个DW长度的Trailer,但具体内容被保留,可能根据具体实现或未来的规范扩展而有所不同。
当TS【2:0】=100b时。这些值表示存在两个DW长度的Trailer,但具体内容被保留,可能根据具体实现或未来的规范扩展而有所不同。
当TS【2:0】=101b(3DW Trailer or IDE MAC)时。如果OHC-C(Option Header Control - C)存在并指示这是一个IDE TLP,则这个选项意味着有一个3DW大小的IDE MAC;否则,它指的是一个3DW的Trailer,其内容被保留。
当TS【2:0】=110b (4DW Trailer or IDE MAC and PCRC)时。类似地,如果有OHC-C并且指示为IDE TLP,则这代表有一个4DW大小的IDE MAC加上PCRC(可能是另一种类型的校验码);否则,它是一个4DW的Trailer,其内容被保留。
当TS【2:0】=111b (5DW Trailer - 内容保留)时。表示存在一个5DW长度的Trailer,但其具体用途和内容同样被保留,等待进一步的定义或特定应用场景下的使用。
总的来说,TS字段的作用是:TS字段通过其值来指定紧跟在TLP数据之后的Trailer部分的大小和用途。Trailer可以携带不同类型的信息,如ECRC(端到端循环冗余校验)、IDE MAC(接口数据错误MAC)以及PCRC等。
总结:TS字段在PCIe 6.0中用于明确指出TLP之后附加的Trailer信息的大小和类型。这种机制增强了协议的灵活性和可扩展性,允许更复杂的数据结构和支持更多高级功能,比如增强的数据完整性和错误检测能力

6.Tag【13:0】

Tag的位宽由10bit扩大到14bit位宽,意味着可用的Tag数更多了

7.AT【1:0】

当TLP类型为Memory Read、Memory Write、DMWr、和 AtomicOp Requests时,这个AT字段才有效,其他请求时AT字段为reserved(保留)

三、Flit 是如何打包,又是如何解包的呢?

Flit Packing

在这里插入图片描述
PCIe 6.0引入了Flit模式以支持更高的数据传输速率和更高效的带宽利用,同时确保数据完整性。以下是关于Flit模式Packing过程的详细介绍:
1.1、TLP 和 DLLP 打包:首先,Transaction Layer Packets (TLPs) 和 Data Link Layer Packets (DLLPs) 被打包成固定大小的数据单元。在Flit模式下,每个Flit的大小为256字节。具体来说,TLP被填充到236字节(TLP Bytes),而DLLP则被填充到6字节(DLP Bytes)。
1.2、CRC计算:基于236字节的TLP Bytes和6字节的DLP Bytes,计算出8字节的CRC(循环冗余校验)。这个CRC用于错误检测,确保数据在传输过程中没有损坏或丢失。
1.3、ECC计算:接下来,将236字节的TLP Bytes、6字节的DLP Bytes以及8字节的CRC作为输入,计算出6字节的ECC(纠错码)。ECC用于前向纠错(FEC),帮助在接收端纠正可能发生的传输错误。
1.4、形成完整的Flit:最终形成的Flit由256字节组成,包括236字节的TLP、6字节的DLP、8字节的CRC和6字节的ECC。
2、Scrambling(加扰):为了减少电磁干扰(EMI)并改善信号完整性,数据流会被加扰。这一步骤通过特定的算法打乱数据位序列,但确保可以解扰恢复原始数据。
3、Gray Coding(格雷编码):应用格雷编码转换,目的是最小化相邻状态之间的变化,从而降低误码率,特别是在高速传输时。
4、Tx Precoding(预编码):这是指在发送之前对信号进行预处理,以便更好地适应物理层特性,如信道损耗等,提高接收端的解码成功率。
5、RAM-4(四电平脉冲幅度调制):使用PAM-4技术,将数据映射到四个不同的电压电平上,允许每符号传输两位信息,相比于传统的二进制信号,显著提高了频谱效率。
6、通过Tx Pins发送信号:完成上述所有步骤后,经过处理的数据通过发送端的引脚(Tx Pins)输出,开始其在物理层上的传输旅程。
整个过程体现了PCIe 6.0在提升数据传输速率的同时,注重保证数据完整性和传输可靠性,以应对高性能计算和数据中心环境中的严格要求。

Flit UnPacking

在这里插入图片描述
在这里插入图片描述
Flit Unpacking过程是Flit模式数据传输的逆过程,它发生在接收端,用于将接收到的256字节Flit还原成原始的TLPs和DLLPs。以下是详细的Flit Unpacking过程:

  1. 从Tx Pins接收信号:首先,经过物理层传输后的信号通过接收端的引脚(Rx Pins)进入系统。
  2. 解调(De-Modulation): 接收端首先需要对PAM-4编码的信号进行解调处理,将接收到的四电平信号转换回数字信息流。
  3. Rx Decoding(解码): 经过可能的信道损伤后,信号需要通过解码步骤来恢复原始的数据流。这包括去除非线性效应、均衡等处理以补偿信道影响,并使用预编码的逆过程来准备数据以便后续处理。
  4. Descrambling(解扰): 在发送端应用的加扰技术在此处被反转,通过特定算法恢复原始的数据序列。
  5. Gray Code解码: 如果在发送端应用了格雷编码,则在这里将其解码,恢复到原本的二进制表示形式。
  6. ECC校验与纠错: 使用接收到的6字节ECC(纠错码),对接收到的256字节Flit中的236字节TLP、6字节DLP以及8字节CRC进行校验。如果检测到错误,ECC机制尝试纠正这些错误,确保数据完整性。
  7. CRC校验: 除了ECC外,还对接收到的8字节CRC进行校验,以进一步验证数据在传输过程中是否发生了未被ECC纠正的错误。
  8. TLP和DLLP分离: 经过上述所有检查和潜在的纠错步骤之后,根据TLP Bytes (236字节) 和 DLP Bytes (6字节) 的格式,将数据流拆分为原始的TLPs和DLLPs。
  9. 最终处理: 分离出来的TLPs和DLLPs被传递给相应的上层协议栈进行进一步处理或直接应用。
    这个逆过程确保了即使在高误码率的高速传输环境中,也能高效准确地恢复原始数据,维持PCIe连接的可靠性和性能。通过这种双向机制,PCIe 6.0不仅提高了数据传输速率,同时也增强了系统的容错能力和稳定性。
    UnPacking的过程与Packing的过程类似,只不过是逆方向,,相比与PCIE5.0,Flit模式的数据流通过程中去除了STP、END等等部分

实际在力科分析仪中如何组包?

在这里插入图片描述在这里插入图片描述

需要在仪器发Flit模式的包时,需要将仪器设置成Flit模式,然后在Peg字段中添加相应的字段,PCIeFlitMode后,TLP的组包方式和以往差别不大,只是新增了一些参数字段比如OHC、TS等等,在实际用例中按情况添加即可

总结

相关资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值