L0s与L1状态:PCIe电源管理状态机切换策略 - 第2节
2.1 LTSSM:链路训练与状态机基础
PCIe 链路的电源管理并非由软件直接控制,而是由硬件状态机——LTSSM(Link Training and Status State Machine) 自动完成。LTSSM 定义了链路从初始化、训练到正常工作和电源管理切换的全部状态与转换规则。理解 LTSSM 是掌握 L0s/L1 切换的前提。
2.1.1 LTSSM 核心状态一览
LTSSM 包含 11 个主要状态,按功能可分为四组:
| 分组 | 状态 | 功能描述 |
|---|---|---|
| 检测 | Detect | 检测对端设备是否存在,发送电气空闲序列 |
| 训练 | Polling / Configuration / Recovery | 位锁定、符号锁定、链路宽度协商、数据速率协商 |
| 活动 | L0 | 正常工作状态,数据包全速收发 |
| 节能 | L0s / L1 / L2 / L3 | 链路空闲时降低功耗,L0s 快速恢复,L1 深度休眠 |
关键认知: L0s 和 L1 是 LTSSM 中仅有的两个“活动节能”状态。它们从 L0 进入,也能直接返回 L0,但恢复延迟和功耗节省程度不同。
2.1.2 LTSSM 状态机简化结构图
下图展示了 LTSSM 的核心状态及其主要转换路径,重点标注了 L0、L0s、L1 之间的关系:
记忆要点: L0s 是“浅睡眠”,L1 是“深睡眠”。L0s 退出不需要重新训练,L1 退出必须经过 Recovery 重新建立位锁定和符号锁定。
2.2 从 L0 到 L0s:快速节能路径
2.2.1 进入条件
当链路处于 L0 状态且满足以下条件时,LTSSM 自动发起 L0s 切换:
- 发送端空闲: 该方向连续发送 电气空闲有序集(EIOS) 后,无数据包待发送。
- 接收端确认: 对端正确接收 EIOS 并进入电气空闲状态。
- 超时计数器: 链路空闲时间超过 L0s 进入延迟(Entry Latency),通常为几十纳秒。
重要特性: L0s 是 单向 节能状态。一个方向可以进入 L0s,另一个方向仍保持 L0 全速收发。这为部分空闲场景提供了极细粒度的功耗控制。
2.2.2 L0s 退出机制
当任意方向需要重新发送数据时,L0s 退出过程如下:
- 发送端退出: 发送端从电气空闲恢复,发送 FTS(Fast Training Sequence) 有序集。
- 接收端同步: 接收端检测到电气空闲退出,重新锁定时钟和数据。
- 返回 L0: 双方完成位锁定和符号锁定,恢复数据包传输。
整个退出过程通常耗时 几十纳秒,远小于 L1 的恢复延迟。
2.3 从 L0 到 L1:深度节能路径
2.3.1 进入条件
L1 是 双向 节能状态,进入条件比 L0s 更严格:
| 条件 | 说明 |
|---|---|
| 链路双向空闲 | 两个方向均无数据包待发送,且已发送 EIOS |
| ASPM 使能 | L1 必须通过 ASPM(L1 子状态)或软件显式请求 |
| 对端同意 | 发送 PM_Enter_L1 DLLP,对端回复 PM_Enter_L1_ACK |
| 无未完成事务 | 所有未完成的 Non-Posted 请求必须完成 |
2.3.2 L1 退出机制
L1 退出必须经过 Recovery 状态,流程如下:
- 唤醒信号: 任意一端发送 PM_Turn_On 或电气空闲退出信号。
- 进入 Recovery: 双方重新进行位锁定、符号锁定和链路宽度协商。
- 返回 L0: 协商完成后,链路恢复全速数据传输。
性能影响: L1 退出延迟通常在 几微秒 级别,比 L0s 高一个数量级。因此,L1 适用于较长空闲周期,频繁进出 L1 会显著增加延迟和功耗开销。
2.4 L0s 与 L1 宏观切换路径对比
| 对比维度 | L0s | L1 |
|---|---|---|
| 节能方向 | 单向(每个方向独立) | 双向(同时进入) |
| 进入触发 | 硬件自动(空闲超时) | ASPM 或软件请求 + 对端确认 |
| 退出路径 | 直接返回 L0 | 必须经过 Recovery |
| 退出延迟 | ~几十纳秒 | ~几微秒 |
| 功耗节省 | 中等(仅关闭发送器) | 高(关闭 PLL、时钟等) |
| 适用场景 | 短时空闲(如包间隙) | 长时空闲(如链路无流量) |
设计权衡: 实际系统中,L0s 和 L1 通常同时使能。LTSSM 优先尝试 L0s,若空闲时间超过 L1 进入阈值,则升级到 L1。这种“两级节能”策略在延迟和功耗之间取得了良好平衡。
2.5 宏观切换路径总结
从 L0 出发,LTSSM 提供两条节能路径:
- 路径 A(L0 → L0s → L0): 快速进出,适合微秒级空闲,硬件自动控制,对软件透明。
- 路径 B(L0 → L1 → Recovery → L0): 深度节能,适合毫秒级空闲,需要 ASPM 或软件参与,恢复延迟较大。