下列步骤用于描述 PCI Express® 端点转换为 PPM L3 状态的过程:
- 在接收到来自上游链路伙伴的 PME_Turn_Off 报文时,核会通过协商来转换为 L23 就绪链路状态。
- 接收到 PME_Turn_Off 报文时,核会通过 cfg_power_state_change_interrupt 与用户逻辑发起握手(如下表所示),并期望用户逻辑返回
cfg_power_state_change_ack
。 - 握手成功将导致核向其上游链路伙伴发射功耗管理关闭确认 (
PME-turnoff_ack
) 报文。 - 核会关闭其所有接口、禁用物理层/数据链路层/传输事务层,并准备好对核进行断电。此规则存在下列 2 个例外:
- 核配置为端点,且启用用户配置空间。在此情况下,如果
cfg_function_power_state
指示非 D0 结果,那么用户应用必须停止发送新的请求 TLP,但是用户应用可以向目标为用户配置空间的配置传输事务返回完成包。 - 核配置为根端口。为了在此情况下仍保持合规,如果
cfg_function_power_state
指示非 D0 结果,那么用户应用必须停止发送新请求。
- 核配置为端点,且启用用户配置空间。在此情况下,如果
端口名称 | 方向 | 描述 |
---|---|---|
cfg_power_state_change_interrupt | 输出 | 如果接收到来自上游器件的掉电请求 TLP,则断言此端口有效。断言有效后,cfg_power_state_change_interrupt 将保持断言有效状态,直至用户应用断言 cfg_power_state_change_ack 有效为止。 |
cfg_power_state_change_ack | 输入 | 当可安全掉电时,由用户应用断言此端口有效。 |
掉电协商遵循如下步骤:
- 在电源和时钟关闭前,下游开关中的根联合体或热插拔控制器会发出
PME_Turn_Off
广播报文。 - 当核接收到此 TLP 时,它会向用户应用断言
cfg_power_state_change_interrupt
有效,并开始轮询cfg_power_state_change_ack
输入。 - 当用户应用检测到
cfg_to_turnoff
断言有效时,它必须完成正在进行中的所有数据包,并停止生成任何新的数据包。当用户应用准备好关闭时,它会向核断言cfg_power_state_change_ack
有效。断言cfg_power_state_change_ack
有效后,用户应用将落实关闭。 - 核检测到
cfg_power_state_change_ack
断言有效后,就会发送PME_TO_Ack
报文。
图 1. 功耗管理握手:64 位