CPU 在睡眠模式下是否处于活动状态?

CPU 在睡眠模式下是否处于活动状态?

假设在 Windows 操作系统上,您将计算机切换为睡眠模式并将其收起。据我所知,不会有任何程序或进程在运行。

但处理器是否还会跑步或者以某种方式在幕后活跃并利用权力?

因为当您在运行 Windows 7/8.1/10 的现代计算机上执行任何操作时,例如打开盖子、按下按钮、触摸鼠标,它都会立即自动开机,而无需按下电源按钮。那么,是因为 CPU 在低功耗状态下正在积极等待这些事件吗?

答案1

CPU 在睡眠模式下是否处于活动状态?

视情况而定。有不同的睡眠状态(S1 至 S4),并且 CPU 状态在所有睡眠状态下都不相同。

  • CPU 停止在睡眠状态 S1
  • CPU 在睡眠状态 S2 或更高状态下断电。

睡眠通常是睡眠状态 S3,但有时可以将 BIOS 配置为使用睡眠状态 S1(当从 S3 恢复无法正常工作时使用)。

powercfg -a可用于查看 PC 支持哪些睡眠状态。

示例输出:

F:\test>powercfg -a
The following sleep states are available on this system: 
Standby (S3) Hibernate Hybrid Sleep
The following sleep states are not available on this system: 
Standby (S1)
    The system firmware does not support this standby state.
Standby (S2)
    The system firmware does not support this standby state.

系统休眠状态

S1、S2、S3 和 S4 状态是休眠状态。处于这些状态之一的系统不执行任何计算任务,并且似乎处于关闭状态。但是,与处于关机状态 (S5) 的系统不同,休眠系统会保留内存状态,无论是在硬件中还是在磁盘上。无需重新启动操作系统即可将计算机恢复到工作状态。

某些设备可以在发生某些事件(例如调制解调器接到来电)时将系统从睡眠状态唤醒。此外,在某些计算机上,外部指示器会告知用户系统只是处于睡眠状态。

随着从 S1 到 S4 的每个连续睡眠状态,计算机的更多部分被关闭。所有符合 ACPI 标准的计算机都会在 S1 时关闭其处理器时钟,并在 S4 时丢失系统硬件上下文(除非在关机前写入休眠文件),如以下部分所列。中间睡眠状态的详细信息可能因制造商设计机器的方式而异。例如,在某些机器上,主板上的某些芯片可能会在 S3 时断电,而在其他机器上,此类芯片会一直保持供电直到 S4。此外,某些设备可能只能从 S1 唤醒系统,而不能从更深的睡眠状态唤醒系统。

系统电源状态 S1

系统电源状态 S1 是睡眠状态,具有以下特征:

能量消耗

  • 功耗低于 S0,高于其他睡眠状态。处理器时钟关闭,总线时钟停止。软件恢复

  • 控制从中断处重新开始。

硬件延迟

  • 通常不超过两秒。

系统硬件环境

  • 所有上下文均由硬件保留和维护。

系统电源状态 S2

系统电源状态 S2 与 S1 类似,不同之处在于,由于处理器断电,CPU 上下文和系统缓存的内容会丢失。状态 S2 具有以下特征:

能量消耗

  • 功耗低于 S1 状态,高于 S3 状态。处理器关闭。总线时钟停止;某些总线可能断电。软件恢复

  • 唤醒后,控制从处理器的复位向量开始。

硬件延迟

  • 两秒或更长时间;大于或等于 S1 的延迟。

系统硬件环境

  • CPU 上下文和系统缓存内容丢失。

系统电源状态 S3

系统电源状态 S3 是睡眠状态,具有以下特征:

能量消耗

  • 消耗比 S2 状态少。处理器关闭,主板上的某些芯片也可能关闭。

软件恢复

  • 唤醒事件发生后,控制从处理器的复位向量开始。

硬件延迟

  • 几乎与 S2 没有区别。

系统硬件环境

  • 仅保留系统内存。CPU 上下文、缓存内容和芯片组上下文均会丢失。

系统电源状态 S4

系统电源状态 S4,即休眠状态,是功耗最低的睡眠状态,唤醒延迟最长。为了将功耗降至最低,硬件会关闭所有设备。但是,操作系统上下文保存在休眠文件(内存映像)中,系统在进入 S4 状态之前会将该文件写入磁盘。重新启动后,加载程序会读取此文件并跳转到系统之前的休眠前位置。

