一、什么是ACPI
1. 概念
ACPI的英文全称为Advanced Configuration and Power Interface,中文译为高级配置电源管理接口。ACPI 是一种描述硬件接口的方法,用于操作系统与计算机硬件之间的通信。它提供了一种标准化的方法来管理电源管理、热管理和配置功能。
2. 功能
ACPI的主要功能包括:
ACPI允许操作系统控制计算机的电源状态,例如休眠、待机和关闭。包括:系统电源管理(System Power Management)、设备电源管理(Device?Power Management)和处理器电源管理(Processor?Power Management)。它还提供了一种方法来管理电源供应和电池状态(Battery Management)。
ACPI可以监测和控制计算机的温度,并根据需要调整风扇的转速。它还可以降低设备的性能以防止过热。
ACPI提供了一种方法来配置计算机硬件和外部设备。它可以识别和管理各种设备,包括处理器、内存、硬盘驱动器和外部接口等。
ACPI的运行时模型用于管理在系统运行期间发生的所有ACPI事件。它处理中断事件,并评估处理这些事件所需的对象。当用户启动系统时,系统固件会完成ACPI的设置、初始化和自我测试。
ACPI可以实现的功能包括:
- 系统电源管理(System power management)
- 设备电源管理(Device power management)
- 处理器电源管理(Processor power management)
- 设备和处理器性能管理(Device and processor performance management)
- 配置/即插即用(Configuration/Plug and Play)
- 系统事件(System Event)
- 电池管理(Battery management)
- 温度管理(Thermal management)
- 嵌入式控制器(Embedded Controller)
- SMBus 控制器(SMBus Controller)
二、ACPI历史
作为标准中最广为认可的部分,电源管理经历了较多的改进。早先,Advanced Power? Management模型(APM)将电源管理几乎完全分配给BIOS控制,这大大地限制了操作系统
在控制电能消耗方面的功能。
当前,ACPI的电源管理特性从以前只适用便携式计算机(例如膝上型计算机)过渡到桌上型电脑、工作站和服务器。例如,系统可能会进入极低功率消耗状态。这些就是可利用在多数桌面型电脑上的“睡眠”和“休眠”设置。睡眠和休眠状态可以通过移动鼠标、按键盘按键、从另外一台电脑接收一条信息(如果连接到了一个局域网)或者重大系统错误来唤醒系统。
如果ACPI在BIOS和其它系统硬件中被实现,它就可以由操作系统所调用(触发)。
Windows 98是支持ACPI的第一个微软的操作系统。FreeBSD v5.0是支持ACPI的第一个UNIX操作系统。Linux、NetBSD和OpenBSD都至少有一些支持ACPI。
三、节电方式与六种状态
1. 节电方式
即挂起。显示屏自动断电;只是主机通电。这时敲任意键即可恢复原来状态。
- save to?ram或suspend to ram
即挂起到内存。系统把当前信息存储在内存中,只有内存等几个关键部件通电,这时计算机处在高度节电状态,按任意键后,计算机从内存中读取信息很快恢复到原来状态。
- save to disk或suspend to disk
即挂起到硬盘。计算机自动关机,关机前将当前数据存储在硬盘上,用户下次按开关键开机时计算机将无需启动系统,直接从硬盘读取数据,恢复原来状态。
2. 六种状态
分别是S0到S5,它们代表的含义分别是:
就是平常的工作状态(正常工作状态),所有设备全开,功耗一般会超过80W。
也称为POS(Power on Suspend),除了通过CPU时钟控制器将CPU关闭之外,其它的部件仍然正常工作,这时的功耗一般在30W以下(其实有些CPU降温软件就是利用这种工作原理)。
除了CPU处于停止运作状态外,总线时钟也被关闭,但其余的设备仍然运转。
这就是我们熟悉的STR(Suspend to RAM),这时的功耗不超过10W。
这就是我们熟悉的STD(Suspend to?Disk),这时系统主电源关闭,硬盘存储S4前数据信息,所以S4是比S3更省电状态。
这种状态是最干脆的,就是连电源在内的所有设备全部关闭,即关机(shutdown),功耗为0。
以上几种状态中,S0和S5是平时的开关机的状态。除了这两种状态外,最常用到的是S3状态,即Suspend to RAM(挂起到内存)状态,简称STR。顾名思义,STR就是把系统进入STR前的工作状态数据都存放到内存中去。在STR状态下,电源仍然继续为内存等最必要的设备供电,以确保数据不丢失,而其他设备均处于关闭状态,系统的耗电量极低。一旦我们按下Power按钮(主机电源开关),系统就被唤醒,马上从内存中读取数据并恢复到STR之前的工作状态。内存的读写速度极快,因此我们感到进入和离开STR状态所花费的时间不过是几秒钟而已;而S4状态,即STD(挂起到硬盘)与STR的原理是完全一样的,只不过数据是保存在硬盘中。由于硬盘的读写速度比内存要慢得多,因此用起来也就没有STR那么快了。STD的优点是只通过软件就能实现,比如Windows 2000就能在不支持STR的硬件上实现STD。
四、常见问题
1. 电脑长眠
这主要是硬件对ACPI支持得不好。这时首先应该翻阅主板和其它硬件的说明书,看看它们是不是完全支持ACPI。也有的时候在BIOS中设置使用显卡的USWC(Uncacheable Speculative Write Combining)模式会有这样的情况,改回到UC(Uncacheable)模式就可以解决问题。
2.?模式失效
STD是一种省电的高级应用,全称为“Suspend To Disk”(STD就是休眠至硬盘功能,将当前系统状态保存到硬盘后,硬盘随即停止转动,系统进入低功耗状态当再开机时系统会跳过自检,直接从硬盘恢复原来的系统状态,而不是正常系统的默认状态,从而缩短了开机时间),这种模式由于硬盘文件格式的兼容性可能会出现问题,刷新BIOS就可以解决问题。
五、相关术语
它是一种电脑硬件,具有支持OSPM所必备的特性,而且还具有特定的接口,这些接口的特性是由ACPI规范所指定的描述表(Description Tables)所描述的。
一个树状层次机构,在受操作系统控制的内存里面,这段内存里面包含命名对象(named objects)等。这些对象(objects)可以是数据对象、控制方法对象、总线/设备包对象等。操作系统通过从驻留在ACPI BIOS 中的ACPI Tables加载/卸载(loading and/or unloading)定义块(definition blocks),以动态改变命名空间(namespace)的内容。在ACPI Namespace中的所有信息都来自Differentiated System Description Table(DSDT),DSDT里面包含了Differentiated Definition Block,还有一个或多个其它的定义块(definition blocks)。
- ACPI机器语言(ACPI Machine Language,AML)
是一种由ACPI兼容的OS支持的虚拟机的伪代码(Pseudo-code),里面写有ACPI控制方法和控制对象。
- 高级可编程中断控制器(Advanced Programmable Interrupt Controller,APIC)
一种中断控制器架构,通常多见于Intel 32位架构(Intel Architecture-based 32-bit)的PC系统。APIC架构支持多处理器中断管理(中断均匀地分布在所有处理器),多I/O子系统支持,与8259A 兼容,并且支持处理器内部中断(Inter-Processor Interrupt,IPI)。这个架构由直属于处
理器的本地APICs(Local APICs)和在(南桥)芯片中的I/O APIC组成。
- ACPI源语言(ACPI Source Language,ASL)
一种与AML等同的编程语言。ASL编译以后就是 AML镜像(AML images)。
控制方法定义OS如何执行一个简单的硬件任务。例如,OS调用控制方法(Control Method)去读取一个高温区的温度。控制方法是用一种叫做AML的编码语言写的,AML可以被兼容ACPI的OS 所解释并执行。ACPI兼容的系统必须在ACPI table中提供一组最小的控制方法。OS提供一组
well-defined 的控制方法,以使ACPI table开发者能够在他们的控制方法中引用。OEM厂商可以通过(要么Including control methods in the BIOS that test?configurations and respond as needed、要么为芯片组的不同修订版包含一组不同的控制方法),来使一个BIOS能够同时支持芯片组的不同修订版。
- 差分系统描述表(Differentiated System Description Table,DSDT)
OEM厂商必须为ACPI兼容的OS提供一个DSDT。这个DSDT包含Differentiated Definition Block,它能提供关于基本系统的实现和配置信息。OS总是在ACPI Namespace中插入DSDT信息,当系统启动的时候,而且绝不能删除它。
- 可扩展固件接口(Extensible Firmware Interface,EFI)
它是一个在OS和固件平台之间的接口。这个接口的形式是一种包含有平台相关信息的数据表,and boot and run-time service calls that are available to the OS and loader。这些一起为启动OS提供了一个标准的环境。
更多内容请看下回。