ACPI in Linux ── 传闻与事实
Len Brown
Intel Open Source Technology Center
len.brown@intel.com
Translated by Albcamus <albcamus@gmail.com>
概要:
主流的 Linux 发型版从几年前就开始提供 ACPI 支持了,但直到今天,Linux 社区
中还存在着很多对 ACPI 的误解。 本文给出并澄清了关于 ACPI in Linux 的几个最主要的传
闻。
1, 传闻: 在我的笔记本、PC 机、服务器上,打开 ACPI 支持没有什
么好处
当用户不再以传统模式引导,而以 ACPI 模式引导,他们注意到的第一件事就是,
电源按钮也被软件控制了。 在传统模式下,当按下电源按钮从而切断电源时,对计算机来
说这是个物理的状态改变(断电);而在 ACPI 模式下,按下电源按钮会给 OS 发送中断,从而
使 OS 能安全关机。 实际上,电源、休眠,和笔记本上盖合拢, 这些事件都被 ACPI 标准化
了, OS 可以把它们映射到自己的处理例程上。
除了把电源按钮的按下事件标准化之外, OS 怎样用软件方式切断电源, 也被
ACPI 标准化了。 所以,由软件引发的关机,在 Linux 系统关闭之后,还可以切断电源;而
在传统模式下,必须在 Linux 关闭后手工按电源按钮断电。
当在 ACPI 模式运行时, 用户会注意到电池的寿命延长了。 在今天的笔记本上,
要想延长电池寿命, 一个重要的手段就是电源管理。 当处理器空闲,Linux 内核的 IDLE 循
环例程,将利用 ACPI 的 「CPU 空闲的电源状态(CPU idle power states)」(C-states)来
省电。 当处理器部分空闲,Linux 的 cpufreq 子系统,将利用 ACPI 的「CPU 的性能状态
(performance states)」(P-states),降低 CPU 的电压和频率,以达到省电目的。
ACPI 和传统模式的其他区别,可能受到用户所在的平台(译按,platform,可能
专指 BIOS 实现)和 GUI 界面的影响,这些区别包括:电池低容量警报,发热控制(thermal
control),以及调用 suspend-to-disk 或 suspend-to-RAM 的能力等等。
使用 Intel 超线程处理器的用户可能注意到了,超线程只能在 ACPI 模式下使用,
不能在传统模式下使用。
今天的很多机器有多个处理器,这样的机器使用 IO-APIC 来把中断源递送到系统
中的各个处理器。 然后,有些机器并没有实现对传统的多处理器规范(Multi-Processor
Specification, MPS)的支持, 因此, 要想在这样的系统上配置 IO-APIC,就只能使用
ACPI。 如果不使用 ACPI, IO-APIC 就以 XT-PIC 的方式工作。