第1章 Gen4链路训练概述

各位同学,大家好。我是老张,在PCIe链路调试这个坑里摸爬了七八年。今天开始咱们聊Gen4链路训练,先从最基础的东西说起——Gen4到底是个什么水平?LTSSM这台“状态机”又长什么样?

1.1 从Gen3到Gen4,我们到底升级了什么?

说白了,Gen4最直观的变化就是速度翻倍。Gen3跑8 GT/s,Gen4直接干到16 GT/s。但你别以为只是把频率提高一倍那么简单——编码方式没变,还是128b/130b,但电气层和协议层做了不少调整。

核心参数对比

项目 PCIe Gen3 PCIe Gen4
单通道速率 8 GT/s 16 GT/s
编码 128b/130b 128b/130b
通道带宽(x16) ~16 GB/s ~32 GB/s
参考时钟抖动要求 较宽松 更严格
均衡(Equalization) 预热均衡 分阶段均衡(Phase 1~3)

我刚开始做Gen4项目时,总觉得“不就速度快一倍嘛,把Gen3的PHY调一下不就行了?”结果第一版样片回来,链路训练死活过不去。后来才意识到,Gen4对信号完整性要求高了一个量级。你想想看,16 GT/s的信号在PCB上走几英寸,眼图就快闭了。

另一个重要变化:均衡机制从Gen3的“一次性握手”变成了Gen4的“三阶段协商”。这个我们后面会详细讲,但你先记住一句话:Gen4的均衡是链路训练中最容易出妖蛾子的环节。

1.2 链路训练状态机(LTSSM)—— 理解链路训练的地图

搞PCIe的人都知道,LTSSM(Link Training and Status State Machine)是整套训练流程的灵魂。它控制着链路从无到有、从低速到高速的每一步。说白了,它就是一张“地图”,告诉你当前链路在哪个阶段,下一步该往哪走。

状态机一共定义了十多个状态,但咱们做训练调试,重点关注这几个:

  • Detect —— 检测对端是否在线
  • Polling —— 发送训练序列(TS1/TS2),协商基本参数
  • Configuration —— 确定通道宽度、链路编号,交换训练数据
  • Recovery —— 当链路出错或需要调整数据速率时重新训练
  • L0 —— 正常数据传输状态
  • Hot Reset / Loopback —— 特殊用途状态

我给你画了个简化的状态机迁移图,重点看训练阶段:

LTSSM 核心训练状态迁移图 Detect Polling Configuration L0 Recovery Hot Reset 训练主流程 Detect → Polling → Configuration → L0 当链路出现错误时, 会进入 Recovery

举个例子:当两个设备刚上电,LTSSM先从 Detect 开始,检测接收器是否存在。如果检测通过,进入 Polling 阶段,双方开始发送TS1/TS2序列表,交换速度能力和通道宽度等信息。顺利的话,进入 Configuration,确认最终配置,然后进入 L0 正常跑数据。

为什么LTSSM这么重要? 因为几乎所有的链路异常都会在某个状态“卡住”。我遇到过最典型的一个案例:某主板用Gen4 SSD,训练一直卡在Polling阶段。示波器一看,TS1序列根本发不出来——原来是参考时钟的相位抖动超标了。嗯,换成低抖动晶振后立刻解决。

避坑指南

我曾经在调试中犯过一个低级错误:认为“Polling阶段没过就是时钟问题”。后来发现,有时候是两端编码不匹配。比如Gen3设备还在用128b/130b,但Gen4要求必须支持某些前向纠错(FEC)协商,如果一方不支持就会卡住。建议你们初查时抓逻辑分析仪,先看TS1/TS2发送是否正常。

1.3 一个小例子:链路训练失败的可能原因

咱们用一张表概括一下常见卡状态的现象和根因,方便你后面对照排查:

卡住状态 典型现象 常见原因
Detect 没有读到接收器检测信号 物理连接断开、差分阻抗不匹配、接收器未使能
Polling TS序列持续发送但无应答 时钟抖动过大、眼图闭合、速率协商失败
Configuration 反复交换训练数据但无法进入L0 宽度协商不一致(如对方只支持x4,本端强制x8)
Recovery 链路跳回Recovery并反复重训练 信号完整性恶化、均衡系数未收敛、比特错误过多

说白了,链路训练就是一场握手谈判。从握上手到谈拢,每一步都可能出问题。Gen4因为速率更高,对信号质量和时序的要求也更苛刻。后面几章咱们会拆开每一条细节,但今天先把整体框架搭好。

警告:千万不要在链路训练阶段跳过“均衡”步骤直接进入L0,这样做大概率会掉速或产生不可纠正的链路错误。业界有血的教训——某公司产品就是因为早期Gen4均衡实现有bug,出货后频繁重置,最终不得不召回。

好,这一章就到这。核心就是三点:Gen4比Gen3快一倍但坑更多;LTSSM是链路训练的导航地图;卡状态是有规律的,学会看状态就等于找到了排查的钥匙。