2、链路训练状态机(LTSSM)简介
2.1 LTSSM 的作用
链路训练状态机(Link Training and Status State Machine,LTSSM)是 PCIe 物理层的核心控制逻辑,负责管理链路从初始化到稳定运行的完整过程。它的主要作用包括:
- 链路初始化:在上电、复位或热插拔事件后,自动建立通信链路。
- 速率协商:在 Gen1(2.5 GT/s)到 Gen5(32 GT/s)之间,逐步协商出双方支持的最高速率。
- 宽度协商:确定可用的物理通道(Lane)数量,支持 x1、x2、x4、x8、x16 等配置。
- 链路恢复:当链路出现错误或需要改变参数时,自动进入恢复流程。
- 电源管理:配合 ASPM(主动电源管理)和 L1/L2 低功耗状态,控制链路功耗。
关键理解:LTSSM 是 PCIe 链路的“大脑”,所有链路行为——从插卡识别到高速数据传输——都由它统一调度。没有 LTSSM,PCIe 设备之间无法建立任何通信。
2.2 状态机基本概念
状态机(State Machine)是一种数学模型,由一组状态、转移条件和动作组成。在 PCIe LTSSM 中:
- 状态:表示链路当前所处的阶段,如 Detect、Polling、Configuration 等。
- 转移条件:触发状态切换的事件,如收到特定有序集(Ordered Set)、超时、错误检测等。
- 动作:进入或离开状态时执行的操作,如发送 TS1/TS2 序列、调整速率、复位物理层等。
LTSSM 采用有限状态机(FSM)设计,状态数量固定,转移路径明确。这种设计保证了链路训练的可预测性和确定性,是 PCIe 互操作性的基石。
状态机三要素:当前状态 + 输入事件 → 下一状态 + 输出动作。LTSSM 的输入事件主要来自物理层接收的有序集和定时器。
2.3 11 个主要状态概览
PCIe 规范定义了 LTSSM 的 11 个主要状态,它们构成了链路训练和管理的完整生命周期。下表列出了每个状态的名称、编号、核心功能和典型持续时间:
| 状态编号 | 状态名称 | 核心功能 | 典型持续时间 |
|---|---|---|---|
| 1 | Detect | 检测对端设备是否存在,识别有效 Lane | ~12 μs |
| 2 | Polling | 发送 TS1/TS2 序列,建立位锁定和符号锁定 | ~24 μs |
| 3 | Configuration | 协商链路宽度,分配 Lane 编号,确定极性 | ~48 μs |
| 4 | L0 | 正常操作状态,传输数据和 TLPs | 持续运行 |
| 5 | L0s | 低功耗待机,快速唤醒(单方向) | 可配置 |
| 6 | L1 | 深度低功耗,唤醒延迟较大 | 可配置 |
| 7 | L2 | 主电源关闭,仅保留辅助电源 | 可配置 |
| 8 | Recovery | 链路错误恢复、速率切换、宽度调整 | ~2 μs – 10 μs |
| 9 | Hot Reset | 热复位,强制对端进入复位状态 | ~2 μs |
| 10 | Loopback | 诊断模式,数据回环测试 | 测试专用 |
| 11 | Disable | 禁用链路,停止所有活动 | 持续 |
注意:L0s、L1、L2 属于电源管理状态,虽然列在 LTSSM 中,但它们的进入和退出受 ASPM 或软件控制,与链路训练的主流程(Detect → Polling → Configuration → L0)不同。
2.4 LTSSM 状态转换关系
下图展示了 LTSSM 11 个主要状态之间的核心转换路径。箭头方向表示状态转移方向,标注了典型的触发条件。
2.5 状态分组与关键路径
11 个状态可以按功能分为以下 4 组,便于理解和记忆:
- 链路训练组:Detect → Polling → Configuration → L0。这是每次上电或复位后的必经路径,完成链路建立。
- 电源管理组:L0s、L1、L2。从 L0 进入,用于降低功耗,唤醒后返回 L0。
- 错误恢复组:Recovery。从 L0 进入,处理错误、速率切换或宽度调整,成功后返回 L0。
- 特殊功能组:Hot Reset、Loopback、Disable。用于复位、诊断和禁用链路。
关键路径:链路训练的核心路径是 Detect → Polling → Configuration → L0。Gen1 到 Gen5 的速率协商主要发生在 Configuration 和 Recovery 状态中。后续章节将详细拆解每个状态的内部机制。
2.6 LTSSM 与速率协商的关系
速率协商是 LTSSM 的核心功能之一,贯穿多个状态:
- Detect:确定链路存在,不涉及速率。
- Polling:以 Gen1 速率发送 TS1/TS2,建立基本同步。
- Configuration:完成宽度协商后,链路进入 L0 状态,此时运行在 Gen1 速率。
- Recovery:这是速率升级的关键状态。设备在 Recovery 中通过发送修改后的 TS1 有序集,协商切换到更高的速率(Gen2、Gen3、Gen4、Gen5)。
每次速率切换都必须经过 Recovery 状态,这是 PCIe 规范为保证链路稳定而设计的强制路径。