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

cpx*_*cpx 43 cpu sleep acpi

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

但是处理器会继续运行还是以某种方式在后台处于活动状态并利用电源?

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

Dav*_*ill 63

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.
Run Code Online (Sandbox Code Playgroud)

系统休眠状态

状态 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 上的活动。如果硬件支持,机器也可以从恢复定时器唤醒。系统硬件上下文

  • 没有保留在硬件中。系统在断电前会在休眠文件中写入内存映像。当操作系统加载时,它读取这个文件并跳转到它之前的位置。

系统休眠状态


进一步阅读


Bob*_*Bob 28

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

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

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

来源

请注意,这比为 S1 指定的最多两秒或为 S2/S3 指定的两秒或更长的时间快得多,如大卫的回答。

为此,CPU在支持的硬件上保持在 Microsoft 称为DRIPS(最深运行时空闲平台状态)的特殊状态

在 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页)定义该标志为:

一个通知 OSPM 平台能够在 S0 中实现与通常在 S3 中实现的节能相似或更好的节能。实际上,当该位被设置时,它表明系统不会通过向 S3 进行睡眠转换来获得功率优势。

根据微软的说法

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


小智 6

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

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

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

  • “将它的缓存移动到 RAM” 既然缓存是一个缓存,那么不仅仅是刷新脏缓存行然后将其断电就足够了吗? (2认同)