微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 针对非对称多处理系统实现更简单的软件开发

针对非对称多处理系统实现更简单的软件开发

时间:01-20 来源:互联网 点击:
作者:Mentor Graphics 公司工程师Arvind Raghuraman
arvind_raghuraman@mentor.com

Mentor 嵌入式多核框架能消除异构硬件和软件环境的管理复杂性,从而简化SoC系统设计

异构多处理对于当今的嵌入式应用来说正变得越来越重要。片上系统 (SoC) 架构,例如赛灵思的 Zynq UltraScale+ MPSoC 提供包含四个 ARM Cortex-A53 内核以及两个 ARM Cortex-R5 内核的强大异构多处理基础架构。除了核心的计算基础架构外,SoC 还包含一系列丰富的硬化外设 IP 和 FPGA 架构,可实现灵活的设计模式,从而帮助系统开发人员创建高性能多处理系统。

各种软件开发模式的出现使开发人员可以充分利用 SoC(例如 Zynq MPSoC)提供的多处理功能优势。对称多处理 (SMP) 操作系统提供了必需的基础架构,能够在多处理系统中的多个同构内核之间以对称或非对称方式平衡应用工作负荷。不过,要想利用系统中异构处理器提供的计算带宽,需要使用非对称多处理 (AMP) 软件架构。

AMP 架构通常需要在 SoC 中不同处理内核上运行的多种软件环境(例如 Linux、实时操作系统 (RTOS) 或裸机软件),协同工作实现最终应用的设计目标。在典型设计中,主内核上的软件环境根据需要驱动一个远程内核上的远程软件环境,用于分担计算任务。主处理器、远程处理器及其相关软件环境(即它们的操作系统环境)可以是同构或者异构的。

为有效管理不同处理器上多个操作系统的生命周期,同时提供处理器间通信 (IPC) 基础架构以分担计算工作负荷,需要采用经过改善的新软件功能和方法。

Mentor Graphics 公司的 Mentor 嵌入式多核框架是一种软件框架,能够为 AMP 系统开发人员提供两大重要功能:用于对远程处理器及其相关软件环境进行生命周期管理的 remoteproc 组件和 API;用于在 AMP 环境中的操作系统之间实现 IPC 的 rpmsg 组件和 API。该框架为用户提供了简化的应用级接口,从而消除了管理异构硬件和软件环境的复杂性。

让我们详细了解一下如何使用这种新的开发框架来管理 AMP 系统中的异构计算。

兼容性和起源

在为 Mentor 嵌入式多核框架选择合适的 API 时,对开放标准的兼容性以及在 Linux 社区中的应用情况是重要的考量指标。Mentor选用了 Linux 3.4.x 内核以及更新版本中的 remoteproc 和 rpmsg API。Linux remoteproc 和 rpmsg 基础架构最初由 Texas  Instruments 设计开发,并专门用于 Linux 内核。该基础架构允许主处理器上的 Linux 操作系统管理远程处理器上远程软件环境的生命周期和通信。

然而,Linux 提供的基础架构存在一些限制。   首先,Linux rpmsg 隐式地假设 Linux 总是主操作系统,而且不支持将 Linux 作为 AMP 配置中的远程操作系统。 此外,remoteproc 和 rpmsg API 只能从 Linux 内核空间获得,没有可用于其它操作系统和运行时间的等效 API 或库。

Mentor 嵌入式多核框架是一种用 C 语言编写的独立库。它能干净地实现在 RTOS 或裸机软件环境中使用的 remoteproc 和 rpmsg 功能,并具备与 Linux 中对应的 remoteproc 和 rpmsg 的 API 级兼容性和功能对称性。图 1a 显示了 Mentor 嵌入式多核框架的软件栈图及其在 RTOS 或裸机环境中的使用。如图所示,该框架经过抽象的移植层由硬件接口层和操作系统抽象(环境)层构成,让用户能够方便地将框架移植到其它处理器和操作系统。


图 1 – RTOS 和裸机环境中的 Mentor 嵌入式多核框架 (a),以及 Linux 内核中的 remoteproc 和 rpmsg (b)


图 2 – Mentor 多核框架支持的 AMP 配置

图 1b 显示了 Linux 内核中的 remoteproc 和 rpmsg 基础框架。remoteproc 和 rpmsg 内核空间驱动程序为 remoteproc 平台驱动程序和 rpmsg 用户设备驱动程序提供服务。remoteproc 平台驱动程序支持远程生命周期管理;rpmsg 用户设备驱动程序向用户空间应用提供 IPC 服务。

除了能在 AMP 架构中实现 RTOS 和裸机环境与 Linux remoteproc/rpmsg 基础架构的互操作外,Mentor 嵌入式多核框架还提供相应的工作流程和运行时间基础架构,用于将 Linux 进行封装并作为 AMP 配置中的远程操作系统启动。图 2 显示了该框架支持的各种 AMP 配置。

用例与应用

Mentor 嵌入式多核框架非常适合无监督和有监督的 AMP 架构。

无监督的 AMP (uAMP) 架构适用于不需要对参与的操作系统环境进行严格分离的应用。在该架构中,参与的操作系统在系统中的处理器上本地运行。如图 3a 所示,Mentor 嵌入式多核框架提供一种简单有效的基础架构,其中,主(引导)处理器上的主软件环境可以管理生命周期,并将计算任务分配给 SoC 中的其它计算资源。

有监督的非对称多处理 (sAMP) 架构最适合需要对软件环境和系统资源虚拟化进行隔离的应用。在 sAMP 中,参与的客户操作系统运行在客户虚拟机中,而客户虚拟机由管理程序(也称为虚拟机监视程序)进行管理和调度。管理程序为虚拟机提供隔离和虚拟化服务。Mentor 嵌入式多核框架使 sAMP 架构能够管理 SoC 中异构计算资源的计算任务。

如图 3b 所示,该框架有两种应用方式:在客户操作系统环境下,进行无监督的异构计算资源管理;在管理程序中,进行有监督的异构计算资源管理,使管理程序能够监督客户操作系统与远程环境之间的交互。

总之,Mentor 嵌入式多核框架最适合需要将计算功能按照需求分配给多处理芯片中专用内核的应用。对于功率受限的器件,该框架能够根据需要开启和关闭计算资源,实现最佳功率利用率。

该框架还便于将传统的单核嵌入式系统整合到功能更强大的多处理 SoC 上。此外,该框架能够轻松地移植针对单核芯片而开发的传统软件,以便与更新、更强大的多处理芯片上的增强系统功能进行互操作。

最后,该框架还有助于实现容错型系统架构。例如,该框架能支持处理关键系统功能的 RTOS 环境(主机)来管理负责非关键系统功能的 Linux 环境。当 Linux 子系统出故障时,RTOS 可重启故障子系统,而且不会对关键系统功能产生任何不利影响。


图 3 – Mentor 嵌入式多核框架用例,包括 uAMP (a) 和 sAMP (b) 架构

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top