Linux&Win&Arm 电源状态对比
在信息爆炸的今天,电子设备已成为人类感官与思维的延伸。当我们享受智能手机的即时响应、笔记本电脑的长效续航,或是数据中心的澎湃算力时,鲜少意识到这一切体验的背后,都依赖于一项关键技术——电源管理。现代电源管理已超越简单的"省电"概念,进化为平衡性能、热耗、续航及可靠性的复杂工程。本文将简单对比常见的PC端操作系统Linux、Windows以及移动端的Arm架构在电源状态上的差异。
Linux&Win&Arm 电源状态对比
1.全局电源状态对比(G-states)
| 状态 | Windows | Linux | ARM |
|---|---|---|---|
| G0 | 正常工作状态(S0) | 正常运行(on) |
ON(所有模块活动) |
| G1 | 睡眠(S1-S4) | freeze/standby/mem/disk |
Standby/Retention(部分模块断电) |
| G2/S5 | shutdown |
shut down |
Power Down |
| G3 | 机械断电(拔电源) | 机械断电(拔电源) | 完全掉电 |
- Windows:严格遵循ACPI规范,支持完整的S0-S5状态,,友好的用户自定义界面。
- Linux:遵循ACPI规范,通过
/sys/power/state文件提供灵活配置。 - ARM:原生定义
Run/Standby/Shutdown,通过PSCI(Power State Coordination Interface)与OS交互。
2.睡眠状态对比(S-states)
| 状态 | Windows | Linux | ARM |
|---|---|---|---|
| S0ix | Modern Standby(连接待机) | / | Low-Power Idle(CPU暂停) |
| S1/S2 | 基本淘汰 | freeze | / |
| S3 | "睡眠"(Sleep,Suspend to RAM) | mem |
Standby |
| S4 | "休眠"(Hibernate,Suspend to Disk) | disk |
/ |
| S5 | 关机 | poweroff |
Shutdown |
- Windows S0ix:笔记本合盖后保持网络连接(如接收邮件)。
- Linux S3:服务器通过
rtcwake定时唤醒执行任务。 - ARM Standby:手机锁屏后关闭CPU但保持内存供电。
各个系统电源管理的补充说明
1.Windows
遵循ACPI规范:https://uefi.org/specs/ACPI/6.6
ACPI(高级配置与电源接口)为Windows系统提供了一套标准化的电源管理架构,主要包含系统电源状态(G状态和S状态)、设备电源状态(D状态)以及处理器电源状态(C状态和P状态)。
1. 系统全局状态 (G-States)是最高层次的电源状态分类:
- G0 (工作状态):系统完全运行,用户可正常操作。
- G1 (睡眠状态):系统处于低功耗模式,用户活动已暂停,但可快速恢复至工作状态。此状态包含了S1至S4状态。
- G2 (软关机状态 / S5):系统完全关闭,但主电源仍连接,部分电路待机以便响应开机信号。
- G3 (机械关机状态):系统彻底断电,物理电源被切断。
2. 系统睡眠状态 (S-States)S状态是G1睡眠状态下的细分,描述了不同的功耗和唤醒速度级别:
- S0 (正常工作状态):系统全功率运行。
- S1:CPU停止工作,但其缓存和系统内存仍在刷新。
- S2:比S1更深度的睡眠,CPU电源被关闭。
- S3 (待机/挂起到内存 - STR):最常用的睡眠状态。仅对内存供电,其余组件几乎全部关闭,可从内存快速恢复工作。
- S4 (休眠/挂起到硬盘 - STD):将内存中的数据全部写入硬盘的休眠文件(如
hiberfil.sys),然后切断几乎所有部件的电源。恢复时从硬盘加载数据,速度较S3慢,但更省电且断电不丢数据。 - S5 (软关机):系统完全关闭,需要完整的启动过程来恢复。
Windows还引入了 S0ix低功耗空闲(现代待机) 状态,它在S0基础上允许系统在极低功耗下保持网络连接并接收通知,常见于现代笔记本电脑和平板设备。
3. 设备电源状态 (D-States)指每个设备(如硬盘、网卡)在系统处于不同状态时有自己的电源状态:
- D0 (完全开启):设备全功能运行,功耗最高。
- D1 和 D2:中间节电状态,具体功能因设备而异。
- D3 (完全关闭):设备电源被切断,功耗最低。在Windows中又分为:
- D3hot:设备软件可唤醒。
- D3cold:设备完全断电,需要物理信号才能唤醒。
4. 处理器电源状态 (C-States & P-States)用于精细控制CPU的功耗:
- P-States (性能状态):指CPU在不同负载下的工作频率和电压(P0为最高性能,P1、P2等依次降低),通过调节来实现节能。
- C-States (空闲状态):指CPU在空闲时的休眠深度(C0为活跃状态,C1、C2、C3等休眠程度越来越深,关闭的电路单元越来越多),用于在空闲时最大限度地节能。
2.Linux
遵循ACPI规范:https://uefi.org/specs/ACPI/6.6
通过下面的命令查看Linux支持的电源状态:
cat /sys/power/state
Linux内核有如下电源状态:
- freeze:冻结I/O设备,将它们置于低功耗状态,使处理器进入空闲状态,处于S2Idle状态下时,设备中断就可以将其唤醒。
- Standby:除了冻结I/O设备外,还会暂停系统。由于系统核心逻辑单元保持上电状态,操作的状态不会丢失,也会很容易恢复到之前的状态。 处于Standby状态时,可能需要依赖平台来设置唤醒源。
- mem:运行状态数据存到内存,并关闭外设,进入等待模式,除了Memory需要进行自刷新来保持数据外,其他的所有设备都需要进入到低功耗状态,就是STR(Suspend to RAM)。除了实现Standby中的操作外,还有一些平台相关的操作要进行。 由于存在掉电行为,因此Resume的时候需要重新进行配置,唤醒过程较慢,处于STR状态时,需要依赖平台设置唤醒源
- disk:这个操作会将运行时的context保存在Disk这种非易失的存储器中,然后进行掉电操作,就是STD(Suspend-to-Disk)。比如当按下电源键进行唤醒时,然后恢复,唤醒过程最慢。
3.ARM
ARM设备常用于低功耗场景,因而电源管理是重要的设计考虑。ARM提供power policy unit(PPU)这样的标准电源管理组件,通过标准的P-channel硬件接口来统一电源管理。
ARM的系统级状态关乎整个SoC(片上系统)或设备集群的功耗管理,涉及内存、外设和电源控制器等的协同工作。
- ON (S0):整个系统处于全功能运行状态。
- Standby/Sleep:通常指系统进入低功耗休眠模式,但具体实现因平台而异。例如,可能对应ACPI的S1(Standby)或S3(Suspend-to-RAM)状态。在S3状态下,系统除内存外的多数组件都会断电,当前运行状态保存在内存中,以实现快速恢复。
- OFF (S5/SYSTEM_OFF):系统完全关机,所有电源域被切断。需要外部事件(如按下电源按钮)才能重新启动。
- 复位 (Reset):这不是一种低功耗状态,而是一种强制性的初始化状态。系统会终止当前所有操作,将硬件恢复到已知的初始状态,然后重新启动。
处理器核心电源状态 (Core Power States)是对单个处理器核心(CPU Core)电源管理的抽象,主要通过PSCI (Power State Coordination Interface) 接口进行管理。主要包括以下四种状态,功耗和唤醒延迟依次增加:
- Run (运行状态):这是处理器的正常工作模式。核心的电源和时钟均处于开启状态,可以执行指令。
- Standby (待机状态):在此状态下,处理器的时钟被关闭以节省动态功耗,但电源仍然保持开启,所有寄存器和缓存的状态都得以保留。可通过执行
WFI(Wait For Interrupt) 或WFE(Wait For Event) 指令进入,并由中断事件快速唤醒,唤醒延迟极低。 - Retention (保持状态):这是一种更深度的低功耗状态。核心逻辑的电源被部分关闭,但其状态(包括寄存器内容)被特殊电路保留在低功耗结构中。唤醒时,状态可以自动恢复,无需软件干预,但其功耗比Standby状态更低,唤醒延迟相对较高。
- Power Down (掉电状态):这是最深的低功耗状态。核心的电源被完全关闭,其所有状态都会丢失。进入此状态前,软件必须将关键上下文保存到内存中。唤醒过程类似于一次冷启动,需要从复位向量重新开始执行代码,并由软件负责恢复之前保存的上下文,因此唤醒延迟最长。
ARM Power Control相关文档:https://developer.arm.com/search#numberOfResults=48&q=Power_Control_System_Architecture
参考链接:
https://go.microsoft.com/fwlink/p/?linkid=57185
https://learn.microsoft.com/zh-cn/windows-hardware/drivers/kernel/introduction-to-power-management
https://armv8-doc.readthedocs.io/en/latest/15.html
https://doc.embedfire.com/linux/rk356x/driver/zh/latest/linux_driver/subsystem_power_management.html

浙公网安备 33010602011771号