混合关键性系统技术【同构异构】【SMP、AMP、BMP】【嵌入式虚拟化】

混合关键性系统技术【同构异构】【SMP、AMP、BMP】【嵌入式虚拟化】

  • 1 介绍
    • 1.1 概述
      • openEuler Embedded 的运行模式
      • openEuler Embedded 混合关键性系统技术架构
      • UniProton
    • 1.2 同构异构区别 【硬件侧】
    • 1.3 系统架构【SMP、AMP、BMP】
      • 多核处理器平台的系统架构 【软件侧】【SMP、AMP、BMP】
      • 对称多处理架构
      • 非对称多处理架构(AMP)
      • SMP在实时系统潜在的问题
      • 非对称多处理器AMP的特点
    • 1.4 虚拟化
      • 基础
      • 虚拟机监视器(Hypervisor)
      • 虚拟化原因
      • 嵌入式虚拟机监视器需求
  • 2 OpenAMP
    • 概述
    • 部署方案
  • 3 示例
    • 工业自动化中的集成
    • 多核SoC中应用的概念分配
    • 嵌入式实时虚拟机ZVM【湖大嵌入式实验室 2 openEuler】
    • 海思工业硬实时通用MPU板级方案
  • 4 如何在虚拟机管理程序和多核框架之间进行选择
    • 以下是四个具体的 AMP 设计挑战
    • 虚拟机管理程序
    • 多核框架
      • 处理器间通信
      • 远程处理器生命周期管理
      • 多核框架——优点和缺点
  • 参考

1 介绍

1.1 概述

现代系统级芯片(SoC)正变得越来越复杂和多样化。一方面,这表明了将许多嵌入式系统功能整合到一个硬件中的趋势,另一方面,这也反映了对安全性和安全性要求的增加。

除了同质解决方案(即相同架构的多核CPU,例如x86),越来越多的异构多核CPU正在进入(嵌入式)市场。

在多核处理器上可以采用 虚拟机管理(如 QNX Hypervisor)、多核框架(如 OpenAMP)、虚拟机管理+多核框架组合策略。

openEuler Embedded 的运行模式

在这里插入图片描述
在不同模式下,openEuler Embedded始终是中心,提供富功能、富管理、富生态

openEuler Embedded 混合关键性系统技术架构

在这里插入图片描述
openEuler 24.03 LTS Embedded 版本:

  • 支持 5.10 和 6.6 双内核,嵌入式弹性底座 Jailhouse、openAMP 裸金属混合等部署方案。在嵌入式弹性底座之上打造了混合关键性部署框架 MICA,对下屏蔽不同底座的差异,对上为不同运行时提供统一的接口。
  • openEuler 24.03 LTS 嵌入式版本已经支持 600+软件包,包括支持 ROS humble 版本,满足 ROS2 运行时要求;支持 BMC 生态,包括 openBMC 等。
  • 硬件支持上新增飞腾、海思、瑞萨、德州仪器、全志等硬件的支持,提出了面向开发者的硬件开发板概念“Euler Pi”,并联合伙伴推出了一款 openEuler Embedded 原生开发板“HiEuler Pi”原型机系统。
  • 基础设施层面,正式发布 openEuler Embedded 元工具 oebuild,新增支持 LLVM 工具链构建 BSP 镜像,相对 GCC 工具链,可以获得在性能、体积、安全性等诸多方面的改进。

UniProton

在这里插入图片描述

1.2 同构异构区别 【硬件侧】

  • 同构
    所有的CPU的核心架构都一样,那么称为同构。例如,瑞芯微RK3568、飞思卡尔的I.MX6D,它们有两个或者以上架构相同的 ARM Cortex-A 核都属于同构。

  • 异构
    CPU核心架构有不一样的,就称为异构。例如 ST的 STM32MP157(两个 ARM Cortex-A7 + ARM Cortex-M4),TI的达芬奇平台DM6000系列(ARM9 + DSP)、Xilinx的Zynq7000系列(双核Cortex-A9 + FPGA)

1.3 系统架构【SMP、AMP、BMP】

多核处理器平台的系统架构 【软件侧】【SMP、AMP、BMP】

SMP(Symmetric MultiProcessing,对称多处理)架构
AMP(Asymmetric Multi-Processing,非对称多处理)架构
BMP(bound multi-processing,绑定多处理)架构

