认识
ACPI 的全称是 Advanced Configuration and Power Interface,中文译为 “高级配置与电源接口”。它是一种开放的行业标准,由英特尔、微软、东芝等公司共同制定。ACPI 是现代计算机系统中一个至关重要但又“隐藏在幕后”的技术。它让操作系统能够智能地管理电脑的电源、性能和硬件配置,是实现我们今天所熟知的便捷、节能、稳定的计算体验的关键技术之一。从按下开机键,到系统进入睡眠,再到 CPU 自动降频,整个过程都有 ACPI 在背后默默工作。简单来说,ACPI 是操作系统与计算机硬件固件(如 BIOS 或 UEFI)之间进行通信和控制的“共同语言”和“桥梁”,其用于定义操作系统如何发现、配置计算机的硬件组件,并管理其电源状态。
组成
工作原理 and 关键组件
ACPI 的实现依赖于几个关键组件:
ACPI 表
其为系列位于固件中的数据结构,包含了所有硬件配置和接口信息。当操作系统启动时,会从固件中读取这些表,构建出 ACPI 命名空间。
最重要的表是:
- DSDT:差异系统描述表,这是最核心的表,包含了大部分的硬件描述和 AML 代码。
- SSDT:辅助系统描述表,用于描述 DSDT 之外的附加设备。
- FADT:固定 ACPI 描述表,描述了硬件的固定功能寄存器。
AML – ACPI 机器语言
在 DSDT 和 SSDT 中,可执行代码是用一种与平台无关的字节码语言编写的,称为 AML。
在操作系统内核中,有个解释器(称为 ACPI 解释器),可以读取并执行这些 AML 代码。这保证了同一套 ACPI 代码可以在 x86、ARM 等不同架构上运行。
ACPI 方法
AML 代码中预定义了一些“方法”(可以理解为函数),操作系统可以通过调用这些方法来控制硬件。例如,当你在操作系统中点击“睡眠”按钮,系统会调用 `_PTS` (准备进入睡眠) 和 `_GTS` (进入睡眠) 等方法。
性质
重要性与影响:
- 统一电源管理:无论是哪个品牌的电脑,其“睡眠”、“休眠”、“关机”等操作对用户和软件开发者来说都是一致的。
- 实现高效节能:使得笔记本电脑的电池续航时间大大延长,也让台式机和服务器更加环保。
- 简化驱动开发:硬件厂商无需为不同操作系统编写复杂的驱动程序来管理电源和配置,很多基础功能可以通过标准的 ACPI 接口实现。
- 现代计算的基础:从智能手机(其电源管理理念与 ACPI 一脉相承)到数据中心服务器,ACPI 都是其稳定、高效运行的基石。
核心目标与功能,其主要致力于解决两个核心问题:
- 操作系统导向的配置和电源管理:将电源管理和硬件配置的控制权从传统的 BIOS 转移到现代操作系统手中,实现更智能、更统一的管理。
- 统一的硬件抽象接口:为操作系统提供一种标准化的方式来与各种不同的硬件平台交互,简化驱动程序的开发,提高系统的兼容性和稳定性。
其具体功能可以细分为以下三个方面:
电源管理
这是 ACPI 最广为人知的功能。它定义了一套从整个系统到单个设备的层级化电源状态。
系统电源状态(G-States):
- G0 (S0 – Working):正常工作状态,电脑正在运行。
- G1 (Sleeping):睡眠状态,分为几个子状态:
- S1:轻度睡眠,CPU 停止执行指令,但电源仍供给所有组件。
- S2:比 S1 更深度的睡眠,CPU 电源被关闭。
- S3 (Suspend to RAM):我们常说的“睡眠”或“待机”。将当前工作状态保存到内存中,除内存外的大部分硬件断电。恢复速度非常快。
- S4 (Suspend to Disk):我们常说的“休眠”。将当前工作状态完整保存到硬盘上,然后整个系统断电。恢复时从硬盘读回数据,速度比 S3 慢,但完全不耗电。
- G2 (S5 – Soft Off):软关机。系统已完全关闭,但电源供应器仍为主板提供待机电源,以便响应开机信号(如按机箱按钮、键盘鼠标唤醒、网络唤醒)。
- G3 (Mechanical Off):机械关机。电源完全切断,如拔掉电源线。
设备电源状态(D-States):每个设备(如 USB 控制器、网卡)也有自己的电源状态(D0 到 D3),操作系统可以根据需要单独调整,以节省功耗。
硬件配置与即插即用
ACPI 提供了个名为 ACPI 命名空间的层次化数据结构,它就像一份描述计算机硬件拓扑的“地图”。
针对操作系统,其在启动时读取这份地图,可以了解到:
- 主板上有哪些总线(如 PCIe, USB)。
- 这些总线上连接了哪些设备。
- 这些设备使用了哪些系统资源(如中断请求 IRQ、内存地址范围)。
这使得操作系统的即插即用功能得以实现,无需像旧时代那样手动配置跳线。
性能和热管理
- 性能管理(P-States):ACPI 允许操作系统动态调整 CPU 的工作频率和电压,这就是我们熟知的 CPU 节能技术(如 Intel 的 SpeedStep 和 AMD 的 Cool’n’Quiet)。在高负载时全速运行(P0),低负载时降频降压(P1, P2…)以节省能源和降低发热。
- 热管理:ACPI 定义了温度区域和冷却策略。当传感器检测到温度过高时,操作系统可以通过 ACPI 接口命令增加风扇转速,甚至降低 CPU 性能来防止硬件过热。
构建
其与 BIOS/UEFI 的关系
ACPI 是套标准规范,而 BIOS/UEFI 是固件,是这套规范的实现者。现代 UEFI 固件都包含了完整的 ACPI 实现。
应用
获取硬件温度
for Linux, acpi -t, acpi -V
改进
常见问题与发展
ACPI 的问题
ACPI 表通常由硬件厂商(OEM)编写,有时会存在错误或不兼容,这可能导致系统蓝屏、睡眠唤醒失败、性能下降等问题。在 Linux 社区,有时需要通过定制 DSDT 来修复这些问题。
ACPI 的演进
为了适应现代计算需求(如移动设备、物联网),ACPI 标准也在不断发展。其后续和相关技术包括:
- Device Tree:在 ARM 架构中广泛使用的硬件描述方法,与 ACPI 有竞争也有融合。
- UEFI Forum:现在 ACPI 由 UEFI 论坛统一管理,确保其与 UEFI 标准的协同发展。
参考
DeepSeek / 介绍 ACPI
DeepSeek / 通过 acpi 获取硬件温度