2. PCIe基础回顾
要理解PCIe均衡参数为什么需要配置、在什么时机配置、配置后由谁生效,必须先回到PCIe协议栈与链路训练的整体框架。均衡并不是一个孤立的寄存器操作,它嵌入在物理层的链路训练流程中,受LTSSM状态机驱动,并通过TS1/TS2有序集与对端协商。本节从分层结构、链路训练、LTSSM状态迁移三个层面,定位均衡所处的准确位置。
一、PCIe协议分层:均衡属于物理层职责
PCIe采用分层协议架构,自上而下分为事务层、数据链路层和物理层。事务层负责TLP的组装与路由,数据链路层负责DLLP、ACK/NAK与CRC校验,物理层负责字节条带、加扰、编码、串并转换以及链路训练。均衡(Equalization)完全属于物理层逻辑子层的职责,它不感知TLP内容,只关心模拟信道对高速信号造成的损耗与码间干扰。
- 事务层:生成读写请求、配置空间访问、消息事务,与均衡无直接交互。
- 数据链路层:保证TLP可靠传输,提供流控信用,不参与均衡协商。
- 物理层逻辑子层:LTSSM、有序集、链路训练、均衡协商、速率切换。
- 物理层电气子层:发送端FFE、接收端CTLE/DFE、时钟恢复、信号检测。
因此,当我们讨论“均衡参数配置”时,实际是在配置物理层发送端与接收端的模拟前端,并通过链路训练协议让两端达成一致。任何试图在事务层或驱动层直接“调均衡”的做法,都绕过了协议规定的协商路径,容易导致链路不稳定。
二、链路训练过程:从Detect到L0的完整路径
链路训练是PCIe链路建立的核心过程,由LTSSM驱动,主要完成位锁定、符号锁定、通道对齐、极性反转、速率协商和均衡协商。其典型顺序如下:
- Detect:检测接收端是否存在,确认对端设备已上电。
- Polling:通过TS1/TS2有序集交换,完成位锁定与符号锁定。
- Configuration:确定链路宽度、通道编号、极性反转,完成通道对齐。
- Recovery:在速率切换或均衡协商时进入,重新建立位/符号锁定。
- L0:链路进入正常工作状态,TLP/DLLP开始传输。
均衡协商主要发生在Recovery阶段,尤其是从Gen3及以上速率开始。Gen1/Gen2使用固定去加重,不需要复杂均衡;Gen3引入发送端FFE和接收端CTLE/DFE,必须通过TS1/TS2中的EQ TS2有序集交换预设值(Preset)和系数,完成握手后才能进入L0。
三、LTSSM状态机与均衡的位置
LTSSM是物理层的核心状态机,包含Detect、Polling、Configuration、Recovery、L0、L1、L2、Disabled、Hot Reset、Loopback等状态。均衡协商嵌入在Recovery状态中,具体表现为Recovery.RcvrLock、Recovery.RcvrCfg、Recovery.Speed、Recovery.Equalization等子状态。
在Gen3及以上速率下,Recovery.Equalization阶段会经历多个子阶段:发送端发送EQ TS2,接收端评估信道并反馈系数调整请求,双方迭代直到收敛。若收敛失败,链路可能降速或停留在Recovery,表现为链路训练失败或反复重训。
四、均衡在链路训练中的实际场景
以一台服务器插入Gen4 NVMe SSD为例。上电后,链路先以Gen1完成Detect、Polling、Configuration,进入L0。随后系统发起速率切换,链路进入Recovery.Speed,再进入Recovery.Equalization。此时两端通过TS1/TS2交换均衡预设值,发送端调整FFE系数,接收端调整CTLE/DFE,迭代评估眼图与误码率。若收敛成功,链路以Gen4进入L0;若失败,可能降速到Gen3或反复重训。
常见日志中会出现类似信息:
ltssm: RECOVERY.EQUALIZATION
eq: preset=4, fs=7, lf=15
eq: request preset=5, fs=6, lf=18
link: speed change to Gen4 success
link: L0 reached
这些日志说明均衡协商正在Recovery.Equalization中进行,参数通过有序集交换,最终由硬件自动写入发送端与接收端模拟前端。
五、常见误区与复盘要点
| 误区 | 正确理解 |
|---|---|
| 均衡参数由驱动直接配置 | 均衡协商由物理层LTSSM自动完成,驱动通常只能读取状态或触发重训。 |
| Gen1/Gen2也需要复杂均衡 | Gen1/Gen2使用固定去加重,Gen3及以上才引入FFE/CTLE/DFE协商。 |
| 链路进入L0后均衡不再变化 | 速率切换、错误恢复、热复位都可能重新进入Recovery并重新协商均衡。 |
| 均衡失败只影响信号质量 | 均衡失败会直接导致链路降速、训练失败或反复重训,影响设备可用性。 |
总结来看,PCIe均衡位于物理层逻辑子层的Recovery.Equalization阶段,由LTSSM驱动,通过TS1/TS2有序集协商,最终作用于电气子层的发送端FFE与接收端CTLE/DFE。理解这一位置关系,是后续进行均衡参数配置与优化的前提。