本文档描述了一个可扩展的独立于操作系统的软件接口,用于执行各种系统控制和管理任务,包括电源和性能管理。
本文档描述了系统控制和管理接口(SCMI),它是一组操作系统无关的软件接口,用于系统管理。SCMI 是可扩展的,目前提供了以下接口:
• 支持的接口的发现和自描述。
• 电源域管理,即将给定设备或域置于其支持的各种省电状态的能力。
• 性能管理,即控制由计算引擎组成的域(例如应用处理器(AP)、GPU 或其他加速器)的性能的能力。
• 时钟管理,即设置和查询平台管理的时钟的速率的能力。
• 传感器管理,即读取传感器数据并在传感器值变化时收到通知的能力。
• 复位域管理,即将给定设备或域置于各种复位状态的能力。
• 电压域管理,即配置和管理向一组组件提供电压供应的域的电压水平的能力。
• 电源限制和监控,即配置、设置电源限制并监控电源限制域的功耗的能力。
• 引脚控制协议,用于控制引脚或引脚组及其配置的协议。
行业中存在着一种强劲的趋势,即在系统中提供微控制器,以将各种电源或其他系统管理任务从应用处理器(AP)中抽象出来。这些控制器通常具有类似的接口,无论是在提供的功能方面,还是在请求如何与它们通信方面。电源控制系统架构(PCSA)描述了如何构建使用这种方法的系统。有关PCSA的详细信息,请参阅 [PCSA]。
PCSA定义了系统控制处理器(SCP)的概念,即用于从AP中抽象出电源和系统管理任务的处理器。SCP可以接受来自AP和其他系统代理的请求。它可以协调这些请求,并将平台中的组件置于适当的电源和性能状态。SCMI对于这些类型的系统尤为相关。
SCMI定义的接口提供了两个抽象级别:
• 协议Protocols 每组相关功能被称为一个协议。SCMI接口结构是可扩展的,因此未来可能会添加其他协议。
• 传输Transports 协议通过传输进行通信。传输规范描述了协议消息在代理之间如何使用接口进行通信,以及实现协议消息的平台组件。
该接口打算在固件中进行描述,可以使用扁平设备树(FDT)或高级配置和电源接口(ACPI)规范。有关更多信息,请参阅[FDT]和[ACPI]。由于这些协议是通用的,因此它们产生的是用于驱动它们的通用内核代码。然而,在ACPI情况下,该接口也可以由ASL方法驱动。
系统控制和管理接口旨在允许诸如操作系统之类的代理管理其所运行的硬件平台提供的各种功能,包括电源和性能功能。正如介绍中所述,SCMI提供了两个抽象级别:协议和传输。
以下是本规范中一些常用术语的描述:
• 协议定义了系统控制和管理消息的各个组。协议规范描述了它支持的消息。
• 代理用于描述使用系统控制和管理接口的调用方。
• 平台描述了解释消息并提供必要功能的硬件组件集合。
• 资源用于描述可以使用SCMI消息控制的硬件平台的任何组件。
• 传输描述了协议消息在代理和平台之间通信的方法。Arm 强烈建议传输是操作系统无关的,并且能够进行虚拟化。
计划独立开发协议和传输。协议的设计旨在最大程度地减少代理利用资源对系统的稳定性、机密性、完整性或安全性造成不利影响的能力。
一个传输可能支持多个通道。每个与平台通信的代理必须拥有自己的一组专用通道。换句话说,通道不能在代理之间共享。这一要求消除了在完全不同的软件堆栈上运行的代理之间创建锁原语的需求,例如,管理控制器和操作系统。此外,专用通道提供了一种平台识别发送消息的代理的方法。
使用 Arm TrustZone 技术的系统可以具有安全和非安全通道。代理可以处于安全或非安全安全状态。非安全通道不能用于访问或修改安全平台资源。只有处于安全状态的代理才能访问安全通道。
Arm Realm Management Extension [RME, RMESYS] 引入了两个新的安全状态,即领域状态和根状态,以补充现有的安全和非安全状态。它还添加了两个新的物理地址空间(PAS),即领域和根,以补充现有的安全和非安全PAS。实施 SCMI 的系统可以在根、安全和非安全 PAS 中存在通道。代理可以处于根、安全或非安全安全状态。根据 RME PAS 访问规则(如[RME]中所述),通过特定 PAS 的通道访问资源取决于进行访问的代理的安全状态。表1指定了在 SCMI 代理、通道和资源的背景下的访问规则。
【注意】:不期望在Realm安全状态下运行的软件或固件使用SCMI,并且超出了本版本规范的范围
平台可以将资源分配给由根、安全或非安全通道控制。资源分配策略由以下因素决定:
- 需要控制资源的代理的安全状态,以及
- 代理利用资源对其他处于系统中的安全状态的代理、软件或固件的机密性、完整性或安全性造成不利影响的能力。 具体来说,资源分配应确保不违反 Arm TrustZone 和 Arm RME 提供的安全性保证。
举例来说,考虑一个资源,它被根、领域、安全或非安全状态的软件或固件共享或受其影响。使用此类资源的所有代理都应能够控制该资源。在这种情况下,平台必须确保资源的配置或状态不会对根、领域、安全或非安全状态中的任何实体造成不利影响。
本文档中描述的协议旨在由功率和性能管理代理使用,例如操作系统,也称为操作系统主导的电源管理(OSPM)。典型的代理包括:
- 在非安全异常级别中运行的 OSPM。
- 运行在 AP 上的安全世界软件。
- 在实施 Arm CCA 的系统中以根安全状态运行的固件。
- 在虚拟化系统上的特权实体,如hypervisor。
- 系统中的外部实体,例如企业系统中的管理控制器或移动系统中的调制解调器Modem。
多个代理共享的资源应处于满足所有共享该资源的代理要求的状态。需要使用共享资源的任何代理都应明确发出请求。如果没有代理请求使用该资源,平台可能会禁用该资源。
可以使用引用计数方案跟踪来自不同代理的请求,以确保共享资源处于正确的状态。例如,考虑一个系统,其中两个代理共享一个资源。当第一个代理请求启用资源时,引用计数增加到一,资源被启用。当第二个代理请求启用资源时,引用计数增加到二,但资源状态保持不变。当代理请求禁用资源时,引用计数递减。只有当引用计数为零时,资源才能被禁用。只有在所有之前请求启用资源的代理后来请求禁用资源时,引用计数才会递减至零。但是,平台不应引用相同代理的计数调用。
例如,如果一个代理重复两次命令以启用相同的资源,平台不会对第二次调用采取特定操作,并且引用计数不会递增。规范假定只允许代理之间的引用计数,不允许代理内部的引用计数。
引用计数的一个后果是,共享资源可能不处于代理期望的确切状态。例如,一个代理可能要求禁用一个资源。然而,如果有其他代理请求保持该资源启用,那么实际上该共享资源可能并没有被禁用。代理可以使用协议消息来查询资源的状态。在这种情况下,平台可以选择提供资源的实际物理状态,显示资源已启用。另外,平台也可以选择为每个代理提供特定于代理的虚拟视图,指示资源已禁用。由平台向每个代理提供资源的物理和虚拟视图是由实现定义的。
下图示例说明了实现SCMI接口的一个系统。在这个例子中,平台包括一个SCP,负责处理从AP发出的SCMI命令。后者通过安全/根和非安全通道与SCP通信。图中还显示了一个使用SCMI协议来管理其电源和性能的设备。如[PCSA]中所述,SCP协调来自所有请求代理的请求,并将硬件驱动到适当的电源或性能状态。