在空闲状态和活动状态之间过渡

在睡眠期间,Windows 会定期将 SoC 平台从空闲模式转换为活动模式,以执行增值活动(如接收电子邮件通知或执行维护任务)。 另外,为了响应用户输入、来自网络设备的中断和其他硬件事件,可以按需转换到活动模式。

在 SoC 进入 DRIPS 状态后,平台通常处于其最低功耗模式。 在睡眠期间,平台会定期在此空闲 (DRIPS) 模式与活动模式之间进行切换。 在睡眠期间实现低功耗的方式是,让平台大部分时间处于 DRIPS 模式,极少的时间处于活动模式。

从空闲转换为活动

由于以下原因,Windows 会将 SoC 转换为活动模式:

  • 因网络设备(Wi-Fi 设备、移动宽带设备或以太网设备)发出的中断而导致的按需唤醒事件。 当检测到匹配的 WoL 模式时,或者介质或连接状态发生更改时,网络设备会生成一个中断。 此中断使用带外 GPIO、带内 USB 恢复信号或 PCI PME 中断唤醒 SoC。
  • 由于某个源(如电池电量计、电池充电控制器或热传感器)发出的平台设备中断导致的按需唤醒事件。
  • 由于某个中断导致的按需唤醒事件,由用户在键盘、触摸板、外部 USB 外围设备、电源按钮或机盖开关上进行输入导致。

当 SoC 唤醒且平台退出 DRIPS 状态后,CPU 会再次开始运行代码。 但是,除非中断是用户输入或连接到电源导致的,否则屏幕会保持关机状态。 如果中断对应于用户输入,则导致中断的设备的驱动程序负责向 OS 报告用户状态。 Windows 电源管理器决定是否应打开屏幕;系统设计人员只需确保来自每个设备的中断都已连接并进行编程以将 SoC 从 DRIPS 状态唤醒。

系统设计人员必须与 SoC 供应商紧密合作,以便连设备中断进行 SoC 唤醒。 某些 SoC 设备要求将设备中断连接到特殊的“支持唤醒”的输入,或配置为使用系统固件进行唤醒。

从活动转换为空闲

在停止所有软件活动,并且 SoC 芯片的内部和外部设备进入低功耗状态后,Windows 会将 SoC 平台从活动模式转换为空闲模式。

在睡眠期间,SoC 会基于上一部分所述的触发器在空闲和活动模式之间进行转换。 每当 SoC 处于活动状态时,Windows 就会主动尝试将其返回到空闲 (DRIPS) 状态,以降低功耗。

当系统退出新式待机以响应用户输入(例如按电源按钮)时,SoC 也会处于活动状态。 当满足以下所有条件时,会自动将 SoC 恢复到空闲 (DRIPS) 状态:

  • SoC 外的所有设备都已关闭。
  • 所有网络和无线电设备都已进入低功耗状态,以等待与 WoL 模式或唤醒中断匹配的数据包。
  • SoC 内部的所有主机控制器都已关闭。
  • 所有应用后台任务都已完成。
  • 所有 CPU 和 GPU 活动都已停止,并且所有 CPU 都处于空闲状态。

几乎所有新式待机电源问题都与确保已满足所有这五个条件相关。 Windows 包含一个名为 SleepStudy 的内置诊断工具,该工具有助于发现当 SoC 无法进入空闲 (DRIPS) 状态时,这其中的哪些条件未得到满足。