2. PCIe链路状态机基础:LTSSM的12个状态概览

PCIe链路的物理层核心是一个有限状态机——LTSSM(Link Training and Status State Machine)。它负责链路的初始化、训练、电源管理以及错误恢复。理解LTSSM的12个状态是掌握Hot Reset触发后链路重新训练行为的前提。

LTSSM的状态可归纳为五大类:检测(Detect)、轮询(Polling)、配置(Configuration)、恢复(Recovery)、活动(L0/L0s/L1/L2)以及热复位(Hot Reset)。下面通过一张状态转换总览图建立全局认知。

关键认知:LTSSM并非线性前进,而是根据链路事件(如电气空闲、错误、复位请求)在状态间跳转。Hot Reset触发后,链路会从L0/L0s状态跳转到Recovery,再进入Hot Reset状态,最后重新训练。
LTSSM 12状态概览 LTSSM 12状态概览 检测与轮询 Detect Polling Configuration 活动与电源管理 L0 L0s L1 L2 恢复与复位 Recovery Hot Reset Disable 测试 Loopback 说明:箭头仅表示主要跳转方向,实际LTSSM支持多路径跳转(如Recovery可回到Configuration或L0)。 Hot Reset触发后,链路从L0/L0s → Recovery → Hot Reset → Recovery → Configuration → L0。

2.1 12个状态详细定义

下表列出了LTSSM的全部12个状态及其核心功能描述。注意,Hot Reset 和 Disable 是复位类状态,Loopback 用于测试,其余状态构成正常链路训练与数据传输路径。

序号 状态名称 类别 核心功能描述
1 Detect 初始化 检测对端设备是否存在,通过发送电气空闲退出序列(EIEOS)和训练序列(TS1/TS2)进行握手。
2 Polling 初始化 建立位锁定和符号锁定,交换训练序列以确定链路宽度和速率。
3 Configuration 初始化 协商链路宽度、数据速率、通道反转和极性反转,完成链路配置。
4 L0 活动 正常数据传输状态,TLP和DLLP可以自由传输。
5 L0s 电源管理 快速进入/退出低功耗状态,仅关闭部分发送器,延迟极低。
6 L1 电源管理 更深度的低功耗状态,关闭发送器和接收器,退出延迟较大。
7 L2 电源管理 最低功耗状态(通常与辅助电源配合),链路几乎完全关闭。
8 Recovery 恢复 用于链路重新训练、速率切换、错误恢复和复位入口。Hot Reset由此进入。
9 Hot Reset 复位 向对端设备发送Hot Reset训练序列(TS1中带有Hot Reset位),强制对端复位并重新训练。
10 Disable 复位 禁用链路,发送Disable训练序列,对端进入电气空闲。
11 Loopback 测试 将接收到的数据直接环回发送,用于物理层测试和故障诊断。
12 Hot Reset(对端) 复位 接收端收到Hot Reset训练序列后进入的状态,执行内部复位并跳转到Detect。
提示:Hot Reset状态在LTSSM中是一个短暂过渡状态。发送端在Recovery中发送带Hot Reset位的TS1序列后进入Hot Reset状态,持续发送该序列;接收端收到后也进入Hot Reset状态,然后双方跳转到Detect重新开始训练。

2.2 状态转换的关键路径

LTSSM的状态转换遵循严格的规则。以下列出与Hot Reset相关的关键转换路径:

  1. L0 → Recovery:当链路检测到错误(如CRC错误、重放超时)或收到复位请求时,从L0跳转到Recovery。
  2. Recovery → Hot Reset:在Recovery状态下,如果软件或硬件触发Hot Reset,发送端开始在训练序列中设置Hot Reset位,并进入Hot Reset状态。
  3. Hot Reset → Recovery:发送端在Hot Reset状态发送完指定数量的训练序列后,跳转回Recovery,开始重新训练。
  4. Recovery → Configuration → L0:重新训练完成后,链路重新协商配置,最终回到L0正常传输。
Hot Reset触发后的LTSSM状态转换路径 Hot Reset触发后的LTSSM状态转换路径 L0 Recovery Hot Reset Configuration 错误/复位请求 TS1带Hot Reset位 发送完成 重新训练完成 → 回到L0 说明:Hot Reset状态本身不执行训练,只负责发送/接收复位训练序列。 真正的重新训练发生在Recovery → Configuration → L0路径上。

2.3 状态机与Hot Reset的关联

在Hot Reset场景中,以下三个状态最为关键:

  • Recovery:作为Hot Reset的入口和出口。发送端在Recovery中决定是否进入Hot Reset,接收端在Recovery中检测到Hot Reset训练序列后也进入Hot Reset。
  • Hot Reset:短暂驻留状态,持续发送带Hot Reset位的TS1序列(至少2个训练序列周期)。
  • Detect:Hot Reset完成后,双方跳转到Detect,重新开始完整的链路训练流程。
注意:Hot Reset与Fundamental Reset(基本复位)不同。Fundamental Reset会复位整个PCIe设备(包括配置空间),而Hot Reset只复位物理层链路状态,配置空间中的大部分寄存器值保持不变。这是理解Hot Reset行为的关键差异。

2.4 状态机行为总结

LTSSM的12个状态构成了PCIe链路管理的完整框架。对于Hot Reset触发后的链路重新训练,核心流程可归纳为:

L0(正常传输)
  → 检测到Hot Reset请求(软件触发或硬件事件)
  → 跳转到Recovery
  → 在Recovery中发送带Hot Reset位的TS1训练序列
  → 进入Hot Reset状态(发送端持续发送TS1)
  → 接收端收到TS1后也进入Hot Reset
  → 双方跳转到Detect
  → 经过Polling → Configuration → L0
  → 链路恢复正常传输