Linux&Win&Arm 电源状态对比

在信息爆炸的今天,电子设备已成为人类感官与思维的延伸。当我们享受智能手机的即时响应、笔记本电脑的长效续航,或是数据中心的澎湃算力时,鲜少意识到这一切体验的背后,都依赖于一项关键技术——电源管理。现代电源管理已超越简单的"省电"概念,进化为平衡性能、热耗、续航及可靠性的复杂工程。本文将简单对比常见的PC端操作系统Linux、Windows以及移动端的Arm架构在电源状态上的差异。

Linux&Win&Arm 电源状态对比

 1.全局电源状态对比(G-states)

状态WindowsLinuxARM
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)

状态WindowsLinuxARM
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

 

posted @ 2025-09-28 17:06  mingtse  阅读(40)  评论(0)    收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css