L1 状态定义与特性

L1 状态是 PCIe 链路电源管理中的中等深度节能状态。与 L0s 仅关闭发送器不同,L1 状态会关闭链路上的 发送器 和 接收器 的绝大部分功能,仅保留维持链路重新激活所需的少量逻辑。进入 L1 状态后,链路两端设备通过协商关闭主时钟和 PLL,从而显著降低静态功耗。

L1 状态的基本特征

L1 状态的核心特征可归纳为以下四点:

  • 链路时钟关闭:链路两端停止发送参考时钟,PLL 进入低功耗模式或完全关闭。
  • 电气空闲:差分信号对上的电压维持在共模电平,无数据翻转,功耗降至接近零。
  • 协议冻结:TLP、DLLP 和 Ordered Set 的发送与接收全部暂停,链路上下文保存在本地。
  • 软件透明:对操作系统和驱动程序而言,L1 状态下的设备仍处于“可操作”状态,无需重新枚举。
关键指标:L1 状态下的链路功耗通常仅为 L0 状态的 1% ~ 5%,具体取决于链路宽度和工艺节点。
L0 与 L1 状态链路电气特性对比 L0 状态(全速运行) • 参考时钟:开启,频率稳定 • 差分信号:持续翻转,数据活跃 • PLL:锁定,输出高频时钟 • 功耗:100%(基准) • 退出延迟:0(始终在线) L1 状态(深度节能) • 参考时钟:关闭或极低频率 • 差分信号:电气空闲,共模电平 • PLL:关闭或旁路 • 功耗:1% ~ 5% • 退出延迟:数微秒

退出延迟与功耗节省权衡

L1 状态的设计核心在于 退出延迟 与 功耗节省 之间的平衡。退出延迟是指从触发 L1 退出条件到链路恢复到 L0 状态、可以正常传输数据所需的时间。该延迟主要由以下阶段构成:

阶段 典型耗时 说明
电气空闲退出 ~500 ns 发送器从共模电平切换到差分驱动,建立稳定的信号摆幅
PLL 重新锁定 ~1 μs 接收器 PLL 重新锁定到发送器的参考时钟
位锁定与符号对齐 ~500 ns 接收器恢复时钟数据,完成符号边界对齐
链路训练与恢复 ~1 μs 发送 TS1/TS2 Ordered Set,重新建立链路宽度和速率
总退出延迟 ~3 μs 典型值,具体取决于链路速率和实现
设计权衡:退出延迟每增加 1 μs,对于延迟敏感型流量(如中断、小包事务)的性能影响会显著放大。因此,L1 状态通常适用于空闲时间超过 10 μs 的场景,否则频繁进出 L1 反而会因退出开销而增加平均延迟和功耗。
L1 状态退出延迟 vs 功耗节省权衡 空闲持续时间 (μs) 功耗节省比例 (%) 退出延迟 ~3μs 不推荐区域 频繁进出 收益为负 推荐区域 空闲时间 > 10μs 净功耗节省显著 权衡点: 空闲时间 < 退出延迟 → 不节能

L1 子状态简介(L1.1 / L1.2)

为了进一步降低功耗,PCIe 规范在 L1 基础上引入了两个子状态:L1.1 和 L1.2。它们通过关闭更多电路模块来换取更低的静态功耗,但代价是退出延迟更长。下表对比了三个状态的差异:

特性 L1(基础) L1.1 L1.2
主参考时钟 关闭 关闭 关闭
PLL 状态 关闭 关闭 关闭
共模电压保持 是 是 否(可完全断电)
接收器检测电路 保持 周期性唤醒 完全关闭
典型退出延迟 ~3 μs ~10 μs ~100 μs
功耗节省 基准 比 L1 低 30% ~ 50% 比 L1 低 80% ~ 95%
适用场景 短时空闲 中等空闲 长时空闲(如待机)
注意:L1.2 状态下,由于共模电压可能完全消失,退出时需要重新建立电气连接,因此退出延迟显著增加。设计时需确保链路两端的设备均支持 L1.2,否则会回退到 L1 或 L1.1。
L1 子状态层次结构与功耗/延迟关系 L0(全速运行) L1(基础) L1.1 退出延迟 ~10μs L1.2 退出延迟 ~100μs 功耗节省:比 L1 低 30% ~ 50% 功耗节省:比 L1 低 80% ~ 95% 深度越深,延迟越大,功耗越低

ASPM 与 L1 子状态的协同

L1 子状态的进入和退出由 ASPM(主动状态电源管理) 逻辑控制。ASPM 根据链路空闲时间动态选择最合适的 L1 子状态:

  • 短时空闲(< 10 μs):不进入 L1,或仅进入 L0s。
  • 中等空闲(10 μs ~ 1 ms):进入 L1 基础状态。
  • 长时空闲(1 ms ~ 100 ms):进入 L1.1,关闭接收器检测电路。
  • 超长空闲(> 100 ms):进入 L1.2,允许共模电压完全断电。
协同设计要点:ASPM 控制器需要实时监测链路的空闲持续时间,并结合设备支持的子状态能力,做出最优的电源状态切换决策。错误的子状态选择会导致性能下降或功耗浪费。