模型工作原理主要优势
非对称多处理(AMP)一个单独的操作系统,或相同操作系统的单独副本,管理每个核心。为每个软件进程提供类似于单处理器系统的执行环境,允许简单的遗留代码迁移。此外,允许开发者独立地管理每个核心。- 允许简单迁移遗留代码。- 开发者可以独立管理每个核心。- 每个软件进程锁定到单个核心(例如,进程A仅在核心1上运行,进程B仅在核心2上运行等)。
对称多处理(SMP)单个操作系统同时管理所有处理器核心。相比AMP,提供更大的可扩展性和并行性,以及更简单的共享资源管理。- 提供比AMP更大的可扩展性和并行性。- 操作系统可以动态地在任何核心上安排任何进程,实现所有核心的充分利用。
绑定多处理(BMP)单个操作系统同时管理所有核心。结合了AMP的开发者控制和SMP的透明资源管理。与SMP一样,操作系统可以动态地在任何核心上安排进程。但是,开发者也可以将任何进程(及其所有相关线程)锁定到特定核心。- 结合了AMP的开发者控制和SMP的透明资源管理。- 允许将线程锁定到任何核心,简化了遗留代码的迁移。- 允许设计者将特定操作专用于特定核心。

对称多处理架构

SMP结构下一个OS负责协调两个处理器,两个处理器共享内存,每个核运行的应用程序(APP1和APP2),通过MMU(内存管理单元)把它们映射到主存的不同物理位置上。
在这里插入图片描述

非对称多处理架构(AMP)

在这里插入图片描述

SMP在实时系统潜在的问题

  • 无法预测单个进程的执行顺序。
  • 无法预测哪个CPU 核执行哪个进程。
  • 对于某些进程,可能无法保证实时行为。
  • 如果从现有的单处理器设计移植到多处理器,可能会出现同步或互斥问题。
  • 业界已开发绑定多处理(BMP)以最大程度地减少此类问题。

非对称多处理器AMP的特点

  • 每个CPU内核执行专门的任务,操作与单处理器设计完全相同。
  • 系统的行为和可预测性与单处理器设计相似。
  • 如果软件针对特定类型的硬件设计,在非对称多处理器上使用异构AMP。
  • 在需要混合使用操作系统和/或调度方法的场景,在对称多处理器上使用同构AMP。
  • 所有方法都应提高性能为目标。
  • 安全是另外一个被考虑的因素。

1.4 虚拟化

嵌入式虚拟机化,能让多个系统同时在芯片上运行,利用实时系统和非实时系统的特性,来更好的实现软件功能。该技术知名的供应商有 QNX、Wind River VxWorks 等。
在这里插入图片描述
在这里插入图片描述

基础

虚拟化:创建某物的虚拟版本的行为,包括虚拟计算机硬件平台、存储设备和计算机网络资源。它允许在一个或多个处理器上部署多个操作系统和独立的工作负载。

虚拟机监视器(Hypervisor)

创建和运行虚拟机的计算机软件、固件或硬件。

虚拟化原因

  • 操作系统/工作负载整合
  • 降低系统成本
  • 降低功耗
  • 提高资源利用率

嵌入式虚拟机监视器需求

  • 短启动时间
  • 实时性
  • 低的、确定性的中断请求(IRQ)延迟
  • 实时调度器
  • 静态CPU分区
  • 设备虚拟化:设备分配、设备共享、驱动域
  • 安全性、隔离和分区:内存、设备、CPU、系统级配置寄存器(SLCRs)
  • 操作系统支持:Linux、裸机、其他实时操作系统(RTOS)支持
  • 认证:小型代码库

2 OpenAMP

概述

非对称多处理(AMP)。嵌入式异构硬件平台的数量急剧增加,以满足当今电子设备的多样化需求。这些需求从支持实时行为到提供丰富的用户界面(UI),因此需要具有不同能力的CPU来最佳地处理手头的任务。在软件方面,这是通过整合适合系统中CPU能力的不同的软件环境来实现的。不同的软件环境协同工作以提供所需的功能。这种合作通常涉及软件环境之间的通信启用以及系统资源的管理。开发此类系统需要AMP软件架构。

OpenAMP项目的一个重要组成部分是OpenAMP库,openAMP 框架可以与远程处理器上的实时操作系统(RTOS)或裸机(bare metal)环境结合使用,通过 remoteproc 和 RPMsg 组件与运行在主处理器上的 Linux 应用程序(在内核空间或用户空间)或其他基于 RTOS/裸机的应用程序进行通信。该架构可用于数据密集型应用。库的核心构建块是Remoteproc和RPMsg。它们分别提供资源管理和通信功能。

