终于买到了想要的电脑,可以快乐的写文章了,先翻译一下现在工作需要的文章,了解一下电源管理。
链接
- Device Power States (Microsoft) 原文
- System Power States (Microsoft) 原文
- System Working State S0
- Sending IRP_MN_QUERY_POWER or IRP_MN_SET_POWER for Device Power States
- Handling IRP_MN_QUERY_POWER for Device Power States
- Handling IRP_MN_SET_POWER for Device Power States
- Supporting D3cold in a Driver
- System Sleep States (Linux Kernel 4.15.0)
翻译
Device Power State 描述了设备在计算机中的电源状态,并且在一个计算机里每一个设备的电源状态都是独立的。Device Power State 被命名为 D0、D1、D2、D3。D0 是满功率运行状态,D1 - D3 为低功耗状态,状态编号与功耗成反比,编号越高的状态功耗越低。从 Win8 开始,D3 状态分为了两个子状态,D3hot 和 D3cold。
Device Power State 应该有以下属性:
- 功耗:设备使用多少功率?
- 设备上下文:设备在此状态下保留多少操作上下文?
- 设备驱动程序行为:设备驱动程序必须执行哪些操作才能将设备还原到完全运行状态?
- 恢复时间:将设备恢复到完全运行状态需要多长时间? 大多数类型的设备具有适度的还原时间,从一个设备类别到下一设备类别几乎没有什么不同。 只有极少数类型的设备(例如GPU)具有非常大的硬件环境,因此恢复时间要长得多。
- 唤醒功能:设备可以从该状态请求唤醒吗? 通常,如果设备可以请求从给定的电源状态(例如,D2)唤醒,则它还可以请求从任何更高功率的状态(D1)唤醒。
电源状态的确切定义是特定于设备的。 并非所有设备都定义所有状态。 许多设备仅定义D0和D3状态。 请参阅设备类电源管理参考规范,以了解为特定设备定义了哪些设备电源状态以及每种状态的操作要求。 (参考规范可在ACPI /电源管理网站上找到。)
设备的电源状态不必与系统电源状态匹配。 例如,即使系统处于系统工作状态(S0),某些设备也可能处于关闭(D3)状态。
设备的电源状态似乎与设备的父总线的电源状态无关。 例如,当USB设备的父主机控制器处于D3状态时,它可能处于D2(选择性挂起)状态。 这两个状态似乎不一致,仅是因为Dx状态的定义在USB和USB主机控制器连接到的总线(通常是PCI或PCI Express)上不同。
请注意,某些设备在单个设备的电源状态下可以具有几种不同的低功耗模式。 如果此类设备的驱动程序可以在不更改设备电源状态的情况下自动将其从一种模式切换到另一种模式,则可以使用这些模式。 但是,作为一般规则,如果两种模式之间没有用户可感知的差异,则设备应仅使用最低功耗模式。 如果低功耗模式(例如低速模式)对性能产生不利影响或对除设备驱动程序以外的软件不透明,则硬件不应自动使用它。 有关详细信息,请参见设备类电源管理参考规范。
Driver 或电源管理器(power manager )可以请求设备电源状态转换,并且所有驱动程序必须准备就绪以处理请求此类转换的IRP。 有关更多信息,请参见以下主题:
与系统一样,设备可以从工作状态(D0)过渡到任何低功耗状态(D1,D2或D3),也可以从任何低功耗状态过渡到工作状态。 下图是一个状态图,显示了有效的设备电源状态转换。
此图显示了D3细分为D3hot和D3cold。 D3hot和D3cold是从Windows 8开始定义的。所有设备都必须支持D0状态和D3hot子状态。 图中显示的其他状态是可选的。
在上图中,从D3hot到D3cold的转换是器件低功耗状态之间唯一的直接转换。 低功耗状态之间的所有其他转换都需要中间过渡到D0,这允许设备驱动程序根据需要配置设备硬件,以进入下一个低功耗状态或停留在D0中。 但是,当关闭设备电源时,设备会退出D3hot并进入D3cold,这不需要设备驱动程序的干预。 在设备进入D3hot之前,此驱动程序将对设备硬件进行任何必要的配置。 无需其他配置即可为从D3hot到D3cold的过渡准备设备。 有关更多信息,请参见在驱动程序中支持D3cold。
PCI Root Port 到 endpoint D-state 的映射
在Windows 10系统上,总体平台电源状态取决于SoC(片上系统)集成设备(包括PCI根端口)的电源状态(D-state)。 根据所开发平台的不同,每个平台电源状态对PCI根端口的 D-state 要求可能会有所不同。 鼓励OEM参考IHV平台特定的文档,以了解平台和设备的电源状态要求。
下表列出了PCI根端口及其连接的端点的电源状态映射。 为了使根端口进入目标 D-state,必须实现下面列出的端点的 D-state。
Root Port Target D-State | Endpoint D-State |
---|---|
D0 | D0, D0:F1 |
D0:F1 | D3hot |
D3hot | D3cold1 |