Overview
电源管理主要是分为两个大类:D states 和 L states。
D states 是和某个特定的 Function 有关的电源状态:
-
-
- D0为运行状态,功耗最大
- D1、D2为中间省电状态
- D3Hot是一个非常低的功率状态
- D3Cold为关机状态
-
L states 是和特定的 link 有关的电源状态:
-
-
- L0是运行状态
- L0p是L0的低功率子状态
- L0s, L1, L1.0, L1.1和L1.2是各种低功率状态
-
电源管理主要提供如下服务:
- 识别给定功能的电源管理功能的机制
- 将功能转换到某种电源管理状态的能力
- 通知当前功能的电源管理状态
- 在特定事件上唤醒系统的选项
下面是链路状态的转化:
Device Power Management States (D-States) of a Function
设备电源状态主要有以下几个:
-
- D0:是设备正常运行的状态,其他的模式则是用于节能从而关闭部分操作,从而达到节能的目的,但是更低的功耗也就一位置恢复到 D0 状态的时间需要更多。
- D1:可选的状态,D1 发生时除了消息以及配置 TLP 可以接收,其他所有的请求都会视为不支持的 TLP。若是发生 TLP 错误,则需要返回至 D0 状态处理 D0 到 D1 是需要软件参与的,用于保存任何的状态信息,并且从 D0 切换至 D1 需要处理完所有的 TLP。
- D2:也是可选的状态,设备可能有段时间未使用,则进入,显著提高节能能力,但是同时保留直接唤醒至 D0 的能力。相同链路中只能有配置以及信息请求,其他的请求也是未支持的。
- D3 状态又可以分成两类:
-
-
- D3 hot:
-
-
-
-
- No_Rest_Soft = 1----------function 的上下文是在 D3 hot 的状态下收集的,若是软件从 D3hot-->D0 状态,需要重新初始化 Function。
- No_Rest_Soft = 0----------Function 的上下文不在 D3 hot 状态下收集,所以不能确认上下文是否被清除,所以需要重新初始化。
- Note:若是链路层切换至 L2/L3 ready,则不需要管 No_Rest_Soft 的值,都是需要重新初始化的。
-
-
-
-
- D3 cold:在设备电源移除之后进入的状态,若是重新进入 D0 状态需要 Function 重新进行初始化。
-
PCI Bridges and Power Management
由于电源管理是在操作系统的指导下进行的,因此每一类函数都必须有一个明确定义的标准,以确定功能可用性,以及在每种电源管理状态下运行时必须保留哪些功能上下文。一些示例设备类规范已经被提议作为ACPI规范的一部分,用于从音频到网络外接卡的各种功能。虽然为大多数函数定义特定于设备类的行为策略超出了本规范的范围,但定义PCI桥接函数所需的行为,这里的定义适用于所有三种类型的PCIe桥:
-
-
- Host bridge, PCI Express to expansion bus bridge, or other ACPI enumerated bridge
- Switches
- PCI Express to PCI bridge
- PCI-to-CardBus bridge
-
控制这些函数状态的机制在一定程度上取决于哪种类型的起源设备存在。下面的部分描述这些机制是如何在三种类型的桥上工作的.
介绍PCI Express Bridge功能的电源管理策略。PCI Express Bridge 可以被描述为具有次级总线下游的始发设备。介绍网桥功能的电源管理状态与其从母线的电源管理状态之间的关系。从图5-19中可以看出,从操作系统的角度来看,本章描述的PCI Express Bridge行为对于主机桥、交换机和PCI Express到PCI桥都是通用的。
Switches and PCI Express to PCI Bridges
交换机或PCI Express到PCI桥的次要总线的电源管理策略与为任何桥功能定义的策略相同,桥函数的PMCSR_BSE寄存器中的BPCC_En和B2_B3#总线电源/时钟控制字段支持与任何其他桥相同的功能。
Power Management Events
电源管理事件有两种类型:
- 唤醒事件
- PME 产生
Wakeup事件用于请求打开电源。PME生成事件用于向系统标识请求上电的函数。在传统的PCI中,这两个事件都与pme#信号相关。pme#信号由函数断言,以请求更改其电源管理状态。
当PME_En位被设置并且事件发生时,函数设置PME_Status位,并断言pme#信号。它保持pme#信号断言,直到PME_En位或PME_Status被清除(通常由软件)。
在PCI Express中,Wakeup事件与wake#信号相关联。如果支持,WAKE#信号在相关的外形规格中定义,当功能处于D3Cold和PME_En设置时,函数使用该信号来请求更改其PCI-PM电源管理状态。