https://blog.csdn.net/weixin_48180416/article/details/115576240
前言
此篇为Power Management概述。下一篇介绍L1低功耗状态。
正文
PCIe的Power Management(PM)分为两种:
PCI-Compatible PM: 符合PCI协议的电源管理,由软件通过Configuration Requests发起;
Active State Power Management(ASPM):定义基于硬件控制的电源管理,同时定义了唤醒系统的机制,PME message机制。
基本知识:
PCIe 包含四种电源状态——D0,D1,D2,D3 (D3hot,D3cold)
1. D0和D3是强制必须存在的状态,D1和D2是可选的状态;
2. D0是full power的状态,D1为slight sleep, D2为deep sleep,D3hot无Main Power但是存在AUX Power,D3cold是全部off的状态;
3. D0分为D0uninitialized和D0active状态, Convertional Reset(后续会介绍)和FLR后会进入D0uninitialized,配置BME,MSE,ISE后会进入D0active;
4. 按照省电的顺序D0<D1<D2<D3hot<D3cold
PCIe包含几种链路状态:
L0,L0s,L1,L2 (L1包含子状态,后续再介绍)
1. L0是Fully Active状态;
2. L0s,低功耗模式,仅支持ASPM方式,是硬件自动发起的,软件无法控制,是单向的,比如upstream有大量数据,downstream没有数据的时候downstream可以独立的进入L0s;
3. L1,低功耗模式,支持两种方式PCI-PM,ASPM;L1子状态可以关闭参考时钟、Tx common mode电路,Rx electric idle detect电路更加省电;
4. L2,低功耗模式,仅支持PCI-PM方式,关闭参考时钟、关闭PLL、关闭Main Power, 但是需要保留Aux Power;
5. L3,低功耗模式,仅支持PCI-PM方式,处于所有power都off的状态;
6. 按照省电的顺序L0<L0s<L1<L2<L3,越省电的状态recovery到L0正常工作状态的时间就会越长。
电源状态和链路状态是有对应关系的,需要熟悉以下几点:
1. D0状态下可以对应L0,L0s,L1;
2. D1、D2、D3hot对应的链路状态是L1;
2. D3cold对应的链路状态是L2,L3。
寄存器方面:
有两个很重要的寄存器可以先简单的了解下:
1. PCIe配置空间的Power Management Capabilities的Power Management Control/Status(PMCSR)包含PowerState bit位, 为电源状态, 其中00-D0 01-D1 10-D2 11-D3hot
2.PCIe配置空间的Power Management Capabilities的Power Management Control/Status(PMCSR)包含PME_EN bit位,为PME Message使能,只有PME Support位为1(Power Management Capabilities寄存器中)且PME_EN=1时,可以发起PME Message.
PCI-PM和ASPM:
先简要地介绍下PCI-PM和ASPM,后面会详细介绍。
(1)PCI-PM:
由Power management software发起, 例如RC和EP相连的情况下,RC会向EP发起CfgWr配置EP的PMCSR 寄存器PowerState改变直接电源状态,这会自动引起链路状态的改变;
例如配置EP为D1,D2,D3hot状态,会使EP进入L1状态
(2)ASPM
包含L0s和L1 ASPM,ASPM名称的“Acitve”的意思可以理解为L0s和L1 ASPM都是在D0下发生的。
ASPM是基于硬件“hardware-based”的电源管理,软件不能控制具体的过程只能enable/disable