3. LTSSM 简介:链路训练与状态状态机
LTSSM(Link Training and Status State Machine)是 PCIe 物理层的核心控制引擎,负责管理链路的初始化、训练、功耗状态转换以及错误恢复。它定义了链路从复位到稳定工作的完整状态序列,是理解 PCIe 链路行为的关键。
3.1 LTSSM 的作用
LTSSM 的主要职责包括:
- 链路初始化与训练:在系统上电或复位后,自动完成链路的位锁定、符号锁定、通道协商和链路宽度配置。
- 链路状态管理:控制链路在正常工作(L0)、低功耗(L1/L2)和恢复(Recovery)等状态之间的转换。
- 错误检测与恢复:当链路出现误码率过高或电气空闲异常时,触发 Recovery 流程重新训练。
- 链路宽度与速率协商:在训练过程中确定双方支持的最大链路宽度和速率,并降级到兼容配置。
关键概念: LTSSM 是一个有限状态机,每个状态对应链路物理层的一组特定行为。状态转换由硬件事件(如电气空闲退出、训练序列超时)或软件请求(如进入 L1 低功耗)触发。
3.2 LTSSM 在物理层中的位置
PCIe 物理层分为三个子层:逻辑子层、电气子层和物理层编码子层(PCS)。LTSSM 位于逻辑子层中,直接与电气子层和 MAC 层交互。
下图展示了 LTSSM 在物理层架构中的位置及其与上下层模块的关系:
架构要点: LTSSM 不直接操作模拟电路,而是通过逻辑子层内的控制接口向电气子层发送命令(如“进入电气空闲”、“发送训练序列”),并接收电气子层的状态反馈(如“检测到接收端”、“电气空闲退出”)。
3.3 LTSSM 与链路训练的关系
链路训练是 LTSSM 在特定状态序列下执行的一组硬件自动流程。LTSSM 定义了训练的状态转换图,而链路训练则是这些状态中实际发生的物理层握手过程。
下表总结了 LTSSM 主要状态与链路训练阶段的对应关系:
| LTSSM 状态 | 所属阶段 | 核心行为 | 训练序列 |
|---|---|---|---|
| Detect | 链路检测 | 检测对端设备是否存在 | 无 |
| Polling | 位锁定与符号锁定 | 发送 TS1/TS2,实现位和符号同步 | TS1, TS2 |
| Configuration | 链路宽度协商 | 交换链路宽度和速率能力,确定最终配置 | TS1, TS2 |
| L0 | 正常操作 | 传输数据包,链路稳定工作 | 无(数据流) |
| Recovery | 重新训练 | 误码率过高或链路中断时重新同步 | TS1, TS2 |
| L1 / L2 | 低功耗 | 进入低功耗状态,节省能耗 | 无 |
链路训练的核心流程可以概括为以下步骤:
- Detect 阶段:发送端通过接收检测电路判断对端是否接入。如果检测到接收端,则进入 Polling。
- Polling 阶段:双方连续发送训练序列 TS1 和 TS2,完成位锁定和符号锁定,并协商数据速率。
- Configuration 阶段:通过交换 TS1/TS2 中的配置信息,确定链路宽度(如 x1、x2、x4、x8、x16)和通道映射。
- L0 状态:训练完成,链路进入正常工作模式,开始传输 TLP(事务层包)和 DLLP(数据链路层包)。
常见误区: 链路训练不是一次性的。当链路出现误码率超过阈值、电气空闲异常或软件请求重新训练时,LTSSM 会从 L0 状态跳转到 Recovery 状态,重新执行 Polling 和 Configuration 的部分流程,而不会回到 Detect 从头开始。
3.4 LTSSM 状态转换概览
下图展示了 LTSSM 的主要状态及其转换路径,帮助理解链路训练在整个状态机中的位置:
训练与状态机的关系总结:
- 链路训练是 LTSSM 在 Detect、Polling、Configuration 三个状态中执行的具体硬件流程。
- LTSSM 定义了何时进入训练状态、如何在状态间转换、以及何时认为训练成功或失败。
- 训练完成后,LTSSM 进入 L0 状态,此时链路才能正常传输数据。
- 如果链路在 L0 状态出现异常,LTSSM 会跳转到 Recovery 状态,触发重新训练。