[ACPI 6.2A 规范中文版]第5.2章:ACPI系统描述表

5.2 ACPI系统描述表

本节指定系统描述表的结构:

•Root System Description Pointer (RSDP)
•System Description Table Header
•Root System Description Table (RSDT)
•Fixed ACPI Description Table (FADT)
•Firmware ACPI Control Structure (FACS)
•Differentiated System Description Table (DSDT)
•Secondary System Description Table (SSDT)
•Multiple APIC Description Table (MADT)
•Smart Battery Table (SBST)
•Extended System Description Table (XSDT)
•Embedded Controller Boot Resources Table (ECDT)
•System Locality Distance Information Table (SLIT)
•System Resource Affinity Table (SRAT)
•Corrected Platform Error Polling Table (CPEP)
•Maximum System Characteristics Table (MSCT)
•ACPI RAS Feature Table (RASF)
•Memory Power StateTable (MPST)
•Platform Memory Topology Table (PMTT)
•Boot Graphics Resource Table (BGRT)
•Firmware Performance Data Table (FPDT)
• Generic Timer Description Table (GTDT)
•NVDIMM Firmware Interface Table (NFIT)
•Heterogeneous Memory Attributes Table (HMAT)                                  •Platform Debug Trigger Table (PDTT)
•Processor Properties Topology Table (PPTT)

在acpi定义的表、块和结构中,所有的数值都是以小的endian格式编码的。签名值存储为固定长度字符串。

5.2.1保留位和字段

对于未来的扩展,在本规范中标记为保留的所有数据项都有严格的含义。本节列出了保留字段的软件需求。注意,这个列表包含了一些术语,比如在规范的这一部分中定义的ACPI表和AML代码。

5.2.1.1保留位和软件组件

•在ACPI表中或其他软件值(如资源描述符)中,软件和AML代码的OEM实现对所有保留比特的比特值都返回0。

•对于ACPI表和寄存器中的所有保留位,OSPM实现必须:

忽略所有读过的保留位。

•保留读/写数据项的保留位值(例如,OSPM回写保留的位值)。

•将零写在只写数据项的保留位上。

5.2.1.2保留值和软件组件

•OEM实现软件和AML代码只返回定义的值,不返回保留值。

•OSPM实现只写定义的值,不写保留值。

5.2.1.3预留硬件位和软件组件

•软件忽略从硬件启用或状态寄存器读取的所有保留位。

•软件在硬件启用寄存器中写入0到所有保留位。

•软件忽略所有从硬件控制和状态寄存器读取的保留位。

•软件通过写回读值来保存硬件控制寄存器中所有保留位的值。

5.2.1.4忽略硬件位和软件组件

•在ACPI硬件中,软件处理被忽略的位,与在相同类型的寄存器中处理保留位的方式相同。

5.2.2兼容性

ACPI表的所有版本都必须保持向后兼容性。为了实现这一点,对表的修改包括重新定义先前保留的字段和值,并将数据附加到1.0表中。对ACPI表的修改要求对修改后的表的版本号进行递增。表中的length字段包括所有添加项,并且对表的整个长度保持校验和。

5.2.3地址格式

在ACPI 1.0系统描述表中使用的地址表示为系统内存或I/O空间。这是针对IA-32环境的。更新的体系结构需要在ACPI 1.0中定义的解决机制。为了支持这些架构,ACPI必须支持64位寻址,它必须允许在系统I/O以外的地址空间放置控制寄存器。

5.2.3.1固定功能硬件

ACPI将固定的硬件底层接口定义为向系统OEM提供必要的最小接口,以实现主板配置和系统电源管理的能力和质量。此外,这些接口的定义,以及在此规范中定义的其他接口,向OS厂商(OSVs)传达了开发acpi兼容的操作系统、操作系统必须操作的必要接口,从而为系统配置和电源管理提供强大的支持。

而定义的底层硬件接口的定义ACPI 1.0提供OSPM实现一定程度的稳定,控制为现有和新兴不同CPU架构不能适应这种模式,因为他们可能需要一个硬件操作序列与本地CPU指令混杂在一起,提供ACPI-defined接口函数。在这种情况下,由CPU制造商通过硬件和软件的等效组合实现一个ACPI定义的固定硬件接口,并由ACPI定义为功能固定硬件。

在基于ia -32的系统中,功能固定硬件可以采用系统管理模式(SMM)的系统固件来适应操作系统的独立方式。不幸的是,基于smm的代码的特性使得这种类型的OS独立实现变得困难,如果不是不可能调试的话。因此,不推荐这种实现方法。在某些情况下,功能固定的硬件实现可能需要与其他OS组件的协调。因此,一个操作系统独立的实现可能不可行。

