3.11. 灵活的平台体系结构支持
ACPI 定义了机制和模型,以适应偏离传统 PC 的平台体系结构。ACPI 为能够实现更低功耗、更低成本、更高设计灵活性以及更多设备多样性的平台技术提供支持。此类支持在以下各节中描述,并在后续章节中详细说明。
3.11.1. 硬件精简 ACPI
ACPI 提供了一种替代性的平台接口模型,用于消除未实现 PC 体系结构的平台对 ACPI 硬件的要求。在硬件精简 ACPI 模型中,第 4 章中的固定硬件接口要求被移除,转而使用通用硬件接口。这提供了低功耗硬件设计在创新和差异化方面所需的灵活性,同时能够得到多个操作系统的支持。
硬件精简 ACPI 具有以下要求:
用于引导的 UEFI 固件接口(不支持传统 BIOS)。
仅以 ACPI 模式引导(不支持 ACPI 启用、ACPI 禁用、SMI_CMD 和传统模式)
OSPM 与其他异步操作环境(例如 UEFI 运行时服务或系统管理模式)之间不共享硬件资源。(不支持全局锁)
不依赖 OS 支持来维持跨处理器睡眠状态的缓存一致性(不支持总线主控重载和仲裁器禁用)
不支持 GPE 块设备
不满足上述要求的系统必须实现 ACPI 固定硬件接口。
3.11.1.1. 基于中断的唤醒事件
在硬件精简 ACPI 平台上,唤醒是连接中断的一个属性。被设计为唤醒处理器或整个平台的中断被定义为具备唤醒能力。当 OSPM 启用具备唤醒能力的中断时,这些中断在被触发时会唤醒系统。
3.11.2. 低功耗空闲
平台体系结构可能支持除传统 ACPI 睡眠/恢复模型之外的硬件电源管理模型。这些模型通常在专有硬件中实现,能够在节省与 ACPI 睡眠状态同等能量的同时,提供低延迟的连接空闲。为了支持硬件实现的多样性,ACPI 提供了一种机制,使平台能够向 OSPM 表明此类能力可用。
3.11.2.1. 低功耗 S0 空闲能力标志
FADT 中的此标志通知 OSPM,某个平台是否具备高级空闲电源能力,使得 S0 空闲可实现与通常在 S3 中实现的节能效果相似或更好的节能效果。借助此标志,OSPM 可以将系统保持在 S0 空闲状态,以获得其低延迟响应和连接性,而不是切换到两者皆不具备的系统睡眠状态。该标志支持多种平台实现:传统睡眠/恢复系统、具有高级空闲功耗能力的系统、两者都不支持的系统,以及根据已安装 OS 的能力可以同时支持两者的系统。
3.11.3. 连接资源
通用输入/输出 (GPIO) 和简单外设总线 (SPB) 控制器是硅方案中提供的硬件资源,用于实现广泛系统设计的灵活配置。这些控制器可以为系统中的任意设备提供输入、输出、中断和串行通信连接。这些连接所承担的功能取决于具体涉及的设备以及平台设计需求。为了支持这些平台技术,ACPI 为灵活连接定义了一种通用抽象。
为了保持与现有软件模型的兼容性,ACPI 将这些连接抽象为硬件资源。
连接资源抽象映射了 GPIO 和 SPB 控制器的硬件功能。与其他资源一样,这些连接在使用前需要分配和配置。借助平台描述的资源,OSPM 将底层配置从设备驱动程序中抽象出来。这样,驱动程序就可以仅针对设备的功能来编写,并且无论该功能硬件如何集成到给定系统中,都可以复用。
连接资源抽象的关键方面包括:
GPIO 和 SPB 控制器在 ACPI 命名空间中枚举为设备。
定义了 GPIO 连接和 SPB 连接资源类型。
连接到 GPIO 或 SPB 控制器的命名空间设备使用资源模板宏将连接资源添加到其资源方法(_CRS、_SRS 等)中。
平台可以将 GPIO 连接资源指定用于 GPIO 信号的 ACPI 事件。
AML 方法可以使用连接资源,通过 GPIO 和 SPB 操作区域访问引脚和外设。
3.11.3.1. 支持的平台
硬件精简 ACPI 和低功耗 S0 空闲能力标志组合起来表示可实现的 4 种平台类型。下表列举了这些类型,以及预期的 OSPM 行为和具体的平台要求。
表 3.3 可实现的平台类型
| 低功耗 S0 空闲能力 | 硬件精简 ACPI | OSPM 行为 | 平台实现 |
|---|---|---|---|
| 0 | 0 | 访问固定硬件接口以实现功能、事件和系统电源管理。如果在 ACPI FW 中实现了 GPIO 信号的 ACPI 事件,则可选地访问这些事件。传统的睡眠/恢复电源管理。 | 实现固定特性硬件接口。可选地实现 GPIO 信号的 ACPI 事件。 |
| 0 | 1 | 不访问固定特性硬件接口。使用 FADT SLEEP_*_REG 字段和基于中断的唤醒信号进行睡眠/恢复电源管理。 | 实现 GPIO 信号的 ACPI 事件;为任何 ACPI 固定特性(包括睡眠寄存器)实现软件替代方案。为唤醒事件实现具备唤醒能力的中断。 |
| 1 | 0 | 访问固定硬件接口以实现功能和事件。特定于平台的低功耗空闲电源管理。如果在 ACPI FW 中实现了 GPIO 信号的 ACPI 事件,则可选地访问这些事件。 | 实现固定特性硬件接口。可选地实现 GPIO 信号的 ACPI 事件。实现低功耗硬件,使平台在 S0 中实现与通常在 S3 中实现的节能效果相似或更好的节能效果。 |
| 1 | 1 | 不访问固定特性硬件接口。特定于平台的低功耗空闲电源管理。 | 实现 GPIO 信号的 ACPI 事件;为所需的任何 ACPI 固定特性实现软件替代方案;为任何唤醒事件实现具备唤醒能力的中断。实现低功耗硬件,使平台在 S0 中实现与通常在 S3 中实现的节能效果相似或更好的节能效果。 |