如果处于 S1、S2 或 S3 状态的计算机失去所有交流电或电池电源,它将失去系统硬件上下文,因此必须重新启动才能返回到 S0。但是,处于 S4 状态的计算机即使在失去电池或交流电后也可以从其先前的位置重新启动,因为操作系统上下文保留在休眠文件中。处于休眠状态的计算机不使用电源(可能存在涓流电流)。

S4 状态具有以下特征:

能量消耗

  • 关闭,但电源按钮和类似设备的涓流电流除外。软件恢复

  • 系统从保存的休眠文件重新启动。如果无法加载休眠文件,则需要重新启动。在系统处于 S4 状态时重新配置硬件可能会导致更改,从而阻止休眠文件正确加载。

硬件延迟

  • 很长且未定义。只有物理交互才能使系统返回到工作状态。此类交互可能包括用户按下 ON 开关,或者如果存在适当的硬件并且启用了唤醒功能,则包括调制解调器的来电铃声或 LAN 上的活动。如果硬件支持,机器也可以从恢复计时器中唤醒。系统硬件上下文

  • 硬件中不保留任何内容。系统在关机前将内存映像写入休眠文件中。加载操作系统时,它会读取此文件并跳转到其先前的位置。

来源系统休眠状态


进一步阅读

答案2

David 的出色回答对于传统机器和 Windows 8 之前的版本来说是正确的。但是,Windows 8 为低功耗设备(基于 Atom 的平板电脑等)引入了一种新的睡眠模式。这被称为InstantGo/联网待机。这是在具有受支持硬件的 Windows 平板电脑上关闭屏幕时的默认“睡眠”模式。

联网待机不使用传统的 ACPI 睡眠状态。其目标是保持连接外围设备处于活动状态,允许操作系统响应通知,例如收到的电子邮件、即时消息等。此外,机器每 30 秒会“唤醒”几百毫秒。CPU 的响应(唤醒)速度应比传统的 S3 睡眠更快。

[联网待机需要] 能够在 100 毫秒内切换空闲和活动模式。活动模式允许代码在 CPU 上运行,但不一定允许访问存储设备或其他主机控制器或外围设备。空闲模式可以是时钟门控或电源门控状态,但应该是 SoC 和 DRAM 功耗最低的状态。

来源

请注意,这是快得多比 S1 指定的最多两秒,或 S2/S3 指定的两秒或更长时间,如 David 的回答中所述。

为此,CPU 处于一种微软称之为滴注式保护服务(最深运行时空闲平台状态)在支持的硬件上。

在 Intel (x86) SoC 上,这属于新的(非标准)S0ix 状态,具体来说是 S0i3。在这种状态下,CPU 不执行任何代码,但 SoC 整体仍然足够活跃,可以保持与网络的连接并响应任何事件。


就 ACPI 而言,这仍被视为 S0(活动)状态。Windows 使用该ACPI_S0_LOW_POWER_IDLE标志来确定是否支持 DRIPS。ACPI 规范6.0,2015 年 4 月,§5.2.9,表 5-35,第 127 页)将此标志定义为:

1 表示 OSPM 平台在 S0 中能够实现与 S3 中通常实现的节能效果类似甚至更好的节能效果。实际上,当设置此位时,它表示系统通过睡眠转换到 S3 不会获得任何节能效果。

据微软称

支持现代待机的系统不使用 S1-S3。

答案3

ACPI 管理多种类型的待机模式https://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface

CPU 通常在待机模式下运行,尽管时钟频率较低 - 它只监听特定输入,不会主动运行任何其他进程。我曾尝试通过运行 procmon 并将笔记本电脑设置为睡眠状态来首先对其进行测量,但在此期间它根本没有运行。

有 4 个全局状态,G0-G3,其中 G0 是跑步并且 G3 是机械关闭 根据链接的文章,G1 子状态 S2 关闭 CPU 并将其缓存移至 RAM。RAM 是所有类型的睡眠中都处于开启状态的 RAM - 它在休眠和标准关机时关闭。在大多数睡眠状态下,所有外部输入设备都处于开启状态并将向计算机发送唤醒事件。计算机还可以唤醒自身以处理需要唤醒呼叫的例程。

答案4

回答这个问题是因为 CPU 正在等待,CPU 无需进行等待;硬件负责等待并向 CPU 发送中断,从而唤醒 CPU。

相关内容