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状态,最后重新训练。
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相关的关键转换路径:
- L0 → Recovery:当链路检测到错误(如CRC错误、重放超时)或收到复位请求时,从L0跳转到Recovery。
- Recovery → Hot Reset:在Recovery状态下,如果软件或硬件触发Hot Reset,发送端开始在训练序列中设置Hot Reset位,并进入Hot Reset状态。
- Hot Reset → Recovery:发送端在Hot Reset状态发送完指定数量的训练序列后,跳转回Recovery,开始重新训练。
- Recovery → Configuration → L0:重新训练完成后,链路重新协商配置,最终回到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
→ 链路恢复正常传输