Advanced Configuration and Power Management Interface(ACPI)学习总结

本文深入介绍了ACPI(高级配置和电源接口)的工作原理及其组成部分,包括ACPI表、ASL语言、ACPI寄存器等核心概念。文章还探讨了操作系统如何支持ACPI,并详细解释了系统状态(G0-G3)、设备电源状态(D0-D3)以及处理器电源状态(C0-C3)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ACPI简单说由两部分组成,ACPI table及ASL。

ACPI table中主要存着一些硬件会用到的资源。ACPI table中的dsdt包含了所有ASL code存放的位置,OS借此可以找到ASL code。

ASL,全称ACPI source language.是专门用来编译ACPI中的一些东西。ASL经过机器编译后会变为AML,然后由OS来执行。ASL将平台上的设备建立成ACPInamespace,同时他还提供有关这些设备的操作方法。

 

ACPI是一种规范,它并不是单纯硬件或软件的规范。ACPI是一种接口规范由硬件和软件组成。

ACPI包含三个重要的runtime元件:

1.ACPI Tables

ACPI System Description Tables描述了硬件上的接口,这其中包含了一些固定的寄存器的地址。另外ACPI Tables中包含了一些OS可以直接执行的AML code,OS可以通过interpreter来执行这些code。

2.ACPI Registers

包含在硬件的接口中,由ACPI System Description Tables描述。

3.ACPI BIOS

ACPI system Firmware,是一个符合ACPI规范的BIOS。ACPI System Description Tables由 ACPI BIOS提供。

 

为了支持ACPI,OS需要支持一些功能,加粗项为OS至少必须支持的功能

·支持系统地址映射报告接口

·可以需找并使用ACPI table

·可以解释AML

·可以枚举并适配ACPI namespace中描述的主板设备

·接口带有power management timer功能

·接口带有real-time clock wake alarm功能

·可以在legacy下进入ACPI mode

·可以执行设备电源管理规范

·可以执行电源资源管理

·可以处理电源状态

·可以控制处理器和设备的状态

·支持ACPI热模式

·支持ACPI事件处理模式,比如SCI中断等等

·支持Global Lock的获取与释放

·可以使用reset register来重启系统

·可以提供API来影响电源管理规范

·可以执行driver来支持ACPI定义的设备

·可以使用API来支持系统指针

·支持所有系统状态S1-S5

·支持OS直接电源管理

 

Global System State

系统的电源状态可以分为G1、G2、G3、G5。

G1 Sleeping

系统在该状态下消耗很少的电量,用户指令将不执行,系统也会关闭。工作内容被存在硬件中,系统可以被唤醒且不用被重启。这个阶段拆机是不安全的。

G3 Mechanical Off

切断电源,一团废铁,适合拆机。

G2/S5 Soft Off

系统消耗很少的电量。需要重启被唤醒,内容不会被存在硬件中。拆机同样不安全。

G0 Working

正常工作状态。

还有一种S4 Non-Voaltile Sleep,它在特殊的状态下发生。

直观示意如图所示:

 

※这些状态之间的切换是一句以下六个方面:

a) 应用程序还在执行吗?

b) 外部事件与应用程序的响应时间为多长?过长的话可能就没在使用了。

c) 电源消耗量如何?

d) 重启OS是否需要回到G0?

e) 你拆完电脑后是否还想存活?

f) 电源状态是否会因电气特性而改变?

 

 

通常系统在G0和G1之间切换较多,在G0阶段又要分为两个部分来处理电源管理的情况,分别为Device和Processor。

Device Power State

下面先学习一下Device Power State。Device Power State分为5种,D3 (Off)

、D3hot 、D2、D1、D0。他们评判为哪种状态的主要依据是:

(1)       电源消耗情况

(2)       设备内容

(3)       设备驱动

(4)       存储时间

下面详细列出每种状态特点:

D3 (Off)

完全移除设备的供电,设备内容将会丢失。当重新供电时,OS软件将会重新初始化该设备。设备进入这种状态后将会有最长的重新存储时间,所有类型的设备都可以被定义为这种状态。

D3hot

这种状态是为了保存很多的电量和设备数据,处于这种状态的设备将被软件列出。一旦设备内容丢失,设备会被重新初始化并转变成D0,所有类型的设备都可以被定义为这种状态。 

D2

这种状态是为了保存很多的电量和少量的数据,相比D0,D1。很多设备不会被定义为D2。

D1

这种状态是为了保存很多的电量和一些多于D2的数据。很多设备不会被定义为D1。

D0 (Fully-On)

设备完全活跃,耗电量最高。

直观示意如图所示:

 

Processor Power State

处理器在G0阶段的电源消耗状态。分为C0,C1,C2,C3.

C0 Processor Power State

处理器正常执行命令

C1 Processor Power State

这种处理器状态拥有最低的Latency。硬件的Latency只保留足够OS可以正常执行软件。没有软件会显示这种状态

C2 Processor Power State

这种状态是C1的改善。处理器最差的Latency被使用时,系统会决定何时用C2代替C1。没有软件会显示这种状态。

C3 Processor Power State

C1.C2的改善。处理器最差的Latency被使用时,OS会决定是否进入C3。在C3状态中处理器负责的cache会忽略掉所有snoop,所以OS要自己负责。

 

有关sleep的状态之前有学习过,今天做了复习。

 

Device and Processor Performance State

分为P0,P1,PN。分别表示Performance能力与耗能的大中小。

 

系统通过SDT结构来决定他本身支持的省电层级。

Root System Description Pointer位于memory地址空间中,RSDP structure table中包含Extended System Description Table的地址。XSDT负责提供个给OS其他的SDT表的数据和地址。通常它指向第一个表是Fixed ACPI Description table,FADT中包含了描述ACPI hardware特点的信息。FADT总是会参考Differentiated System Description Table,DSDT中描述了多种类型系统的特点。

       |XSDT-----àSSDT

RSDT--->|  \----à|FADT----àDSDT

       |RSDT--->|

               |SSDT

 

转载于:https://www.cnblogs.com/wudibuzaijia/p/8535582.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值