一个使用 ACPI 的系统的完整框图如下:
▲ 橙色部分是 ACPI 规范所覆盖的内容,因此 ACPI 定义的是一种软件和硬件组件的接口规范: 硬件上: ACPI Register Set:在硬件上实现的 ACPI 寄存器组,为 x86 架构特有。ARM 和 RISC-V 通常用的是 hardware-reduced ACPI,可无需在硬件上实现这些寄存器。 软件上,定义了多个 ACPI 表(Table),这些表整体可分为两种类型: Static Tables:又称为Data Tables,由裸数据组成,ACPI Driver 可直接读取表中的内容。 Definition Block Tables:由AML(ACPI Machine Language)字节码(byte code)组成,它的内容要经AML Interpreter(解释器)解释后才能被 ACPI Driver 读取到。 ▲ 绿色部分是操作系统中的相关组件,其中: ACPI Driver:操作系统用于对接 ACPI 的驱动,AML Interpreter 也是属于其中的一部分。其中有一个比较出名的开源工程ACPICA(ACPI Component Architecture)[3],它提供了与操作系统无关的一些 ACPI 相关代码实现,也包括一个 AML Interpreter 的实现。目前 ACPICA 的代码被用于 Linux、FreeBSD 等系统中,作为 ACPI Driver 的一部分。 OSPM(Operating System-directed configuration and Power Management):以 ACPI 为核心、由操作系统主导的电源管理子系统的统称。 ▲ 蓝色部分是硬件或平台相关的组件,其中: Platform Firmware是负责启动机器、实现休眠/唤醒/重启等接口的固件,通常指 BIOS/UEFI。它也负责生成各个 ACPI 表并提供给操作系统。
|