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

相关文章

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