一、L1.1 状态的使用时机
L1.1 是比 L1.0 更深的低功耗状态,但不如 L1.2 深。它的使用时机主要是:
- 设备支持 ASPM L1.1,但不支持 L1.2:一些设备或平台可能没有实现完全的 L1.2(例如参考时钟无法关闭),此时只能使用 L1.1 来进一步节能。
- LTR(延迟容忍报告)不足以支持 L1.2 的退出延迟:比如设备报告只能容忍 < 100 µs 的服务延迟,而平台估算 L1.2 退出需要 > 200 µs,那就只会进入 L1.1。
- 平台策略选择不进入 L1.2:有时操作系统或固件(例如 BIOS/UEFI)可以通过配置只允许进入 L1.1,而禁止 L1.2,以控制唤醒延迟。
总结:L1.1 是 L1.2 的“次优解”,在不能进入 L1.2 时,L1.1 提供中等的功耗降低 + 较低的退出延迟。
二、L1.1 和 L1.2 的主要区别
项目 | L1.0 | L1.1 | L1.2 |
---|---|---|---|
时钟状态 | 保持 REFCLK | 保持 REFCLK | 关闭 REFCLK |
PHY 状态 | PLL 打开 | PLL 关闭 | PLL + Common Mode Keeper 全关闭 |
功耗 | 中等节能 | 更低功耗 | 最深节能状态(接近0功耗) |
唤醒时间 | < 10 µs | 约 60–100 µs | 可达 100–300+ µs(取决于平台) |
是否需要 LTR | 否 | 否 | 是,必须支持 LTR |
CLKREQ# 使用 | 可选 | 必须支持 | 必须支持并用于唤醒 |
参考时钟 | 通常保持 | 通常保持 | 可关闭(RefclkOff) |
退出过程 | 直接训练到L0 | L1.1 → Recovery → L0 | L1.2 → L1.0 → Recovery → L0 |
总结:
- L1.1 和 L1.2 都属于 ASPM L1 子状态,都是比 L1.0 更省电的状态。
- L1.1 关闭的是 PHY 的高速部分(PLL、发射器接收器),但仍维持 Common Mode Keeper(保持链路线上的共模电压),所以可以更快唤醒。
- L1.2 连 Common Mode Keeper 都关闭,使得链路进入完全“冷电”状态,功耗最小但恢复时间最长。
三、进入 L1.1/L1.2 是否需要搭配 Power Gating?
答案:不是强制要求,但“建议强烈搭配”。
- L1.1 和 L1.2 是链路(Link)级别的低功耗状态,控制的是 PCIe PHY 和时钟。
- Power Gating 是芯片内部电源域的关断机制,比如把 PCIe 控制器或某些模块断电。
两者的关系如下:
技术 | 控制层级 | 是否必须 | 功能 | 通常谁控制 |
---|---|---|---|---|
L1.1 / L1.2 | PCIe链路 | 否 | 关闭PHY、参考时钟等 | 硬件自动或驱动协作 |
Power Gating | 芯片内部模块 | 否 | 关闭整个IP模块/逻辑域 | 固件/SoC Power Manager |
进入 L1.1/L1.2 后,如果平台检测到设备将长时间不工作,就可以进一步用 Power Gating 将整个 PCIe 控制器、PHY、甚至外围模块断电,以节省更多功耗。
例如在笔记本平台中,典型流程是:
- 链路空闲,PCIe 进入 L1.2。
- REFCLK 被关闭。
- SoC 中的平台控制器感知这一状态,开启 Power Gating。
- 当设备唤醒时,先重启 REFCLK、退出 L1.2,再恢复供电(Power Up)控制器模块。
所以:
- 进入 L1.1/L1.2 不强制要求 Power Gating。
- 但在很多平台中,Power Gating 是配合 L1 子状态进一步节能的常用手段。
- 实现 L1.2 时,最好同时在 SoC 或设备内部引入 电源域控制器(PMU、PMC),从而实现完整的“断时钟 + 断电源”的最大节能链路管理。
补充说明:如何判断系统支持 L1.1 / L1.2
可以查看设备或平台 BIOS/UEFI 设置是否启用了 ASPM L1 Substates。另外通过 lspci -vv
命令可看到某个 PCIe 设备是否支持 L1.1/L1.2。例如:
LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance: 0, ... Active State Power Management (ASPM): L1 Substates supported
还可通过读取 PCI 配置空间的 Capabilities,确认是否设置了 L1 PM Substates Control Register,以及 CLKREQ# 和 T_POWER_ON 配置。