ARM电源状态协调接口Power State Coordination Interface

时间:2024-03-09 15:15:40

本文档定义了一种用于处理器(PE)和系统级别电源管理的标准接口,可供操作系统供应商在 Arm 设备上不同特权级别的监督软件使用。像 Linux 和 Windows 这样的富操作系统、Hypervisor、特权固件以及可信操作系统实现在进行电源管理时必须进行交互操作。这一标准的目的是简化不同供应商在不同特权级别工作的监控软件之间的集成。

电源管理感知操作系统会动态地改变核心的电源状态,平衡可用的计算能力以适应当前的工作负载,同时努力使用最小的功耗。其中一些技术会动态地开启和关闭核心,或者将它们置于静态状态,即它们不再执行计算任务。这意味着它们消耗的功耗非常少。这些技术的主要例子包括:

空闲管理Idle Management:当操作系统内核在核心上没有要调度的线程时,它会将该核心置于时钟门控、保持或甚至完全断电的状态。但是,该核心仍然对操作系统可用。

热插拔Hotplug:当计算需求较低时,核心会被物理关闭,然后在需求增加时重新启动。操作系统会将所有中断和线程从被下线的核心迁移走,并在它们重新上线时重新平衡负载。

由于在 Arm 系统中可能存在来自不同供应商的各种操作系统,执行电源控制需要一种协作方法。考虑到在非安全状态下的操作,如果一个管理电源的监督系统(无论是在操作系统级别(EL1)还是在hypervisor级别(EL2)执行)想要进入空闲状态、启动或关闭核心,或者复位或关闭系统,其他异常级别的监督系统将需要对电源状态变更请求做出反应。

同样,如果核心的电源状态由唤醒事件改变,可能需要在不同异常级别上运行的监督系统执行诸如恢复上下文等操作。PSCI 提供了一个标准接口定义,以支持各种监督系统之间的交互操作和集成。本文档定义了这样一个接口,即电源状态协调接口,并描述了它在空闲、热插拔、关闭和复位(idle, hotplug, shutdown, reset)方面的用途。

这个接口标准旨在实现以下电源管理场景中的代码:

• 核空闲管理。

• 动态添加和删除核心,以及从核引导。

• 系统shutdown和复位。

该接口不涵盖动态电压和频率调节(Dynamic Voltage and Frequency Scaling,DVFS)或设备电源管理(例如,管理外围设备如 GPU)。Arm 建议使用高级配置与电源接口(Advanced Configuration and Power Interface,ACPI)或系统控制和管理接口(System Control and Management Interface,SCMI)作为此类功能的标准接口。

该接口设计成可以与硬件发现技术(如高级配置与电源接口(ACPI)和扁平设备树(FDT))配合使用。它不是 ACPI 或 FDT 的替代品。

本文档定义了一个 API,可用于协调并发运行在设备上的监督系统之间的电源控制。正如以下各节所解释的那样,该 API 允许一个监督系统请求启动或关闭核心,并请求从一个核心向另一个核心转移安全上下文,这在处理可信操作系统或安全处理器时可能是必要的。在描述中,文档通常假定 EL2 和 EL3 都已实现,但也涵盖其他情况。

PSCI 的预期用途如下:

• 提供一个通用接口,供监督软件在以下情况下管理电源:

        • 核空闲管理。

        • 动态添加和移除系统中的核心,通常称为热插拔。

        • 从核引导。

        • 将可信操作系统上下文从一个核心移动到另一个核心。

        • 系统关闭和复位。

• 提供一个接口,供监督软件与固件表(FDT 和 ACPI)描述结合使用,以支持电源管理代码的通用化。

PSCI 不涵盖

• 外围设备空闲管理。PSCI 仅适用于监督软件*调度器使用的核心的空闲管理。

• 动态电压和频率调节。PSCI 不提供用于设备上核心时钟频率管理的接口。 PSCI 不向监督软件提供电源状态表示。然而,它设计成也可以与 ACPI 或 FDT 等硬件描述技术一起使用。