ACPI 系统说明表

在基于 SoC 的平台上不需要高级配置和电源接口(ACPI)硬件规范的实现,但大部分 ACPI 软件规范(或可能)都是必需的。 ACPI 定义了一种通用、可扩展的表传递机制,以及用于向操作系统描述平台的特定表。

表结构和标头(包括 ID 和校验和字段)在 ACPI 5.0 规范中定义。 除了本文中所述的特定表外,Windows 还利用此表传递机制。

这些表背后的理念是使通用软件能够支持标准知识产权(IP)块,这些块可以通过各种方式集成到各种平台中。 使用表策略时,特定平台的平台变量属性在表中提供,泛型软件使用它来适应集成到平台中的特定 IP 块集。 因此,此软件可以编写一次,经过全面测试,然后随着时间的推移进行优化。

根系统说明指针 (RSDP)

Windows 依赖于 UEFI 固件来启动硬件平台。 因此,Windows 将使用 EFI 系统表查找 RSDP,如 ACPI 5.0 规范的第 5.2.5.2 节“在已启用 UEFI 的系统上查找 RSDP”中所述。 平台固件在 RSDP 中填入 RSDT 或 XSDT 的地址。 (如果同时提供了这两个表地址,Windows 首选 XSDT。

根系统说明表 (RSDT)

RSDT(或 XSDT)包含指向平台上提供的其他任何系统描述表的指针。 具体而言,此表包含指向下表的指针:

  • 固定 ACPI 硬件表 (FADT)

  • 多个中断控制器表 (MADT)

  • (可选)核心系统资源表(CSRT)

  • 调试端口表 2 (DBG2)

  • 启动图形资源表 (BGRT)

  • 固件性能数据表 (FPDT)

  • 基本系统说明表 (DSDT)

  • (可选)其他系统说明表(SSDT)

ACPI 固定描述表 (FADT)

固定 ACPI 硬件表 (FADT) 包含有关平台上可用的各种固定硬件功能的重要信息。 若要支持硬件减少的 ACPI 平台,ACPI 5.0 将扩展 FADT 表定义,如下所示:

  • FADT 中的“标志”字段(偏移量 112)有两个新标志:

    HARDWARE_REDUCED_ACPI位偏移量 20。 指示 ACPI 硬件在此平台上不可用。 如果未实现 ACPI 固定硬件编程模型,则必须设置此标志。

    LOW_POWER_S0_IDLE_CAPABLE位偏移量 21。 指示平台支持 ACPI S0 系统电源状态中的低功率空闲状态,这些状态比任何 Sx 睡眠状态更高效。 如果设置了此标志,Windows 不会尝试睡眠和恢复,而是使用平台空闲状态和连接待机。

  • FADT Preferred_PM_Profile 字段(字节偏移量 45)具有新的角色条目“Tablet”。 此角色会影响显示和输入的电源管理策略,并影响屏幕键盘的显示。

  • “IA-PC 启动体系结构标志”字段(偏移量 109)具有新的“CMOS 实时时钟不存在”标志(位偏移 5),以指示电脑的 CMOS 实时时钟未实现,或不存在于传统地址中。 如果设置了此标志,平台必须实现 ACPI 时间和警报控制方法设备。 有关详细信息,请参阅 ACPI 定义的设备文章中的“控制方法时间和警报设备”部分。

  • 为支持硬件简化的 ACPI 平台上的常规电脑睡眠/恢复功能,增加了新字段。 Windows 将忽略这些字段,但必须存在于表中以供符合性。

  • 如果设置了HARDWARE_REDUCED_ACPI标志,作系统将忽略与 ACPI 硬件规范相关的所有字段。

所有其他 FADT 设置都保留以前版本 ACPI 4.0 中的含义。 有关详细信息,请参阅 ACPI 5.0 规范的第 5.2.9 节“固定 ACPI 说明表(FADT)”。

多重APIC描述表(MADT)

在 ACPI 的电脑实现中,多个 APIC 说明表(MADT)和特定于电脑的中断控制器描述符用于描述系统中断模型。 对于基于 Arm 的 SoC 平台,ACPI 5.0 为 Arm Holdings 的通用中断控制器(GIC)和 GIC 分发服务器添加了描述符。 Windows 包括对 GIC 和 GIC 分发服务器的收件箱支持。 有关这些描述符的详细信息,请参阅 ACPI 5.0 规范的 5.2.12.14、“GIC 结构”和 5.2.12.15、“GIC 分发服务器结构”部分。

中断控制器描述符结构在 MADT 中的 Flags 字段后立即列出。 对于 Arm 平台,为每个 GIC 列出一个描述符,然后为每个 GIC 分发服务器列出一个描述符。 对应于启动处理器的 GIC 必须是中断控制器描述符列表中的第一个条目。

通用计时器说明表 (GTDT)

与中断控制器一样,ACPI 中有一个标准计时器说明表。 对于利用 GIT 计时器的 Arm 系统,ACPI 的 GTDT 可用于利用 Windows 中 GIT 的内置支持。

核心系统资源表 (CSRT)

核心系统资源(CSR)是共享的硬件功能,例如中断控制器、计时器和 DMA 控制器,操作系统必须对其访问进行序列化。 当计时器和中断控制器(在 x86 和 Arm 架构上)存在行业标准时,Windows 会根据 ACPI 中描述的标准表(例如 MADT 和 GTDT),内置对这些功能的支持。 但是, 在行业统一 DMA 控制器接口标准之前,操作系统需要支持一些非标准设备。

Windows 支持 HAL 扩展的概念来解决此问题。 HAL 扩展是特定于 SoC(片上系统)的模块,作为 DLL 实现,这些模块用于将 Windows 的硬件抽象层 (HAL) 适配到 Windows 所需的某个特定类别的 CSR 的特定硬件接口。 为了标识和加载这些非标准 CSR 模块,Microsoft定义了一个新的 ACPI 表。 在 ACPI 规范中具有“CSRT”的保留签名的此表,如果平台上使用非标准 CSR,必须包含在 RSDT 中。

CSRT 描述 CSR 的资源组,其中每个资源组标识特定类型的硬件。 Windows 使用为资源组提供的标识符来查找和加载此组所需的 HAL 扩展。 CSRT 中的资源组还可能包含单个资源描述符,具体取决于 CSR 类型和 HAL 扩展的需求。 这些资源描述符的格式和使用由 HAL 扩展编写器定义,后者可以使扩展更易于移植,因此只需更改 CSRT 中包含的资源描述符即可支持各种不同的 SoC 平台。

为了支持维护 HAL 扩展以及管理这些扩展所使用的系统资源,CSRT 中描述的每个资源组也必须表示为平台 ACPI 命名空间中的设备。 有关详细信息,请参阅以下“区分系统说明表(DSDT)”部分。 资源组标头中使用的设备标识符必须与设备命名空间节点中使用的标识符匹配。 有关详细信息,请参阅设备管理命名空间对象文章中的 ACPI 中的设备标识部分。 这些资源组命名空间设备的存在允许 Windows 更新服务为 HAL 扩展提供服务。

有关详细信息,请参阅 核心系统资源表(CSRT)规范

调试端口表 2 (DBG2)

Microsoft需要所有系统上的调试端口。 为了描述内置于平台中的调试端口,Microsoft 为 ACPI 定义了调试端口表 2(DBG2)。 此表指定用于调试的一个或多个独立端口。 DBG2 表的存在指示平台至少包含一个调试端口。 此表包含有关调试端口的标识和配置的信息。 该表位于具有其他 ACPI 表的系统内存中,必须在 ACPI RSDT 表中引用。

Windows 使用 DBG2 表中的端口类型值来标识和加载系统所需的内核调试器(例如 USB 或串行)传输。 然后,KD 传输使用 DBG2 表中的端口子类型值来标识端口使用的硬件接口。 DBG2 表中的其他信息指定端口寄存器的系统地址,该地址由硬件接口模块用于指定的子类型。 最后,DBG2 表必须包含对 ACPI 命名空间中与调试端口相对应的设备节点的引用。 此参考使 Windows 能够管理调试使用与设备正常使用之间的冲突(如果有)以及将调试器与电源转换集成。

有关详细信息,请参阅 Microsoft调试端口表 2 (DBG2) 规范

差异化系统说明表(DSDT)

在 ACPI 中,平台上的外围设备和系统硬件功能被描述在“区分系统说明表”(DSDT)中,该表在启动时加载。辅助系统说明表(SSDT)则可以在启动时加载或在运行时动态加载。 对于 SoC,平台配置通常是静态的,因此 DSDT 可能足够,尽管 SSDT 还可用于改进平台描述的模块化。

ACPI 以与 OS 无关的方式定义解释语言(ACPI 源语言或 ASL)和执行环境(ACPI 虚拟机),用于描述系统设备和功能及其特定于平台的控制。 ASL 用于在 ACPI 命名空间中定义命名对象, Microsoft ASL 编译器 用于生成 ACPI 计算机语言 (AML) 字节代码,以便传输到 DSDT 中的作系统。 收件箱 Windows ACPI 驱动程序 Acpi.sys实现 ACPI 虚拟机并解释 AML 字节代码。 AML 对象可能只是返回说明信息。 或者,AML 对象可能是进行计算或执行 I/O 操作的方法。 控制方法是一个可执行的 AML 对象,该对象使用操作系统的设备驱动程序在平台硬件上执行 I/O 操作。 ASL 使用 OpRegions 来抽象操作系统中可访问的各种地址空间。 控制方法执行 I/O 操作时,将其作为在 OpRegions 中声明的命名字段之间的一系列传输。

有关 OpRegions 的详细信息,请参阅 ACPI 5.0 规范中的第 5.5.2.4 节“访问操作区域”。 有关 ASL 和控制方法的详细信息,请参阅 ACPI 5.0 规范中的第 5.5 节“ACPI 命名空间”。

Windows 支持开发和调试 ASL 代码。 ASL 编译器包括一个反汇编程序,使实现者能够从调试目标加载命名空间。 然后,可以使用 ASL 编译器将命名空间重新应用到目标,以便进行快速原型制作和测试,而无需刷写系统固件。 此外,Windows 内核调试器与 Acpi.sys 驱动程序的已检查 (CHK) 版本一起支持跟踪和分析 AML 执行。 有关详细信息,请参阅 AMLI 调试器

Windows SMM 安全缓解表 (WSMT)

Windows SMM 安全缓解表(WSMT)规范包含高级配置和电源接口(ACPI)表的详细信息,该表专为支持Windows虚拟化安全(VBS)功能的Windows操作系统而设计。

此信息适用于以下作系统:

Windows Server 2016

Windows 10 版本 1607

有关详细信息,请参阅 Windows SMM 安全缓解表(WSMT)规范(DOCX 下载)。

iSCSI 启动固件表 (iBFT)

iSCSI 启动固件(iBF)表(iBFT)是一个信息块,其中包含对 iSCSI 启动进程有用的各种参数。 iBFT 是将 iBF 参数值传递给操作系统的机制。 iBF 生成并填充 iBFT。 iBFT 可用于 Windows操作系统,以确保启动进程的顺利进行。

有关详细信息,请参阅 iSCSI 启动固件表(iBFT)规范(DOCX 下载)。