零知识学习ACPI —— 1. 初识

发布时间:2024年01月16日

一、什么是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历史

1997年由IntelMicrosoftToshiba所共同制定提供操作系统应用程序管理所有电源管理接口。2000年8月推出 ACPI 2.0规格。2004年9月推出ACPI 3.0规格。2009年6月16日则推出 ACPI 4.0规格。2011年12月推出ACPI5.0规格。
作为标准中最广为认可的部分,电源管理经历了较多的改进。早先,Advanced Power? Management模型(APM)将电源管理几乎完全分配给BIOS控制,这大大地限制了操作系统
在控制电能消耗方面的功能。
当前,ACPI的电源管理特性从以前只适用便携式计算机(例如膝上型计算机)过渡到桌上型电脑、工作站和服务器。例如,系统可能会进入极低功率消耗状态。这些就是可利用在多数桌面型电脑上的“睡眠”和“休眠”设置。睡眠和休眠状态可以通过移动鼠标按键盘按键从另外一台电脑接收一条信息(如果连接到了一个局域网)或者重大系统错误来唤醒系统。
如果ACPI在BIOS和其它系统硬件中被实现,它就可以由操作系统所调用(触发)。
Windows 98是支持ACPI的第一个微软的操作系统。FreeBSD v5.0是支持ACPI的第一个UNIX操作系统。Linux、NetBSD和OpenBSD都至少有一些支持ACPI。

三、节电方式与六种状态

1. 节电方式

  • suspend

即挂起。显示屏自动断电;只是主机通电。这时敲任意键即可恢复原来状态。

  • save to?ram或suspend to ram

即挂起到内存。系统把当前信息存储在内存中,只有内存等几个关键部件通电,这时计算机处在高度节电状态,按任意键后,计算机从内存中读取信息很快恢复到原来状态。

  • save to disk或suspend to disk

即挂起到硬盘。计算机自动关机,关机前将当前数据存储在硬盘上,用户下次按开关键开机时计算机将无需启动系统,直接从硬盘读取数据,恢复原来状态。

2. 六种状态

分别是S0到S5,它们代表的含义分别是:

  • S0

就是平常的工作状态(正常工作状态),所有设备全开,功耗一般会超过80W。

  • S1

也称为POS(Power on Suspend),除了通过CPU时钟控制器将CPU关闭之外,其它的部件仍然正常工作,这时的功耗一般在30W以下(其实有些CPU降温软件就是利用这种工作原理)。

  • S2

除了CPU处于停止运作状态外,总线时钟也被关闭,但其余的设备仍然运转。

  • S3

这就是我们熟悉的STR(Suspend to RAM),这时的功耗不超过10W。

  • S4

这就是我们熟悉的STD(Suspend to?Disk),这时系统主电源关闭,硬盘存储S4前数据信息,所以S4是比S3更省电状态。

  • S5

这种状态是最干脆的,就是连电源在内的所有设备全部关闭,即关机(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就可以解决问题。

五、相关术语

  • ACPI硬件(ACPI Hardware)
它是一种电脑硬件,具有支持OSPM所必备的特性,而且还具有特定的接口,这些接口的特性是由ACPI规范所指定的描述表(Description Tables)所描述的。
  • ACPI命名空间(ACPI Namespace)
一个树状层次机构,在受操作系统控制的内存里面,这段内存里面包含命名对象(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)。

  • 控制方法(Control Method)
控制方法定义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提供了一个标准的环境。
更多内容请看下回。
文章来源:https://blog.csdn.net/phmatthaus/article/details/135621262
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。