ARM系统控制和管理接口System Control and Management Interface

本文主要是介绍ARM系统控制和管理接口System Control and Management Interface,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文档描述了一个可扩展的独立于操作系统的软件接口,用于执行各种系统控制和管理任务,包括电源和性能管理。

本文档描述了系统控制和管理接口(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协调来自所有请求代理的请求,并将硬件驱动到适当的电源或性能状态。

这篇关于ARM系统控制和管理接口System Control and Management Interface的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/778200

相关文章

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

Redis实现RBAC权限管理

《Redis实现RBAC权限管理》本文主要介绍了Redis实现RBAC权限管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 什么是 RBAC?2. 为什么使用 Redis 实现 RBAC?3. 设计 RBAC 数据结构

Java8需要知道的4个函数式接口简单教程

《Java8需要知道的4个函数式接口简单教程》:本文主要介绍Java8中引入的函数式接口,包括Consumer、Supplier、Predicate和Function,以及它们的用法和特点,文中... 目录什么是函数是接口?Consumer接口定义核心特点注意事项常见用法1.基本用法2.结合andThen链

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll