彭某的技术折腾笔记

彭某的技术折腾笔记

ACPI 和 Windows 电源管理

2022-07-17

ACPI 和 Windows 电源管理

2022年7月17日

摘要

ACPI (Advanced Configuration and Power Interface) 标准创始于 Intel,Microsoft,Toshiba 公司,后转入一个非营利性公司 UEFI Forum。ACPI 旨在制定一个计算机电源管理的国际标准,用于定义计算机不同的电源状态。本文将对此标准进行大致的介绍并对某些部分做出一定的解释。本文严重依赖 Microsoft 的相关 Documentation

概览

下表展示了 ACPI 各种状态的命名以及相应的简介:

ACPI 状态一览表
电源状态
(Power State)
全局状态
(Global State)
ACPI 睡眠状态
(ACPI Sleep State)
简介
工作
(Working)
G0 S0 设备完全正常工作,所有需要的部件都在运转,暂时闲置的部件可处于低功耗模式
待机
(Sleep--Modern Standby)
G1 S0 Low-power Idle 低功耗待机模式,可极快的速度唤醒回到 S0,类似手机上的锁屏状态,一般情况下较新的 SoC 平台才拥有此状态的硬件支持,且支持该模式的设备不会同时支持 S1-S3
睡眠
(Sleep)
S1 CPU 停止工作,处理器和总线的时钟信号停止,但依旧保持通电状态,缓存等上下文信息全部保留,内存中数据保持,可快速唤醒恢复原状
S2 CPU 断电,重新唤醒后 CPU 会重置(调用 Reset Vector),内存中数据保持,唤醒后可恢复工作状态
S3 CPU,主板芯片组及其他外设全部断电,仅内存保持通电以维持数据,唤醒后会从内存恢复先前工作状态
休眠
(Hibernate)
S4 内存中数据转移至非易失性储存器(硬盘),然后整个系统完全断电,唤醒后先前工作状态将从硬盘恢复至内存
软件关机
(Soft Off)
G2 S5 正常关机,系统不保存任何运行状态,下次开机将从 0 开始重新引导启动操作系统
硬件关机
(Mechanical Off)
G3 电源从物理上移除,系统无任何电源供应

解释

上面的表格虽然已经能够很清楚的说明各种状态的分类和实际对应的情况,但是现实中还是存在很多特殊情况或是不容易理解的部分,在这里做一些解释。

ACPI 支持情况

Mac

目前,已经全面转向 Apple Silicon 的情况下,Apple 为 Mac 构建了一套自己的电源管理体系,因此不再支持 ACPI,不必深入研究。

Linux

在 Linux 中,可以通过 cat命令查看 /proc/acpi/sleep中的内容查看当前平台支持的 Sx State,但是在很多现代的平台中,已不再支持此查看方式。

如果在系统中不存在上述文件,则可通过查看 /sys/power/state中的内容,其中可能存在四种内容:

  • freeze:支持进入 S0 Low-power Idle
  • standby:支持进入 S1
  • mem:支持进入 S2
  • disk:支持进入 S3

依据此文件中存在哪几个项目,即可明白当前系统支持的 G1 状态。

Windows

在 Windows 中,可以很简单的通过在 Windows Terminal 或是 Power Shell 中输入 powercfg -a查看当前系统中支持的状态。例如,我的设备的运行结果如下:

Windows-powercfg

不得不说,Windows 在这个功能上显示的真的挺清楚的,都不用过多解释就能明白,虽然经常吐槽 Windows,但是这里赞一个。

Sleep--Modern Standby (S0 Low-power Idle)

这个模式仅仅在某些现代的 SoC 平台支持,例如较新的 Surface 以及其他获得 Intel Evo 认证的笔记本,根据我的观察,基本都是 11 代或者 12 代的 Intel Core 移动端处理器。这个模式可以非常好的实现合盖或使用锁屏键使计算机进入低功耗模式,并且唤醒速度极快。

但是也如表格中所示,但凡是支持该模式的硬件设备,都不会再支持 S1-S3 这三种睡眠状态。同理,支持 S1-S3 的设备,也不会支持此模式。需要注意的是,此限制仅在硬件设备上生效,但是在虚拟机内部则可能打破此限制,同时支持。

S2 State

这个模式实际效果和 S1 大差不差,但是实现起来更麻烦,一般没什么设备实现并支持此模式。

  • 0