[ACPI高级配置与电源接口] -ACPI基础

[ACPI高级配置与电源接口] -ACPI基础

什么是ACPI

Advanced Configuration and Power Interface

由1997年,英特尔、微软、东芝公司共同提出、制定操作系统应用程序管理电源管理接口,是一种工业标准,包括了软件和硬件方面的规范。ACPI规范是为了建立工业通用接口,以支持面向操作系统的主板设备配置和电源管理。ACPI是面向操作系统的配置和电源管理(OSPM)中的关键元素。

ACPI的功能

  • 系统电源管理
    ACPI定义了控制计算机出入全局状态(G-state)/睡眠状态(S-state)等的机器。
  • 设备电源管理
    定义主板设备的电源状态(D-state)
  • 处理器电源管理
    OS在空闲状态时,OSPM通过ACPI使CPU进入不同的电源状态(C-state)
  • 设备和处理器性能管理
    当系统处于活动状态时,OSPM通过ACPI可以将设备和CPU设置成不同的性能状态,以达到性能和功耗的平衡(P-sate)。
  • 配置/即插即用
    定义了一系列的设备信息,它们按照层级结构组织,通过这些信息OS可以知道设备的状态以及插拔情况。
  • 系统事件
    提供的一种事件机制用于处理温度变化,电源管理和设备插拔等事件。
  • 电池管理
    对OS管理电池提供支持。
  • 温度管理
    为OS提供控制系统降温策略的控制接口。
  • 嵌入式控制管理
    定义了一套软硬件接口,可以使OS可以和计算机上其他嵌入式控制器交流。
  • SMBus控制管理
    定义了一套软硬件接口,可以使OS可以和计算机上的SMBus控制器及其连接的设备交流。

ACPI框架

下图给出了OSPM/ACPI相关的硬件与软件组件及它们之间的联系。
在这里插入图片描述

ACPI有三个运行时组件:

  1. ACPI 寄存器(ACPI Registers)
    由ACPI Tables描述的硬件接口
  2. ACPI 固件(ACPI BIOS)
    与ACPI规范兼容的系统固件,ACPI Tables由其提供。
  3. ACPI 表(ACPI Tables)
    定义了系统的硬件接口。ACPI表包含定义块(Definition Blocks),这些定义块使用伪代码类型的语言-AML(ACPI Machine Language),OSPM包含解释器对这部分代码进行解释并保存在操作系统的ACPI表中。

如何找到ACPI表?

ACPI表是在系统启动阶段由BIOS/UEFI收集系统各方面信息并创建的,它大致以树形的组织形式(如下图所示)存在系统物理内存中。

在这里插入图片描述

整个ACPI表以RSDP(Root System Descriptor Pointer Table)为入口点,每个非叶子节点都会包含指向其他子表的指针,各个表都会有一个表头,在该表头中包含了相应的Signature,用于标识该表,查找ACPI表的关键就是在内存中定位到RSDP表。

  • 对于UEFI系统:RSDP的位置信息存在于UEFI System Table中,UEFI Spec中给ACPI1.0与2.0及之后的规范规定了两个GUID;Bootloader需要从UEFI System Table中提取RSDP位置信息并提供给OSPM
  • 对于Legacy系统:OSPM通过扫描内存寻找RSDP的Signature来找到RSDP,可能存在于如下位置:
  1. 位于EDBA(Extended BIOS Data Area)的前1kb范围内
  2. 0E0000h到0FFFFFh的BIOS只读内存地址范围内

ACPI表的结构

RSDP表结构如下表
在这里插入图片描述

当OSPM找到RSDP,下一步OSPM需定位RSDT或XSDT表来获取其他ACPI Tables的物理地址信息。如上图,RSDP中包含RsdtAddress/XsdtAddress,即RSDT(Root System Description Table)/XSDT( Extended System Description Table)的地址。它们包含指向其他Tables的物理地址信息。OSPM通过找到这些Table来获取系统的基本信息。
在这里插入图片描述

如下图所示,通常XSDT包含的第一个Entry保存着FADT表(Fixed ACPI Description Table)的物理地址,FADT表的Signature为FACP。
在这里插入图片描述

FADP表中包含如下内容:

  1. DSDT - Differentiated System Description Table
    包含定义块(Definition Blocks)。定义块中包含着硬件平台的配置和实现信息,这些信息存储在以分层树状结构保存的数据对象(Data Object)中,形成ACPI命名空间(ACPI namespace)。
    DSDT中的定义块主要包含OPSM用于电源管理、温度管理、热插拔功能的配置和实现信息。
  2. ACPI Hardware Register Block

OS需要用这些配置信息来直接管理ACPI硬件寄存器块.

  1. FACS - Firmware ACPI Control Structure

包含上次启动的hardware signature, waking vector与Global Lock。

其他ACPI表的地址也保存在XSDT表格中的Entry中。

相关Spec:
https://www.acpica.org/documentation
https://uefi.org/acpi

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值