2. PCIe电源管理基础:ASPM与软件电源管理,L1子状态(L1.1, L1.2)简介
PCIe链路在空闲或低流量场景下,通过电源管理机制降低功耗,是系统设计中至关重要的环节。本章聚焦于PCIe电源管理的两大核心驱动力:主动式电源管理(ASPM)与软件驱动的电源管理,并深入解析L1链路的两个子状态——L1.1与L1.2。理解这些基础是后续设计快速恢复状态机的先决条件。
2.1 电源管理架构概览
PCIe电源管理分为两个层次:链路层的ASPM(硬件自主控制)和事务层/软件层的电源管理(操作系统或驱动程序控制)。两者协同工作,共同决定链路何时进入低功耗状态。
2.2 ASPM:主动式电源管理
ASPM是PCIe规范定义的硬件自主电源管理机制,允许链路在不经过软件协商的情况下,根据链路空闲时间自动进入低功耗状态。ASPM主要包含两个层次:
- L0s:快速进入/退出,功耗降低有限,适用于短暂空闲。
- L1:更深度的省电状态,退出延迟较大,适用于较长空闲。
ASPM的使能通过配置空间的链路控制寄存器(Link Control Register)中的ASPM控制字段(2-bit)进行配置:
| ASPM控制字段值 | 模式 | 说明 |
|---|---|---|
| 00b | 禁用 | 不启用任何ASPM状态 |
| 01b | L0s 仅启用 | 仅允许进入L0s |
| 10b | L1 仅启用 | 仅允许进入L1 |
| 11b | L0s 和 L1 均启用 | 允许进入L0s和L1 |
2.3 软件电源管理
软件电源管理由操作系统或设备驱动程序通过PCIe配置空间中的电源管理能力结构(Power Management Capability Structure)控制。核心寄存器为PMCSR(Power Management Control/Status Register)。
软件通过写PMCSR的PowerState字段(2-bit)请求链路进入特定状态:
- D0 (00b):全功能状态,链路处于L0。
- D1 (01b):轻度睡眠,链路可能进入L1。
- D2 (10b):深度睡眠,链路进入L1。
- D3hot (11b):关闭状态,链路进入L1或L2/L3。
软件电源管理通常用于系统级休眠(如Suspend-to-RAM),而ASPM则用于运行时动态节能。两者互不冲突,但最终状态由LTSSM根据优先级仲裁。
2.4 L1子状态:L1.1 与 L1.2
传统L1状态虽然省电,但退出延迟较长(通常几微秒)。为了进一步降低功耗,PCIe规范引入了L1的两个子状态:L1.1 和 L1.2。它们通过在L1基础上关闭更多电路和时钟来换取更低的功耗,但代价是退出延迟增加。
2.5 L1.1 与 L1.2 的关键差异
下表详细列出了L1、L1.1和L1.2在电气特性与恢复机制上的核心区别:
| 特性 | L1 | L1.1 | L1.2 |
|---|---|---|---|
| 主时钟 (Refclk) | 运行 | 运行 | 可关闭 (SRIS模式) |
| PLL | 保持锁定 | 关闭 | 关闭 |
| 接收器检测 | 不检测 | 不检测 | 需周期性检测 |
| 电气空闲 | 是 | 是 | 是 |
| 退出机制 | 电气空闲退出 | 电气空闲退出 | 需唤醒信令 (WAKE#) |
| 典型退出延迟 | ~2 μs | ~10 μs | ~100 μs |
| 功耗节省 | 中等 | 高 | 极高 |
2.6 子状态进入条件与协商
进入L1.1或L1.2并非自动发生,需要链路两端通过L1 PM Substates (L1 PMSS)能力结构进行协商。协商过程涉及以下关键步骤:
- 能力声明: 设备在配置空间中声明支持的L1子状态(L1.1、L1.2)。
- 软件使能: 驱动程序通过写L1 PM Substates控制寄存器启用特定子状态。
- 硬件握手: 当链路进入L1后,主设备通过发送L1 PM Entry Request消息请求进入更深子状态。
- 从设备确认: 从设备回复L1 PM Entry Acknowledge消息,完成握手。
- 状态迁移: 链路从L1迁移至L1.1或L1.2。
2.7 小结
本章介绍了PCIe电源管理的两大支柱:ASPM(硬件自主)与软件电源管理(驱动控制),并详细分析了L1子状态L1.1和L1.2的电气特性、功耗与延迟权衡以及进入流程。这些知识是理解后续链路快速恢复状态机设计的基础——特别是L1.2的长退出延迟,将直接影响恢复状态机的定时器设计与状态迁移策略。