RPMsg 和 Remoteproc 基础设施最初由德州仪器(TI)构想并提交到Linux内核。该框架允许主处理器上的Linux操作系统管理远程处理器上的远程软件环境的生命周期并与之通信。

  • 使用 remoteproc 进行生命周期管理以便于控制启动顺序等
  • 使用 RPMsg 进行核心间通信。

在这里插入图片描述

部署方案

在这里插入图片描述
在这里插入图片描述

3 示例

工业自动化中的集成

在这里插入图片描述

多核SoC中应用的概念分配

  • OpenAMP for messaging

在这里插入图片描述
在这里插入图片描述

嵌入式实时虚拟机ZVM【湖大嵌入式实验室 2 openEuler】

嵌入式实时虚拟机ZVM(Zephyr-based Virtual Machine)是由湖南大学嵌入式与网络计算湖南省重点实验室(以下简称"湖大嵌入式实验室")主任谢国琪教授主导设计并开发的虚拟化软件。该软件基于实时操作系统(RTOS)Zephyr开发,可同时启动Linux与Zephyr 2个Guest OS,从而在同一硬件平台上实现混合内核部署。

2023年2月,湖大嵌入式实验室正式将该项目开源至openEuler社区。
在这里插入图片描述

海思工业硬实时通用MPU板级方案

在这里插入图片描述

4 如何在虚拟机管理程序和多核框架之间进行选择

以下是四个具体的 AMP 设计挑战

  • 该设计很可能需要核心间通信。
  • 出于安全和保障问题考虑,可能需要对核心进行相互保护。
  • 启动顺序(每个核心上的软件启动的顺序)需要避免同步和安全问题。
  • 调试通常在异构核心上运行的不同工作负载会带来一些问题。

AMP 系统中的核心是独立的,但这些挑战需要一些整体控制设施。有两种选择:

  • 虚拟机管理程序:在所有核心上运行的复杂软件组件;
  • 多核框架:使 AMP 系统能够在每个核心上运行的软件组件。

虚拟机管理程序

优点:

  • 极大的灵活性,实现虚拟机之间高效的资源共享、动态资源使用、低延迟和高带宽通信;
  • 强大的核心间分离;
  • 实现设备虚拟化和共享;
  • 将外围设备的所有权分配给特定核心。

缺点:

  • 仅适用于同质多核设备(即,所有核心都相同);
  • 大量的代码占用空间;
  • 一些执行开销;
  • 需要处理器支持硬件虚拟化

多核框架

由于虚拟机管理程序具有分离、管理和共享功能,因此它提供的功能超出了许多嵌入式设计的需求,它们可能有些过度。因此,一些嵌入式运行时供应商开发了一种专门为支持 AMP 多核系统而设计的替代方案:多核框架。

框架专门为支持多核应用而设计,仅提供关键功能:启动顺序控制和内核间通信。框架以更低的开销加载系统,并可在更基本的系统上运行。尽管 AMP 设计中的每个内核可能都运行一个操作系统,但一个或多个内核可能是裸机(即根本不运行操作系统)。多核框架可以适应这种可能性。

处理器间通信

一旦远程处理器操作系统和应用程序堆栈开始运行,许多用例将需要与系统的其他部分进行通信。Mentor嵌入式多核框架(MEMF) 提供了远程处理器消息传递框架功能 (RPMsg) 的洁净室实现,该功能在主操作系统和远程操作系统之间建立了通信通道。因此,数据可以在处理器间通信 (IPC) 通道中在两者之间来回传递。

支持远程处理器生命周期管理和 IPC 的传输层是 VirtIO,它是虚拟化 Linux 环境中广泛采用的高性能输入/输出设备驱动程序的虚拟化标准。

远程处理器生命周期管理

控制远程处理器,然后启动或停止该远程处理器内的操作系统和/或应用程序堆栈,这被称为远程处理器 (remoteproc) 生命周期管理。Linux 社区已采用一个框架来管理这种情况。Remoteproc 允许主操作系统在其他核心上启动其他操作系统。

Mentor Embedded Multicore Framework 中的 remoteproc 功能允许 Mentor Embedded Linux、Nucleus RTOS 和裸机环境 (BME) 以及其他供应商的 Linux 和 RTOS 产品之间实现远程处理器互操作性。remoteproc 生命周期管理的一个主要优点是它可以降低功耗。远程核心在不使用时保持低功耗状态。只有在使用 remoteproc 启动远程核心并部署必要的固件后,远程核心才会消耗任何明显的电量。

多核框架——优点和缺点

优点:

  • 为某些应用程序提供最低限度所需的功能;
  • 内存占用适中;
  • 最小的执行时间开销;
  • 可在异构多核设备上工作(即,所有核心不需要相同);
  • 支持裸机应用程序。