使用CPU制造商提供的技术信息可以实现功能固定硬件的特定于os的实现。这种方法的缺点是必须为每个操作系统开发功能性的固定硬件支持。在某些情况下,CPU制造商可能提供提供这种支持的软件组件。在其他情况下,对功能固定硬件的支持可以由操作系统供应商直接开发。

在ACPI 2.0中,硬件寄存器定义被扩展,允许寄存器存在于系统I/O地址空间之外的地址空间中。这是通过在寄存器定义中指定地址空间ID来完成的(参见第5.2.3.2节,“通用地址结构”,以获取更多信息)。当由CPU制造商特别指示时,系统固件可以通过指示0x7F(功能固定硬件)在地址空间ID字段中定义一个接口作为功能固定硬件。强调功能固定的硬件定义可以在ACPI系统固件中声明,只有在特定接口的CPU制造商指出的情况下,因为使用功能固定的硬件需要与操作系统供应商进行特定的协调。

只有特定的acpi定义的接口可以使用功能固定的硬件实现,而且只有当接口在机器设计中很常见时,系统才会共享一个通用的CPU架构,而不支持一个acpi定义的接口的固定硬件实现。OEMs被警告不要期望在系统的基础上不同的OSPM提供功能固定的硬件支持。使用功能固定的硬件可以依赖于必须考虑的操作系统特定的软件。OEMs应该咨询OS供应商,以确保特定的功能固定的硬件接口是由特定的操作系统支持的。

5.2.3.2通用地址结构

通用地址结构(GAS)为平台提供了描述寄存器位置的健壮方法。下面描述的结构(表5-26)用于在ACPI定义的表中表示寄存器地址。

5.2.4普遍惟一的标识符(uuid)

uuid(普遍惟一的标识符),也称为GUIDs(全局惟一标识符)是128位长值,极有可能与生成的所有其他uuid不同,直到3400年uuid被用来区分ASL方法的调用者,如_DSM和_OSC。

