【UEFI基础】ACPI基础

【UEFI基础】ACPI基础为了让 OSPM 能够控制计算机上的设备的资源和热插拔 ACPI 提供了一种描述这些设备的信息和控制方式的结构 称为 ACPIDefiniti 它们按照一种层级结构组织 这种组织方式成为 ACPINamespa

大家好,欢迎来到IT知识分享网。

ACPI是一套协议标准,软硬件都需实现以配合使用。

另外,实际上也不只是电源管理,还有很多的事情是ACPI可以做的,比如:

1 系统电源管理(System power management)

ACPI定义了一套使计算机作为一个整体出入睡眠状态(G状态,S状态,G0/S0表示正常状态,数字越大表示睡得越深),通过设备唤醒计算机的机制。

2 设备电源管理(Device power management)

ACPI表描述了计算机包含的设备以及它们的电源状态(D状态,D0表示正常状态,数字越大性能和耗能越小),使设备进入不同电源状态的控制方式。

3 处理器电源管理(Processor power management)

OS在空闲状态时,OSPM通过ACPI使CPU进入不同的电源状态(C状态,C0是正常状态,数字越高表示越low-power)。

4 设备和处理器性能管理(Device and processor performance management)

当系统处于活动状态时,OSPM通过ACPI可以将设备和CPU设置成不同的性能状态,以达到性能和功耗的平衡。

5 配置/即插即用(Configuration/Plug and Play)

ACPI定义了一系列的设备信息,它们按照层级结构组织,通过这些信息OS可以知道设备的状态以及插拔情况。

6 系统事件(System Event)

ACPI提供的一种事件机制用于处理温度变化,电源管理和设备插拔等事件。

7 电池管理(Battery management)

电池管理从BIOS转到了支持ACPI的OS,OS可以通过管理电池的接口直接管理电池。

8 温度管理(Thermal management)

因为OS控制了设备和CPU的电源和性能,所以也需要通过ACPI来管理温度,ACPI中可以方便的定义温度区域,温度指示器和冷却温度区域的方法。

9 嵌入式控制器管理(Embedded Controller)

ACPI定义了一套软硬件接口,可以使OS可以和计算机上的其他嵌入式控制器方便地交流。

10 SMBus控制器管理(SMBus Controller)

ACPI定义了一套软硬件接口,可以使OS可以和计算机上的SMBus控制器及其连接的设备方便地交流。

等等。

由于ACPI规范已经到了第六版,不同版本的支持不一样,需要根据实际的版本来确定支持的功能。

下图是ACPI在处理器架构中的位置。

或者更复杂的结构:

上图红框部分就是ACPI需要实现的东西。

首先需要硬件的支持,并提供ACPI需要使用的寄存器。

接着需要一系列的表来规定划分模块和定义接口。

接着BIOS需要支持ACPI,实现并提供相应的回调。

G-States:这个是总的系统状态,Global System States。

有下面的几种:

C-States:C状态是在G0状态下的一种分类,它的主要方式是通过改变CPU的工作模式来降低功率。下面是几种分类:(C1E=C1+最低频率的P-State)

P-States:也称为EIST(Enhanced Intel Speed Step Technology),或者dynamic frequency and voltage scaling,它主要通过控制CPU频率和电压来进行电源管理。它可以使能和去使能,而P-States的真正含义就是(频率,电压)这么一个表达式。

S-States:睡眠状态,主要是G1和G2状态下的分类。比较常见的有S3,即System to RAM,系统挂起到内存。

下面是几种状态的一个关系表:

几点说明:

1.G/C/S等状态,后接的数字越大,系统耗能越少。

2.不同系统支持的状态不一样,上图中的这些状态仅用于说明,具体支持状态还是需要查相关的手册。

  1. 各个状态之间的切换:

下面是一个示例:

ACPI Definition Blocks包含在DSDT(Differentiated System Description Table)和很多的二级表(SSDT,Secondary System Description Tables)之中。

ACPI中二级表可以又很多,并且可以不断增加。

ACPI表由BIOS创建,并存放在内存中,OS需要一个入口去获取到所有的表。

入口由BIOS放在某个固定的位置(对于Legacy BIOS和UEFI,OS获取的方式不同),这个入口被称为RSDP,Root System Description Pointer。它是一个结构体,其结构如下:

RSDT表全称Root System Description Table,它存放了许多的指针,指向其它的描述系统信息的表。RSDT的结构如下:

XSDT(RSDT)指向的第一张表都是FADT,Fixed ACPI Description Table。这个表里面包含了OS需要知道的所有ACPI硬件相关寄存器(ACPI Hardware Register Blocks,就是下图的GPx_BLK等),还包含DSDT,Differentiated System Description Table,该表包含大量的硬件信息。

这些信息包含在称为Differentiated Definition Block的结构中,它使用一种特殊的语言AML(ACPI Machine Language)表示,而AML语言又通过ASL(ACPI Source Language)编译而成,OEM厂商通过自己写ASL来表示自己的硬件设备信息供OS使用。OS可以利用这些Definition Block来进行各种相关的操作(具体操作已经列在ACPI的作用那一节)。

ACPI定义了很多的表,这里不一一说明,下面是其中的一些:

ACPI Spec的第五章ACPI Software Programming Model中对它们有介绍。

下面是一个笔记本上得到的所有APCI表:

上述的表中只有DSDT和SSDT中包含Difinition Blocks,比如其中的一个SSDT:

更详细的介绍在http://uefi.org/acpi网站中的LINKS TO ACPI-RELATED DOCUMENTS。

可以在如下的网站下载到:

RWEverything – Read & Write Everything

当然这个工具的功能很丰富,ACPI读取只是其中的一个部分。

所以需要了解ASL语言的基本用法,具体可以参考ACPI Spec的第十九章ACPI Source Language(ASL) Reference。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/127525.html

(0)
上一篇 2025-09-06 21:15
下一篇 2025-09-06 21:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信