相关寄存器
Power Management Capabilities(PMC)寄存器
该可以识别电源管理能力:
寄存器域 | 描述 |
Cap_ID | 01h将链表项标识为PCI Power Management寄存器 |
Next Capability Pointer | 提供Function的 PCI 配置空间的偏移量,指向Function能力列表中下一项的位置。 如果 Capabilities List 中没有其他项目,则该寄存器设置为 00h。 |
Version | 011b表示支持1.2版本PCI Power Management Interface Specification |
PME_Clock | 0:不需要时钟产生PME#; 1:需要PCI时钟产生PME#; |
RsvdP | 保留 |
Device Specific Initialization(DSI) | 1:function转换到D0-uninit状态需要特定初始化流程。 |
AUX Current | 3.3Vaux辅助电源电流要求; 3‘b000:0; 3‘b001:55mA; 3‘b010:100mA;3‘b011:160mA; 3‘b100:220mA;3‘b101:270mA;3‘b110:320mA;3‘b111:375mA; |
D1 Support | 0:不支持D1; 1:支持D1; |
D2 Support | 0:不支持D2; 1:支持D2; |
PME_Support | bit(27):PME#能够在D0状态内发起; bit(28):PME#能够在D1状态内发起; bit(29):PME#能够在D2状态内发起; bit(30):PME#能够在D3-hot状态内发起; bit(31):PME#能够在D3-cold状态内发起; |
Power Management Control/Status(PMCSR)寄存器
该寄存器控制Function进入特定的工作状态。PMCSR寄存器如下:
寄存器域 | 描述 |
Power State | 决定function当前的功耗状态和设置function要进入的状态。 |
RsvdP | 保留域 |
No_Soft_Reset | 1:指示设备从D3hot转换为D0;配置信息保留; 0:软件控制Power State以完成D3hot到D0转换,配置信息丢失; |
PME Enable | 1:使能PME#; 0:关闭PME# |
Data Select | 指示Data Register和Date Scale上报那个数据; |
Data Scale | 指示解释Date寄存器时的比例因子; |
PME Status | 1:发起PME#; 0:不发起PME#; |
RsvdP | 保留域 |
B2/B3 Support | 1:当bridge被设置为D3hot,将关闭其第二级总线时钟; 0:当bridge被设置为D3hot,将移除其第二级总线时钟; |
Bus Power/Clock Control Enable | 1:使能总线功耗/时钟控制机制; 0:关闭总线功耗/时钟控制机制; |
Data | 上报状态数据,如功耗和散热。 |
功耗管理控制流程
进入L1流程
配置power state为D1,D2,D3,数据链路会进入L1低功耗状态,进入过程如下图所示:
都是进入L1,但是他们的功耗应该有所不同。D1>D2>D3;实际可以通过不同程度的关闭serdes来实现不同的功耗。比如:D1时不关闭Serdes;D2时关闭Serdes的rx_path;D3时关闭Serdes的PLL。
对于RC而言,进入L1不需要累计足够的credit来发送TLP;而EP则需要等到credit能够发送最长的TLP。
退出L1流程
EP和RC都可以发起退出L1。当任意一端需要发送TLP,则需要发起退出L1.
进入L2/L3 Ready流程
在任意D状态,PME_Trun_Off和PME_To_Ack握手完成后,Downstream必须利用PM_Enter_L23 DLLP申请进入L2/L3 Ready。
PME_Trun_Off和PME_To_Ack握手参考PME机制。