缺点:

  • 核心工作负载彼此之间并非隔离的;
  • 更难控制启动顺序;
  • 调试起来更加困难。

参考

1、Multi-Core_Hypervisor
2、Heterogeneous Real-Time SoC Software Architecture
3、Hypervisors in Embedded Systems
4、Study and Implementation of Modular Software Architectures based on Hypervisors for Automotive Electronic Control Units
5、OpenAMP Framework
6、西门子数字工业软件嵌入式平台–如何在虚拟机管理程序和多核框架之间进行选择
7、Enabling the Full Power of a Multiprocessor SoC
8、Linaro BKK 2019 Evensen Keynote v1
9、Leveraging OpenAmp in Embedded Mixed-Safety Critical Systems
10、何小庆文章
11、何小庆–多核处理器与实时操作系统- 概述、原理和应用实例
12、Running AMP, SMP or BMP Mode for Multicore Embedded Systems QNX Software Systems
13、多核处理器与MP架构
14、openEuler开源新项目,嵌入式实时虚拟机ZVM介绍 | 湖大嵌入式实验室
15、海思工业硬实时通用MPU板级方案
16、OpenEuler–实时内核UniProton及其混合关键性部署的实践
17、四大升级!助力首个 AI 原生开源操作系统 openEuler 24.03 LTS 正式发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/688831.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

inflight 守恒和带宽资源守恒的有效性

接着昨天的问题&#xff0c;inflight 守恒的模型一定存在稳定点吗&#xff1f;并不是。如果相互抑制强度大于自我抑制强度&#xff0c;系统也会跑飞&#xff1a; 模拟结果如下&#xff1a; 所以一定要记得 a < b。 比对前两个图和后两个图的 a&#xff0c;b 参数关系&am…

Docker镜像加载原理(Union文件系统)

联合文件系统 Union文件系统&#xff0c;是一种轻量级的分层高性能服务系统&#xff0c;支持对文件系统的修改来进行一层一层的叠加&#xff0c;同时将不同目录挂载到同一个虚拟文件系统中&#xff0c;Union文件系统是Docker镜像的基础&#xff0c;通过分层来进行集成&am…

代驾公司在市场竞争中如何保持优势?

在竞争激烈的市场中&#xff0c;代驾公司可以通过多种策略保持其竞争优势&#xff0c;包括利用市场潜力、创新服务模式、提高服务效率以及加强品牌建设等。以下是具体的策略&#xff1a; 利用市场潜力 汽车产业空间巨大&#xff1a;随着汽车保有量的增加&#xff0c;代驾行业…

【ARFoundation自学04】AR Tracked Image 图像追踪识别

图像识别是很常用的AR功能&#xff01;AR foundation 可以帮助我们轻松实现&#xff01; 1.安装插件 首先还是在资源包中导入ARfoundation 。然后搭建基本的AR ARFoundation框架&#xff01; 2.创建AR session 和XR origin结构&#xff01; 3.然后在XR Origin 物体身上添加A…

继承-进阶

父子类成员共享 普通成员对象/父子间不共享&#xff0c; 成员独立 函数成员共享&#xff08;函数不存储在对象中&#xff09; 子类由两部分构成&#xff1a;父类中继承的成员和子类中新定义成员 继承方式 子类中存在父类private成员但不可直接访问&#xff08;及时在类中&am…

Istio_1.17.8安装

项目背景 按照istio官网的命令一路安装下来&#xff0c;安装好的istio版本为目前的最新版本&#xff0c;1.22.0。而我的k8s集群的版本并不支持istio_1.22的版本&#xff0c;导致ingress-gate网关安装不上&#xff0c;再仔细查看istio的发布文档&#xff0c;如果用istio_1.22版本…

链表题目练习----重排链表

这道题会联系到前面写的一篇文章----快慢指针相关经典问题。 重排链表 指针法 这道题乍一看&#xff0c;好像有点难处理&#xff0c;但如果仔细观察就会发现&#xff0c;这道题是查找中间节点反转链表链表的合并问题&#xff0c;具体细节有些不同&#xff0c;这个在反装中间链…

Linux守护进程揭秘-无声无息运行在后台

在Linux系统中&#xff0c;有一些特殊的进程悄无声息地运行在后台&#xff0c;如同坚实的基石支撑着整个系统的运转。它们就是众所周知的守护进程(Daemon)。本文将为你揭开守护进程的神秘面纱&#xff0c;探讨它们的本质特征、创建过程&#xff0c;以及如何重定向它们的输入输出…

有待挖掘的金矿:大模型的幻觉之境

