一、PSCI
PSCI(Power State Coordination Interface)是一种用于支持不同监督系统之间协作的标准接口,目的是在多个操作系统或虚拟化层(如超管理器)之间协调处理器的电源状态管理。操作系统会动态调整核心的电源状态,以便平衡计算能力与当前负载,同时尽量减少能耗。常见的电源管理技术包括:
1、空闲管理(Idle Management):
当操作系统的内核没有线程调度到某个核心时,操作系统会将该核心置于低功耗状态(如时钟门控、保持或完全关机状态)。但核心仍可供操作系统使用。
2、热插拔(Hotplug):
当计算需求较低时,物理关闭某些核心,等需求增加时再将其重新启动。操作系统会将所有中断和线程从被关闭的核心迁移出去,并在核心重新上线时重新平衡负载。
由于在 ARM 系统中可能存在不同厂商的操作系统,因此电源管理需要一种协作方法。无论电源管理是由操作系统(EL1)还是虚拟化管理程序(EL2)在非安全状态下执行,当需要进入空闲状态、启动或关闭核心,或重启或关闭系统时,其他异常级别的监督系统都需要对这些电源状态变化做出响应。此外,如果某个核心的电源状态通过唤醒事件发生变化,可能还需要其他监督系统恢复上下文等操作。
PSCI 提供了一个标准接口,定义了电源状态协调接口(Power State Coordination Interface),以支持在空闲管理、热插拔、关机和重置等操作中的跨系统协作。该接口旨在通用化处理以下电源管理场景的代码:
(1)核心空闲管理。
(2)核心的动态增删以及二级核心启动
(3)系统关机和重置。
PSCI 接口并不涉及动态电压频率调节(DVFS)或设备电源管理(如外设的管理),对于这些功能,ARM 建议使用高级配置和电源接口(ACPI)或系统控制和管理接口(SCMI)。
二、SCMI
SCMI(系统控制与管理接口)是一套操作系统独立的软件接口,用于系统管理。SCMI 可扩展,目前提供以下几类接口:
1、接口发现与自描述:用于发现和描述接口的功能。
2、电源域管理:允许将特定设备或域置于其支持的各种节能状态。
3、性能管理:控制由计算引擎(如应用处理器(AP)、GPU 或其他加速器)组成的域的性能。
4、时钟管理:设置和查询平台管理的时钟的频率。
5、传感器管理:读取传感器数据并接收传感器值变化的通知。
6、复位域管理:将设备或域置于不同的复位状态。
7、电压域管理:配置和管理提供电压供应的域的电压水平。
8、功率限制与监控:配置、设置功率上限并监控电源限制域的功率消耗。
9、引脚控制协议:用于控制引脚或引脚组及其配置。
随着行业趋势的发展,越来越多的系统开始提供微控制器来抽象化电源管理或其他系统管理任务,减少对应用处理器(AP)的依赖。这些微控制器通常有类似的接口,无论是在提供的功能方面,还是在请求通信方式上。电源控制系统架构(PCSA)描述了如何构建这种架构的系统。
PCSA 定义了系统控制处理器SCP的概念,SCP 用于抽象化电源和系统管理任务,接收来自应用处理器(AP)和其他系统代理的请求,协调这些请求,将平台中的组件置于合适的电源和性能状态。SCMI 特别适用于这种类型的系统。
SCMI 接口提供了两个层次的抽象:
1、协议(Protocols): 每组相关功能被称为一个协议。SCMI 接口结构是可扩展的,因此未来可能会添加其他协议。
2、传输(Transports): 协议通过传输进行通信。传输规范描述了如何通过平台组件和接口中的代理之间通信协议消息。
该接口通常在固件中进行描述,使用设备树(FDT)或高级配置与电源接口(ACPI)规范。由于这些协议是通用的,因此会生成通用的内核代码来驱动它们。在 ACPI 的情况下,接口也可以通过 ASL 方法驱动。
总的来说,SCMI 通过提供一套标准的接口规范,支持在微控制器管理的系统中进行高效的电源、性能和其他系统管理任务。