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

news2024/12/23 13:32:58

混合关键性系统技术【同构异构】【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 正式发布

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【RuoYi】框架中使用wangdietor富文本编辑器

一、前言 在上篇博客中,介绍了RuoYi中如何实现文件的上传与下载,那么这篇博客讲一下如何在RuoYi中使用富文本编辑器,这部分的内容是向B站程序员青戈学习的,当然我这里就会把学到的内容做一个总结,当然也会说…

Java基础语法---集合---ArrayList

ArrayList是什么 ArrayList可以看作是一个动态数组,提供了自动扩容的能力,意味着它能够根据需要自动调整其大小以容纳更多的元素,而无需预先指定数组的容量。 使用ArrayList需要加入包 import java.util.ArryList ArrayList与普通数组的不同…

【C++】─篇文章带你熟练掌握 map 与 set 的使用

目录 一、关联式容器二、键值对三、pair3.1 pair的常用接口说明3.1.1 [无参构造函数](https://legacy.cplusplus.com/reference/utility/pair/pair/)3.1.2 [有参构造函数 / 拷贝构造函数](https://legacy.cplusplus.com/reference/utility/pair/pair/)3.1.3 [有参构造函数](htt…

bootstrap5-学习笔记1-容器+布局+按钮+工具

参考: Bootstrap5 教程 | 菜鸟教程 https://www.runoob.com/bootstrap5/bootstrap5-tutorial.html Spacing Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 https://v5.bootcss.com/docs/utilities/spacing/ 之前用bootstrap2和3比较多,最近用到了5&a…

【FAS】《Liveness Detection on Face Anti-spoofing》

文章目录 原文总结与评价CNN-RNN vs 三维卷积作者的方法 原文 [1]欧阳文汉.反人脸图像欺诈的活体识别方法研究[D].浙江大学,2020.DOI:10.27461/d.cnki.gzjdx.2020.002675. 总结与评价 时序运动信息与传统的空间纹理信息相结合 基于相位平移的运动放大算法不错 视觉大小细胞…

每日一题《leetcode--LCR 029.循环有序列表的插入》

https://leetcode.cn/problems/4ueAj6/ 这道题整体上想插入数据有三种情况: 1、整个列表是空列表,需要返回插入的结点 2、整个列表只有一个结点,需要在头结点后插入新结点,随机把新结点的next指向头结点 3、整个列表的结点 >1 …

关于飞速(FS)800G光模块的技术问答

随着云计算、物联网(IoT)和大数据等技术的快速发展,对网络带宽和传输速率的需求越来越大。飞速(FS)800G光模块的引入旨在满足对高速数据传输的需求,该光模块采用先进的调制解调技术和高密度光电子元件&…

STM32F103VE和STM32F407VE的引脚布局

STM32F103VE vs STM32F407VE 引脚对比表 引脚 STM32F103VE STM32F407VE 备注 1 VSS VSS 地 2 VDD VDD 电源 3 VSSA VSSA 模拟地 4 VDDA VDDA 模拟电源 5 OSC_IN OSC_IN 外部时钟输入 6 OSC_OUT OSC_OUT 外部时钟输出 7 NRST NRST 复位 8 PC13 (GPIO) PC13 (GPIO) GPIO 9 PC14 (…

鸿蒙全栈开发-一文读懂鸿蒙同模块不同模块下的UIAbility跳转详解

前言 根据第三方机构Counterpoint数据,截至2023年三季度末,HarmonyOS在中国智能手机操作系统的市场份额已经提升至13%。短短四年的时间,HarmonyOS就成长为仅次于安卓、苹果iOS的全球第三大操作系统。 因此,对于鸿蒙生态建设而言&a…

依赖注入方式和自动加载原理

依赖注入 Spring提供了依赖注入的功能,方便我们管理和使用各种Bean,常见的方式有: 字段注入(Autowired 或 Resource)构造函数注入set方法注入 在以往代码中,我们经常利用Spring提供的Autowired注解来实现…

C语言操作UTF-8编码和GBK编码的文件的示例

一、基本介绍 在C语言中,处理文件编码(如UTF-8或GBK)时,需要注意C标准库中的文件操作函数(如fopen, fread, fwrite, fclose等)并不直接支持Unicode或特定字符集的编码。这些函数通常处理字节流&#xff0c…

FreeRTOS基础(十一):消息队列

本文将详细全方位的讲解FreeRTOS的消息队列,其实在FreeRTOS中消息队列的重要性也不言而喻,与FreeRTOS任务调度同等重要,因为后面的各种信号量基本都是基于消息队列的。 目录 一、消息队列的简介 1.1 产生的原因 1.2 消息队列的解决办法 …

防病毒克星——白名单可信系统

白名单作为一种网络安全措施,其核心概念在于限制用户只能访问网络所有者定义的受信任内容。这种机制在保护系统免受恶意软件、病毒等攻击方面发挥着重要作用。然而,关于白名单是否可以防病毒的问题,实际上涉及了多个方面的考虑。 首先&#x…

B=2W,奈奎斯特极限定理详解

一直没搞明白奈奎斯特极限定理的含义,网上搜了很久也没得到答案。最近深思几天后,终于有了点心得。顺便吐槽一下,csdn的提问栏目,有很多人用chatgpt秒回这个事,实在是解决不了问题,有时候人的问题大多数都是…

台式机安装Windows 11和Ubuntu 22双系统引导问题

一、基本情况 1.1、硬件情况 电脑有2个NVMe固态硬盘,1个SATA固态硬盘,1个机械硬盘。其中一个NVMe固态硬盘是Windows系统盘,另一个NVMe固态为Windows软件和文件盘,SATA固态硬盘为Ubuntu专用,机械硬盘为数据备份盘。 …

Java | Leetcode Java题解之第136题只出现一次的数字

题目: 题解: class Solution {public int singleNumber(int[] nums) {int single 0;for (int num : nums) {single ^ num;}return single;} }

Ubuntu下安装和配置Redis

目录 1、更新软件包 2、安装Redis 3、启动 Redis临时服务 4、测试Redis服务 5、配置redis服务 6、Redis服务控制命令 1、更新软件包 执行sudo apt-get update更新软件包 sudo apt-get update2、安装Redis 执行sudo apt-get install redis-server 安装命令 sudo apt i…

CLion配置

下载环境:MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net 解压后找一个位置存放,一般放在和ide同一目录,方便查找 个人习惯配置调整: 项目创建 修改ide解码形式 项目右下角一般默认是utf8 文件编码改…

【C++题解】1074 - 小青蛙回来了

问题:1074 - 小青蛙回来了 类型:需要找规律的循环 题目描述: 关于小青蛙爬井的故事,你应该早就听过了:井深10 尺,小青蛙从井底向上爬,每个白天向上爬 3 尺,每个晚上又滑下来 2 尺&…

kafka安装流程

安装kafka前需要安装zookeeper zookeeper安装教程 1.新建一个logs文件夹 2.修改配置文件 3.修改listeners参数 4.以管理员身份启动kafka服务 .\bin\windows\kafka-server-start.bat .\config\server.properties 如果报 输入行太长。 命令语法不正确。 解决方案如下&#x…