[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

[ACPI高级配置与电源接口] -ACPI基础相关推荐

  1. ACPI知识(高级配置和电源接口)

    一.MPS和ACPI的关系 也就是MPS在新的计算机上已经被ACPI取代. 二.ACPI包括的内容 Category:ACPI - OSDev Wikihttps://wiki.osdev.org/C ...

  2. linux acpi 电源管理,ACPI电源管理

    S1,S2:待机.只关闭CPU.S1是完全加电:S2是如果CPU不活动就进入待机状态. S3:挂起到内存,关闭硬盘,其它设备处于加电等待状态. S4:休眠,内存写入硬盘后,关闭所有设备. S5:关机: ...

  3. [黑苹果系列] M910x完美黑苹果系统安装教程 - 6 ACPI配置-Getting started with ACPI

    ACPI配置 - ACPI ACPI是Advanced Configuration And Power Interface缩写,高级配置和电源接口. DSDT (Differentiated Syst ...

  4. 安装linux系统提示acpi,安装Linux系统时的ACPI和APIC问题

    安装Linux系统时的ACPI和APIC问题 在开始安装Linux系统时,经常会遇到关于ACPI和APIC的各种提示,然后安装被停止.这是由于这两项功能和Linux不太兼容. 解决办法是,在光盘刚启动 ...

  5. linux设备acpi表配置,linux ACPI 知识

    为什么学习ACPI ACPI是Intel(i386,x86_64,IA64)平台的标准固件规范,绝大部分OS需要从BIOS得到的信息都可以从ACPI得到,并且现在的趋势是未来的任何新的特性相关的信息都 ...

  6. jeesite如何配置swagger_Spring Boot 2.x基础教程:Swagger接口分类与各元素排序问题详解...

    之前通过Spring Boot 2.x基础教程:使用Swagger2构建强大的API文档一文,我们学习了如何使用Swagger为Spring Boot项目自动生成API文档,有不少用户留言问了关于文档 ...

  7. Windows上最全wsl2使用配置,包含基础配置、高级配置、开发工具、机器学习环境配置、机器人与自动驾驶环境配置(如Ros及百度的无人驾驶系统apollo)、服务器及Web开发环境配置等等

    Windows上最全wsl2使用配置,包含基础配置.高级配置.开发工具.机器学习环境配置.机器人与自动驾驶环境配置(如Ros及百度的无人驾驶系统apollo).服务器及Web开发环境配置等等. 文章比 ...

  8. linux设备acpi表配置,Linux acpi off简介

    Linux acpi off – the Advanced Configuration & Power Interface. ACPI是OS,BIOS和硬件之间的抽象层.它允许OS和平台独立的 ...

  9. 《Cisco/H3C交换机高级配置与管理技术手册》目录

    备受业界关注,备受无数读者殷切期待的,我的2012年新作--<Cisco/H3C交换机高级配置与管理技术手册>,经过一年的艰辛编写,现终于胜利封笔.现应许多热心读者的要求,把本书的原始目录 ...

最新文章

  1. sqluldr2支持mysql吗_Oracle SQLULDR2 以及 SQLLDR 进行导入导出的功能说明
  2. python比c语言好学吗-python和c语言哪个更适合初学者
  3. NOI2015 程序自动分析
  4. 《Linux内核设计与实现》读书笔记(十六)- 页高速缓存和页回写
  5. laravel框架——composer导入laravel
  6. POJ 2255/递归:前序中序求后序
  7. 大型网站架构系列:缓存在分布式系统中的应用(三)
  8. 教你如何申请免费的API接口
  9. 百度风云榜前50名小偷——专门用于提高你网站的流量!
  10. 决战移动互联网 诺基亚开始迷失
  11. 阿里云部署视频点播:学习文档使用Java程序部署视频点播基础用法之入门
  12. Linux导出Excel图片水印中文乱码解决
  13. Codeforces Round #807 (Div. 2)A~E个人题解
  14. Win10/11 更改电脑用户名的方法
  15. HBase的一点纪要
  16. 智慧交管大屏可视化决策系统
  17. HDFS -- 总结
  18. 奥巴马胜利演说英文及中文
  19. 二专业论文大功告成!谨抽时间一记!
  20. 现代电子技术与计算机应用分析的论文提纲,计算机及应用论文提纲范文大全 计算机及应用论文提纲如何写...

热门文章

  1. 一文让你彻底弄懂【Python中的where函数】
  2. 国产CPU型号查看命令(鲲鹏cpu、飞腾CPU)
  3. <论文阅读03> Clustering-based multiple instance learning with multi-view feature
  4. python输出水果的个数_Python 水果统计
  5. 查看网络情况 ping 大包 和 tracert 、 traceroute
  6. Oracle查询中文乱码
  7. 【题库】上海市学校心理咨询师考试-普通心理学-考点解析 2.3 大脑皮层的功能
  8. 我的数字化IT项目管理体系
  9. Undo Log学习
  10. python用flask实现百度搜索框