人工智能正在迅速变得无处不在&#xff0c;在科学和学术研究中&#xff0c;自回归的大型语言模型&#xff08;LLM&#xff09;走在了前列。自从LLM的概念被整合到自然语言处理&#xff08;NLP&#xff09;的讨论中以来&#xff0c;LLM中的幻觉现象一直被广泛视为一个显著的社会…

记录汇川:红绿灯与HMI-ST

项目要求&#xff1a; 子程序&#xff1a; 子程序&#xff1a; 实际动作如下&#xff1a; 红绿灯与HMI-ST

电赛报告书写

一、总体要求 &#xff08;1&#xff09;摘要&#xff1a;一页&#xff0c;小于300字 &#xff08;2&#xff09;正文&#xff1a;不超过8页 &#xff08;3&#xff09;附录&#xff1a;可以没有&#xff0c;但是不能超过2页 二、摘要书写 摘要要小于等于300字&#xff0c…

牛客java基础(一)

A 解析 : java源程序只允许一个public类存在 &#xff0c;且与文件名同名 ; D hashCode方法本质就是一个哈希函数&#xff0c;这是Object类的作者说明的。Object类的作者在注释的最后一段的括号中写道&#xff1a;将对象的地址值映射为integer类型的哈希值。但hashCode()并不…

【Text2SQL 论文】C3:使用 ChatGPT 实现 zero-shot Text2SQL

论文&#xff1a;C3: Zero-shot Text-to-SQL with ChatGPT ⭐⭐⭐⭐ arXiv:2307.07306&#xff0c;浙大 Code&#xff1a;C3SQL | GitHub 一、论文速读 使用 ChatGPT 来解决 Text2SQL 任务时&#xff0c;few-shots ICL 的 setting 需要输入大量的 tokens&#xff0c;这有点昂贵…

【C语言】05.数组

一、数组的概念 本文来介绍数组&#xff0c;首先我们需要了解数组是什么&#xff1f; 数组是⼀组相同类型元素的集合。 • 数组中存放的是1个或者多个数据&#xff0c;但是数组元素个数不能为0。 • 数组中存放的多个数据&#xff0c;类型是相同的。 数组分为⼀维数组和多维数组…

自用的2个chatpgt plus拼车渠道!!!

两个渠道&#xff0c;银河和环球&#xff0c;各有优劣 由于平台限制&#xff0c;链接和优惠码&#xff0c;可看原文 原文&#xff1a;https://www.aiutools.fun/archives/4978 先说结论 gpt重度用户&#xff1a;一天50次以上&#xff0c;选 环球 gpt轻度用户&#xff1a;一天用…

有关大学的搜题软件?六个不限次的公众号和软件分享啦 #其他#职场发展

有些同学虽然喜欢刷题&#xff0c;但是如果参考答案遗失、找不到参考答案&#xff0c;导致做好的题目无法校对&#xff0c;就会比较烦恼了。不过不用担心&#xff0c;今天就给大家分享一些超好用的搜题工具 1.彩虹搜题 这是个老公众号了 它不仅可以查到大学题目&#xff0c;…

Unity3D入门基础知识汇总

1. unity界面 右上边可以切换布局。 左边选择Shaded wireframe&#xff0c;可以看到3D物体的都是由三角形组成的。 2. 物体显示 网格&#xff08;三角形构成&#xff09; 材质 3. 资源商店 Windows -> Asset Store 挑出喜欢的资源之后&#xff0c;点击”添加至我的…

Qwen-VL论文阅读

论文地址 其他同学的详细讲解 模型结构和参数大小 &#xff08;1&#xff09;LLM&#xff1a;Qwen-7B &#xff08;2&#xff09;Vision Encoder&#xff1a;ViT架构&#xff0c;初始化参数是 Openclip’s ViT-bigG。 在训练和推理过程中&#xff0c;输入的图像都被调整到…

git(其六)--总结

配置基础信息 //1.配置用户名和邮箱 git config --global user.name "带着引号写一个昵称" git config --global user.email "带着引号写一个邮箱"//2.建立一个git本地库 git init//3.查看本地内容 git status //可以看到那些处于待加入本地库的文件&a…

​​​​​​ 基于Nmap的异步无状态端口扫描技术

​​​​​​ 基于Nmap的异步无状态端口扫描技术 传统的端口扫描&#xff0c;主要是依靠TCP三次握手去连接&#xff0c;而建立连接的各个过程都存在连接状态&#xff0c;这些状态由操作系统在底层实现存储&#xff0c;可利用这些状态对应用层的数据进行处理。但是&#xff0c;…