主要节选自ACPI协议的5.2章节:5. ACPI Software Programming Model — ACPI Specification 6.6 documentation
ACPI表项的入口来自于EFI系统表的Configuration Table中的一个携带特定GUID的RSDP表项头。
由RSDP表项头可以找寻RSDT(32位)与XSDT(64位)表头,并进一步获取到各个落地表项的位置,如下图。

本文根据5.2章节中所描述的各类系统表做一个大串烧呀。
表格简称 | 表格全称 | 主要作用 |
|---|---|---|
GAS | Generic Address Structure | 通用地址结构,一种标准化的数据结构,用于描述硬件寄存器或内存区域的访问方式。包含地址空间ID、位宽、位偏移、访问宽度以及实际地址 |
RSDP | Root System Description Pointer | 根描述系统,ACPI表层次结构的入口 |
表头结构 | System Description Table Header | 系统描述表头结构,包含签名、长度、版本、校验和、OEM ID制造商标识、OEM Revision编译信息等内容 |
RSDT | Root System Descriprion Table | 根系统描述表,包含一个32位的物理地址指针数组,每个指针指向一个具体的ACPI描述表 |
XSDT | Extended System Description Table | 同样的ACPI描述表,同样可以指向具体的ACPI描述表 |
FADT | Fixed ACPI Description Table | 固定ACPI描述表,一张固定长度的表,包含了平台固件的硬件特征和电源管理信息。包括一个指向FACS和DSDT的指针,以及电源管理寄存器的地址、复位寄存器、SCI中断号、固定硬件特性标志等信息 |
FACS | Firmware ACPI Control Structure | 固件ACPI控制结构,由FADT中的指针指向的一块共享内存区域,用于操作系统和固件之间的硬件握手。包含全局锁、硬件特征向量、固件唤醒向量等。 |
DSDT | Differentiated System Description Table | 包含主板上大部分集成设备的描述,以AML字节码的形式存在,定义了设备层级、资源需求和控制方法。通过解释这个表,kernel进行平台的枚举和驱动的加载 |
SSDT | Secondary System Description Table | 作为DSDT的补充,用于描述额外的设备或覆盖DSDT中的部分定义。常用于动态添加设备或由OEM厂商提供特定平台的补丁 |
MADT | Multiple ACPI Description Table | 多APIC描述表,描述了系统中的中断控制器拓扑,包括本地APIC、IO APIC等的篇日志,用于进行GIC相关的描述 |
GICC | GIC CPU interface Structure | ARM下MADT表的一个子结构条目,用于描述ARM的GIC中每个CPU核心的接口信息,如GIC ID、基地址、性能监控中断等,用于操作系统初始化ARM处理器的中断子系统 |
SBST | Smart Battery Table | 智能电池表,配合SBS配合使用,定义了电池的警报阈值、状态查询等方法 |
ECDT | Embedded Controller Boot Resources Table | 嵌入式控制器启动资源表。在DSDT被完全解析前,提供嵌入式控制器EC的通信端口地址,使得操作系统能在早期启动阶段与EC通信,例如读取温度或控制风扇,而无需等待完整的ACPI解释器就绪 |
SLIT | System Locality Information Table | 系统局部性信息表,提供NUMA节点之间的举例矩阵。 |
SRAT | System Resource Affinity Table | 系统资源亲和性表,描述CPU和内存节点之间的亲和性关系,主要用于NUMA系统。它告诉操作系统哪些CPU核心属于哪个NUMA节点,以及哪些内存范围属于哪个节点,以便操作系统进行高效的内存分配和任务调度 |
CPEP | Corrected Platform Error Polling Table | 校正平台错误轮询表,指示操作系统需要轮询哪些处理器或组件以获取已校正的错误信息 |
MSCT | Maximum System Characteristics Table | 最大系统特征表,提供最大配置信息的摘要,如最大处理器数、最大节点数等,现在不常用 |
RASF | ACPI RAS Feature Table | 描述平台的RAS |
RA32 | ACPI RAS2 Feature Table | RAS的演进版本 |
MPST | Memory Power State Table | 内存电源状态表,描述内存节点的电源状态及其转换延迟和功耗,允许操作系统在空闲时降低内存子系统的功耗 |
PMTT | Platform Memory Topology Table | 平台内存拓扑表,描述内存模块的物理拓扑结构,包括Socket、Channel、Rank等信息 |
BGRT | Boot Graphics Resource Table | 启动图形资源表,用于无缝启动,它包含固件过程中显示的启动Logo的位置、尺寸和显示状态,可以在固件启动过程中显示这个Logo,直到图形驱动接管,避免屏幕闪烁 |
FPDT | Firmware Performance Data Table | 固件性能数据表,记录各个阶段所花费的事件戳 |
GTDT | Generic Timer Description Table | 通用定时器描述表,用于描述系统通用定时器的频率、中断号以及物理虚拟定时器的配置 |
NFIT | NVDIMM Firmware Interface Table | 描述非易失双列直插内存模块的拓扑、控制区域、地址范围等,是操作系统支持持久内存表 |
NHLT | Non HDAudio Link Table | 非HD音频链接表,主要描述DSP与音频编解码器之间的链路配置 |
HMAT | Heterogeneous Memory Attribute Table | 异构内存属性表,提供比SRAT更详细的内存性能数据,包括带宽、延迟、缓存属性等 |
PDTT | Platform Debug Trigger Table | 平台调试触发表,定义了在发生特定硬件事件时,如何触发调试机制 |
PPTT | Processor Properties Topology Table | 处理器属性拓展表,较新的ACPI表,用于更详细地描述处理器的层级拓扑结构,如Socket、Core、Thread及其属性 |