4.1. 硬件精简型 ACPI
对于某些类别的系统,ACPI 硬件规范可能并不充分。示例包括无传统支持、基于 UEFI 且配备较新处理器的平台,以及实现移动平台架构的平台。对于此类平台,定义了一种硬件精简型 ACPI 模式。在该定义下,不实现 ACPI 固定硬件接口,而是改用其所支持的许多特性的软件替代方案。不过请注意,硬件精简型 ACPI 的目的并不是支持当今可能构建的每一种 ACPI 系统。相反,它旨在引入从一开始就设计为硬件精简的新系统。如果平台无法设计为在没有 ACPI 硬件规范的情况下工作,则应使用 ACPI 硬件规范。具体而言,在硬件精简定义下,不支持以下特性:
Global Lock、SMI_CMD、ACPI 启用和 ACPI 禁用。硬件精简型 ACPI 系统始终以 ACPI 模式启动,并且不支持 OSPM 与其他异步操作环境(如 UEFI 运行时服务或系统管理模式)之间的硬件资源共享。
总线主控重载和仲裁器禁用。不支持依赖 OS 使用这些位来在处理器睡眠状态之间维持缓存一致性的系统。
不支持 GPE 块设备。
需要上述特性的平台必须实现 ACPI 硬件规范。
为硬件精简型 ACPI 定义而设计的平台必须实现固定 ACPI 描述符表的修订版 5 或更高版本,并且必须在 Flags 字段中设置 HW_REDUCED_ACPI 标志。
注意: 允许使用 FFH,并且其同时适用于完整 ACPI 和硬件精简型 ACPI 实现。
4.1.1. 硬件精简型事件
硬件精简型 ACPI 平台需要为 ACPI 硬件规范所支持的某些特性提供替代方案,而这些特性在当前并无现成替代机制。需要此类替代方案的领域有两个:ACPI 平台事件模型,以及系统和设备唤醒。
4.1.1.1. GPIO 信号事件或中断信号事件
通用输入/输出(GPIO)硬件可用于发出平台事件信号。GPIO 硬件是 GPE 模型的泛化,并且是一种用于多种应用的共享硬件资源。ACPI 对 GPIO 的支持在 连接资源 一节中描述。ACPI 6.1 引入了通过中断发出事件信号的能力。有关更多详细信息,请参见 中断信号 ACPI 事件。
基于 GPIO 的事件信号通过 GPIO 中断连接提供,这些连接描述了与 GPIO 控制器和引脚的连接,并通过 ACPI 事件信息命名空间对象 (_AEI) 映射到 ACPI 事件处理机制。OSPM 对 _AEI 中列出的 GPIO 中断连接的处理方式与 SCI 中断完全相同:它执行与特定事件关联的事件方法。要运行的方法名称由 GPIO 中断连接资源中包含的引脚信息确定。有关更多详细信息,请参见 GPIO 信号 ACPI 事件。
GPIO 信号事件也可以是唤醒事件,正如在传统 ACPI 平台上 GPE 事件也可以是唤醒事件一样。通过所使用的 GPIO 中断连接资源的属性来指定哪些事件是唤醒事件。设备可以使用 _PRW 来管理唤醒事件,如 _PRW(用于唤醒的电源资源) 中所述。
基于中断的事件信号采用类似的方法,声明一个通用事件设备(GED),该设备进而描述与事件生成相关的所有中断。这些中断列在 _CRS 对象中。当某个中断被置位时,OSPM 将执行在 GED 对象中声明的事件方法 (_EVT),并将中断标识符作为参数传入。通过这种方式,该中断可以与特定的平台事件相关联。
4.1.1.2. 基于中断的唤醒事件
在硬件精简型 ACPI 平台上,唤醒事件始终由到达处理器的中断引起。因此,要将系统从睡眠或低功耗空闲状态唤醒,或将设备从低功耗状态唤醒,需要满足两个要求。首先,中断线必须具备可唤醒能力。具备唤醒能力的中断被设计为能够从低功耗状态投递到处理器。这意味着它还必须能够使处理器和任何所需的平台硬件上电,以便中断服务例程能够运行。其次,OS 驱动程序必须在进入低功耗状态之前启用该中断,或者在 OSPM 将系统置入睡眠或低功耗空闲状态之前启用该中断。
具备唤醒能力的中断在其扩展中断或 GPIO 中断连接资源描述符中被指定为此类中断。