LTSSM 状态机
Link Training and Status State Machine - 链路训练的核心机制
LTSSM 概述
LTSSM(Link Training and Status State Machine)是PCIe链路层的核心状态机,负责链路的初始化、训练、电源管理和错误恢复。每条PCIe链路的两端各有一个独立的LTSSM实例,它们协同工作以建立和维护可靠的通信链路。
状态数量
12个主要状态
多个子状态
主要功能
链路初始化与训练
速度/宽度协商
电源管理
L0/L0s/L1/L2 低功耗状态
ASPM支持
状态机全景图
状态详解
Detect 状态
这是LTSSM的初始状态和复位后的入口状态,主要任务是检测链路对端是否存在设备。
子状态
Detect.Quiet
初始子状态,检测接收器是否检测到差分信号。如果没有检测到任何信号且超时(12ms),则进入Detect.Active。
Detect.Active
向对端发送检测脉冲,通过检测接收端的阻抗来判断对端是否有设备连接。如果检测到设备,进入Polling状态;否则返回Detect.Quiet。
关键行为
- 发送端发送电气空闲序列
- 接收端检测差分信号的存在
- 使用接收器终端检测机制判断连接状态
- 支持多Lane链路的逐Lane检测
时序要求
| 参数 | 最小值 | 典型值 | 最大值 |
|---|---|---|---|
| Detect.Quiet 超时 | 12 ms | - | - |
| Detect.Active 超时 | - | - | 12 ms |
Polling 状态
Polling状态的主要任务是建立符号锁定(Symbol Lock)和Lane极性对齐,完成训练序列(TS)的交换。
子状态
Polling.Active
发送训练序列TS1/TS2,请求对端进行链路训练。接收端尝试建立符号锁定。
Polling.Compliance
可选状态,用于发送符合性测试码型。主要用于工厂测试和验证。
Polling.Configuration
发送TS2序列确认链路参数,准备进入Configuration状态。
训练序列 (Training Sequence)
| 字段 | 大小 | 描述 |
|---|---|---|
| COM | 1 字节 | 逗号字符,用于符号对齐 |
| Link Number | 1 字节 | 链路编号 |
| Lane Number | 1 字节 | Lane编号 |
| Num of FTS | 1 字节 | L0s退出所需的FTS数量 |
| Data Rate | 1 字节 | 支持的数据速率 |
Configuration 状态
Configuration状态完成链路宽度协商、Lane反转和Lane对齐等配置任务。
子状态
Configuration.Linkwidth.Start
开始链路宽度协商,发送带有链路号信息的TS1序列。
Configuration.Linkwidth.Accept
接受对端提议的链路宽度配置。
Configuration.Lanenum.Wait
等待Lane编号分配完成。
Configuration.Lanenum.Accept
接受Lane编号分配。
Configuration.Complete
配置完成,准备进入L0状态。
Configuration.Idle
发送空闲序列,等待进入L0。
Lane协商过程
L0 状态
L0是链路的正常工作状态,所有数据传输都在此状态下进行。在L0状态下,链路可以全速传输数据包。
L0状态特性
- 全速数据传输(根据协商的速度)
- 支持所有TLP和DLLP传输
- 正常的流量控制操作
- 可以进入L0s/L1低功耗状态
- 错误检测和报告功能激活
状态转换
| 目标状态 | 触发条件 | 说明 |
|---|---|---|
| L0s | 发送端电气空闲 | ASPM L0s进入 |
| L1 | 收到PM进入请求 | 软件发起的电源管理 |
| Recovery | 错误或速度切换 | 链路恢复或速率改变 |
| Disable | 软件命令 | 链路禁用 |
| Hot Reset | 软件复位 | 热复位 |
Recovery 状态
Recovery状态用于链路恢复和速度切换。当链路发生错误或需要改变数据速率时进入此状态。
进入Recovery的场景
速率切换
从Gen1/Gen2切换到更高速率
链路重训练
错误恢复、信号质量下降
带宽切换
改变Lane数量
子状态
Recovery.RcvrLock
接收器重新建立符号锁定。
Recovery.RcvrCfg
接收器配置,交换TS1/TS2。
Recovery.Idle
发送空闲序列,准备返回L0。
Recovery.Speed
速率切换,改变数据速率。
Recovery.Equalization
均衡调整(Gen3+),优化信号质量。
均衡 (Equalization) - Gen3+
从Gen3开始,链路恢复需要执行均衡过程,调整发送端的预加重和去加重参数以优化信号完整性。
电源管理状态
PCIe定义了多个低功耗状态,支持不同的功耗和唤醒延迟级别。
L0s
轻量级低功耗状态,发送端进入电气空闲。唤醒速度最快,适合频繁唤醒场景。
L1
深度低功耗状态,需要两端协商进入。支持ASPM L1和软件控制的L1。
L2
最低功耗状态,链路完全关闭,仅保留辅助电源。需要外部唤醒信号。
ASPM (Active State Power Management)
ASPM是一种硬件自动的电源管理机制,在链路空闲时自动进入低功耗状态。
| ASPM级别 | 描述 | 功耗节省 |
|---|---|---|
| L0s Only | 仅使用L0s | 较低 |
| L1 Only | 仅使用L1 | 较高 |
| L0s + L1 | 组合使用 | 最优平衡 |
交互式状态机模拟器
通过此模拟器了解LTSSM的状态转换过程。点击状态节点或触发按钮来模拟状态转换。
状态日志
系统启动,进入Detect状态