格式的二进制字符串表示的UUID和一个算法来生成指定在ISO / IEC 11578:1996信息技术-开放系统互连的远程过程调用(RPC),可以发现1.1分布式计算环境的一部分:远程过程调用规范,可以发现“ACPI-Related文档链接”(http://uefi.org/acpi)在标题“万能的统一标识符(UUID)”。

5.2.5根系统描述指针(RSDP)

在OS初始化过程中,OSPM必须从平台获得根系统描述指针(RSDP)结构。当OSPM定位根系统描述指针(RSDP)结构时,它将使用RSDP中提供的物理系统地址来定位根系统描述表(RSDT)或扩展的根系统描述表(XSDT)。

5.2.5.1在IA-PC系统上寻找RSDP

OSPM通过在16字节边界上搜索物理内存范围,找到根系统描述指针(RSDP)结构,以便有效的根系统描述指针结构签名和校验和匹配如下:

•扩展BIOS数据区(EBDA)的前1 KB。对于EISA或MCA系统,EBDA可以在BIOS数据区域的双字节位置40:0Eh中找到。

•在0E0000h和0FFFFFh之间的BIOS只读内存空间。

5.2.5.2在UEFI启用系统上查找RSDP

在统一的可扩展固件接口(UEFI)中,一个指向RSDP结构的指针存在于EFI系统表中。在调用时,OS加载程序提供一个指向EFI系统表的指针。操作系统加载程序必须从EFI系统表中获取指向RSDP结构的指针,并使用一个依赖于操作系统的数据结构将指针传递给OSPM,这是操作系统加载器对操作系统控制的一部分。

OS加载程序通过检查EFI系统表中的EFI配置表来定位指向RSDP结构的指针。EFI配置表条目由全局惟一标识符(GUID)/表指针对组成。UEFI规范定义了ACPI的两个gui;一个用于ACPI 1.0,另一个用于ACPI 2.0或更高版本的规范修订。

指向ACPI 1.0规范RSDP结构的指针的EFI GUID为:

•eb9d2d30 – 2 d88 – 11 – d3 – 9 – a16 fc14d——0090273。

对于指向ACPI 2.0或更高版本RSDP结构的指针,EFI GUID为:

•8868年e871 e4f1 – 11 – d3 bc22 – 0080 c73c8881。

与acpi兼容的操作系统的OS加载程序将首先使用当前修订GUID搜索一个RSDP结构指针,如果找到一个,将使用相应的RSDP结构指针。如果没有找到GUID,那么OS加载程序将使用ACPI 1.0版本GUID搜索RSDP结构指针。

OS加载程序必须从EFI系统表中获取指向RSDP结构的指针,然后通过EFI ExitBootServices接口进行平台控制。有关更多信息,请参见UEFI规范。

5.2.5.3根系统描述指针(RSDP)结构

结构中包含的修订号表示表结构的大小。

5.2.6系统描述表头

所有系统描述表从表5-29所示的结构开始。签名字段决定系统描述表的内容。由本规范定义的系统描述表签名在表5-30中列出。

对于OEMs,好的设计实践将确保在任何表中分配OEMID和OEM表ID字段时的一致性。这些字段的目的是允许支持服务可以使用的二进制控制系统。由于许多支持函数可以是自动化的,所以当一个工具能够以编程方式决定哪个表版本是兼容的,并且在相同的OEMID和OEM表ID上更新之前的表时,它是有用的。

表5-30和表5-31包含本规范定义的系统描述表签名。这些系统描述表可以由ACPI定义,并在本规范中记录(表5-30),或者仅由ACPI保留并由其他行业规范定义(表5-31)。这允许根据需要定义和指向RSDT/XSDT指定的操作系统和平台特定的表。对于由其他行业规范定义的表,ACPI规范充当了gatekeeper,以避免表签名中的冲突。

表格签名将由ACPI促进者保留,并独立于ACPI errata的规范和ACPI网站的澄清文档中发布。要求保留4字节的字母数字表签名的请求应发送到电子邮件地址info@acpi.info,并应将表和引用URL的用途包括到描述表格式的文档中。在ACPI规范之外定义的表可以定义小的endian或big endian格式的数据值编码。为了清晰起见,外部表定义文档应该包括它们的数据值编码的发现性。

由于引用url可能随时间而变化,而且可能并不总是在此规范中更新,因此可以在“与acpi相关的文档链接”(http://uefi.org/acpi)中找到包含最新已知引用url的单独文档,该文档应该在与该规范相同的位置上被放置。

5.2.7根系统描述表(RSDT)

OSPM通过跟踪RSDP结构中的指针来查找根系统描述表。在表5-32中显示的RSDT,从签名“RSDT”开始,然后是一系列物理指针,这些指针指向其他系统描述表,这些表提供了在当前系统上定义的其他标准的各种信息。OSPM检查每个表的已知签名。根据签名,OSPM可以解释表中特定于实现的数据。

平台提供RSDT来支持ACPI 1.0操作系统的兼容性。在下一节中描述的XSDT取代了RSDT功能。

5.2.8扩展系统描述表(XSDT)

XSDT提供了与RSDT相同的功能,但是可以容纳大于32位的描述头的物理地址。注意,XSDT和RSDT都可以由RSDP结构指向。一个兼容acpi的操作系统必须使用XSDT。

5.2.9固定ACPI描述表(FADT)

固定的ACPI描述表(FADT)定义了各种固定的硬件ACPI信息,这些信息对于与ACPI兼容的操作系统至关重要,例如以下硬件寄存器的基本地址:PM1a_EVT_BLK、PM1b_EVT_BLK、PM1a_CNT_BLK、PM1b_CNT_BLK、PM2_CNT_BLK、PM_TMR_BLK、GPE0_BLK、GPE1_BLK。

FADT也有一个指向DSDT的指针,DSDT包含有区别的定义块,它依次提供变量信息到与基础系统设计相关的acpi兼容操作系统。

提供硬件地址的FADT中的所有字段都提供处理器相关的物理地址。

注意:如果在表中设置HW_REDUCED_ACPI标志,那么OSPM将忽略与ACPI HW注册接口相关的字段:在偏移46到108和148到232之间的字段,以及FADT标记位1、2、3、7、8、13、14、16和17)。

注意:在所有的FADT包含32位字段和相应的64位字段的情况下,如果64位字段包含一个非零值,可以由OSPM使用。在这种情况下,无论是否为零,都必须忽略32位字段,不管它是否与64位字段相同。如果对应的64位字段包含一个零值,或者如果OSPM不能使用64位值(例如CPU处理限制),那么只能使用32位字段。

 

 

 

 

 

 

ACPI导航

[ACPI 6.2A 规范中文版]译者绪论

[ACPI 6.2A 规范中文版]第1章:介绍

[ACPI 6.2A 规范中文版]第2章:术语的定义

[ACPI 6.2A 规范中文版]第3章:ACPI概述

[ACPI 6.2A 规范中文版]第4章:ACPI硬件规范

[ACPI 6.2A 规范中文版]第4.8章:ACPI寄存器模型

[ACPI 6.2A 规范中文版]第5章:ACPI软件编程模型

[ACPI 6.2A 规范中文版]第6章:设备配置

[ACPI 6.2A 规范中文版]第7章:电源和性能管理

[ACPI 6.2A 规范中文版]第8章:处理器配置和控制