ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pcie D3 cold

2022-01-06 14:36:06  阅读:403  来源: 互联网

标签:状态 PCIe 电源 pcie PCI cold D3 设备


从 Windows 8 开始,设备可以进入 D3cold 电源子状态,即使当系统处于 S0 电源状态。

PCI 总线规范引入了 PCI 电源管理,因此它已将 D3(关)设备电源状态拆分为两个子状态:D3hot 和 D3cold。这种区分已添加到ACPI 3.0 中的 ACPI 规范,并在 ACPI 4.0 中扩展。

Windows 始终支持这两个 D3 子状态,但仅当整个计算机退出S0(工作)系统电源状态进入睡眠或休眠状态(通常 S3 或 S4)时,Windows 7 及早期版本的 Windows 才支持 D3cold子状态。

从 Windows 8 开始,即使当系统保持为 S0 状态时,设备驱动程序可以允许其设备进入 D3cold 状态。

D3hot(通常只称作“D3”)是设备的“软关闭”状态。在此状态下,总线扫描可以检测到设备,并且发送给设备的命令可能会导致它再次打开电源。

在D3cold 中,将切断所有电源,只保留少量电源以驱动设备的唤醒逻辑。例如,对于 PCI Express (PCIe) 设备,转换到D3cold 后,经常关闭主要设备电源 Vcc。关闭 Vcc 可减少耗电量,并延长移动硬件平台在一定的电池电量下可运行的时间。

当设备处在D3cold 时,总线扫描将无法检测到该设备,并且该设备不能接收命令。恢复 Vcc 电源会将设备置于未初始化状态,通常相当于 D0状态。然后,软件必须重新初始化该设备以将其置于工作状态。

将设备置于 D3cold 并不意味着已切断供给设备的所有电源 — 它仅表示切断了主电源 Vcc。如果唤醒逻辑不需要辅助电源Vaux,也可能会将其切断。但是,可能需要将唤醒事件通知给处理器的设备必须能够获取足够电源,以便操作唤醒逻辑。例如,切断其主电源的以太网接口卡(NIC) 可能从以太网电缆获取足够电源。

或者,供给 Wi-Fi NIC 的待机电源可能从 PCIe接口之外的电源提供,在这种情况下,可能会完全关闭 PCIe 接口。

所有设备都需要支持D0和D3(both D3hot & D3cold)。

 

D3状态,又称为Full-Off状态。其也有两个子状态D3 Hot状态和D3 Cold状态。当设备进入D3 Hot状态,表明该设备的电源尚未切断;而进入D3Cold状态,则表明设备的电源已被切断,如有Vaux存在,则链路进入L2状态,否则进入L3状态。

软件层可以通过向PMCSR(Power Mgt Control and Status Register)的PowerState位置写相关值,使得设备的某个Function进入D3 Hot状态。在D3 Hot状态下,该Function只能发送PME消息和PME_TO_ACK消息或者应答配置请求和PME_Turn_Off消息。

在进入D3状态之前,软件必须保证所有重要的Non-Posted的请求都收到了与之匹配的Completion。这可以通过配置空间中的设备状态寄存器的相关位来查询。如果由于目标PCIe设备故障,导致其长时间内无法接收到Completion,则软件必须要等待足够长的时间在执行进入D3的操作。当Function进入D3 Hot状态后,链路则会强制进入L1状态。此时Function的内容(寄存器中的数据等)将会丢失,但是PCIe设备必须要保证PME的相关内容不受影响,这样才能在D3 Hot状态下产生PME消息。

 

如何进D3 cold?

在D3 Hot状态下,当PCIe设备的电源(Vcc)被断开后,则自动从D3 Hot状态进入D3 Cold状态。退出D3 Cold状态可以使用CLKREQ#或PERST#信号或Beacon信号或WAKE#信号。此后,可能还需要一次复位操作,才能使得该Function进入D0活动状态。

配置pcie power status pmcap设置为D3,即可进入D3 hot状态。在D3 Hot的情况下,软件可以向Function的PMCSR中的PowerState位置(与前面的pcie power status pmcap应该是一个意思)写入相关内容,使得Function从D3 Hot状态切换为D0未初始化状态。

如下图为D状态转换

 

 

 

 

附:PCIe总线定义的与功耗管理功能

PCIe总线定义的与功耗管理功能(Power Management,PM)相关的主要有:PCI-Compatible PM、Native PCIe Extensions、Bandwith Management和Event Timing Optimization。

其中,PCI-Compatible PM是一种在软件上和硬件上都与PCI-PM(定义在ACPI Spec中)兼容的模式,其要求PCIe设备的每个Function都包含PCI Power Management Capability寄存器。软件可以通过配置请求(Configuration Request)的方式来切换PCIe设备的某个Function的PM状态。在PCIe Spec V2.1中,还引入了动态功耗分配(Dynamic Power Allocation,DPA)的功能,具体请参考相关Spec,该模式并非本文介绍的重点。

本文介绍的重点为Native PCIe Extensions模式。该模式定义了一个基于硬件的,自发的链路功耗状态管理单元(Active State Power Management for the Link,ASPM),以及相关的唤醒机制(后面会详细讲)。PCIe设备之间通过功耗管理事件(Power Management Event,PME)来进行相互通信,并控制功耗状态的切换。而功耗管理事件(PME)本质上是一种Message。

在PCIe Spec V2.1中,还引入了带宽管理功能(前面的文章也提到过),这里就不详细介绍了,具体请参考相关的Spec。

此外,Event Timing Optimization主要是针对Native PCIe Extensions模式中的PME的时序优化和防死锁(Dead-Lock)等,本文也不再详细介绍,具体请参考Spec相关内容或者Mindshare的书籍的相关章节。

PCI Power Management Capability寄存器对于PCI总线来说是可选的,但是对于PCIe总线来说则是强制的。该寄存器位于PCI-Compatible的配置空间中,其Capability ID为01h。如下图所示:

 

 

 ACPI(Advanced Configuration and Power Interface) Spec主要定义的是操作系统层面上的PM,在ACPI指定之前,各个厂商的设备之间的PM兼容性很差,甚至是完全不兼容。而ACPI的出现,统一了操作系统层PM(即OSPM)的规范。OSPM的各个功耗状态定义如下:

 

标签:状态,PCIe,电源,pcie,PCI,cold,D3,设备
来源: https://www.cnblogs.com/vitaminVIP/p/15770186.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有