嵌入式开发:通过嵌入式虚
嵌入式虚拟化为实现多核处理能力的优势提供了一种可扩展的机制。嵌入式应用中的虚拟化与其企业和桌面应用有许多共同之处。独特的嵌入式使用案例和专业的底层技术为嵌入式开发人员提供了优化性能和响应设计的新机会。
在台式机、数据中心以及现在的嵌入式设计中采用多核技术可以满足类似的需求——在不提高系统时钟的情况下扩展计算能力,并为下一代设备和应用实现更高的每瓦MIPS。
台式机和数据中心的主流多核需要部署的操作系统(OS)提供对称多处理(SMP)支持。Linux内核支持SMP已经快十年了,支持SMP的Windows和Mac OS版本如今也在广泛使用。
相比之下,在嵌入式开发中,嵌入式操作系统正试图赶上支持多核CPU。即使操作系统越来越擅长在多核环境中运行,应用程序和中间件仍然面临线程安全、并发性和负载平衡的挑战。
虚拟化软件架构
为了解决这些挑战,出现了不同的虚拟化策略,从类型I和类型II开始,如图1所示。在第一类虚拟化中,虚拟机管理程序“拥有”CPU,并负责引导和运行客户操作系统。I型平台是“精益的”, 我的意思是,“成熟,从大型机和小型机的几代发展中出现,现在是移动设备。相比之下,VMware Fusion、Parallels和Sun VirtualBox等平台提供的第二类虚拟化侧重于最终用户体验,虚拟机管理程序作为应用程序在另一个操作系统上运行,没有性能保证。

嵌入式虚拟化遵循自己的范例。在路由器、交换机和网关等基础设施应用中,用例类似于企业。I类虚拟机管理程序托管Linux或实时操作系统(RTOS)的实例,以在冗余高可用性架构中的单个硬件或虚拟备件上支持虚拟设备(防火墙、深度包检查器和其他设备)。
在移动设备中,原始设备制造商使用裸机虚拟化来整合多个CPU,以便在单个CPU上运行基带、多媒体和应用堆栈以及各种操作系统(一个或多个虚拟机中运行Android或Linux,另一个虚拟机中运行RTOS ),从而节省材料成本。
走向多核
在嵌入式开发中,除了硬件整合之外,虚拟化还提供了一种在单个处理器的多个内核之间分配现有负载的良好机制。嵌入式操作系统架构师倾向于将多核芯片视为离散CPU的集合。大多数传统RTOS多核支持反映了这一观点,要求操作系统和堆栈的唯一副本在独立的内核上以准合作方式运行。
随着RTOS供应商开始创造他们产品的多核版本,他们经常使用多核芯片中内核负载的静态映射。一些嵌入式虚拟化平台需要静态分配虚拟机管理程序及其托管和运行的负载
物理芯片到虚拟化负载的静态映射效率低下,无法提供虚拟化带来的优势。在嵌入式开发中,更有效的方法是为每个操作系统配置一个虚拟CPU,该虚拟CPU可以映射到单个CPU(一对一),共享一个CPU(多对一),或者分布在多个内核上(一对多)。
负载平衡
今天的联网设备——手机、机顶盒、车载系统、网络设备和几乎任何类型的智能设备——都是应用程序平台,其负载像台式计算机、数据中心刀片和服务器一样复杂多样。多核CPU承诺现代嵌入式软件的高吞吐量和敏捷响应,但预测负载和内核利用率超过了集成不同来源软件的过程,特别是来自应用商店的软件。
虚拟化为嵌入式开发人员和集成商提供了优化设备性能的额外工具。嵌入式管理程序可以监控客户操作系统和主机策略软件的负载,从而相应地分配CPU周期和其他资源。

多核电源管理
多核系统可能会给针对单核系统优化的电源管理方案带来巨大挑战。特别是,许多多核片上系统(SOC)对动态电压和频率缩放(DVFS)的范围和能力有限制:
l SoC子系统和多核CPU通常共享电源电压、时钟、缓存和其他资源,这意味着DVFS适用于所有内核。
l 一个SoC子系统上的缩放电压(如果可能)会限制通过本地总线与其他子系统的通信,并拒绝访问共享内存,包括子系统自己的DRAM。
l 单个SoC子系统的时钟缩放限制了互操作性,尤其是对于同步总线。
l 有些操作完全使用内核或根本不使用内核,但其他操作会施加不同的负载。全有或全无的使用很容易管理,但多核上的动态负载会带来更大的电源管理挑战。
现在添加多个操作系统。在嵌入式开发中,高级操作系统通常包括DVFS电源管理,如Linux高级电源管理和动态电源管理,以及Windows/BIOS高级配置和电源接口。大多数RTOS避免限制实时响应的操作,当它们提供明确的电源管理API时,如vxLib的vxPowerDown(),它们缺乏电源管理策略。即使一个操作系统能够管理其自身域中的电源,它也不会意识到同一系统中其他操作系统的能力和状态。
DVFS通过降低电压和时钟频率来提高能效。支持DVFS的CPU在固定的电压和频率下提供安全的工作点。
DVFS的逻辑扩展是将电压降至0 VDC,并通过仅利用两个操作点(全停和全节流)停止CPU时钟,这两个操作点适用于所有可用内核。这个巧妙的技巧只有在虚拟CPU(参见图3和图4)的情况下才有可能将负载映射到物理芯片,并在CPU内核之间透明地迁移运行负载。关闭整个内核比DVFS更容易管理,并导致线性的、高度可预测的性能-能量权衡。

多核基带
随着高带宽4G网络(尤其是LTE)的出现,移动设备需要将更多处理能力用于无线数据通信。在嵌入式开发中,为了通过更高的并发性来提高吞吐量,新出现的需求要求将整个内核专用于4G I/O操作。这一要求使得无线芯片组厂商和传统的RTOS供应商争先恐后地为SMP操作重组基带操作系统和软件堆栈。
更简单的解决方案是使用移动/嵌入式虚拟化来提高4G吞吐量。虚拟机管理程序可以根据需要将可用内核映射到输入或输出操作,并缩减映射以支持其他CPU密集型操作或执行每内核电源管理,而不是将两个、四个或更多内核专用于基带处理。
只有虚拟化可以扩展
多核软件设计比看起来更复杂也更简单。系统架构师应该抵制诱惑,不要将传统软件元素大规模分配给下一代嵌入式芯片上的可用内核。
处理器路线图表明可用处理器内核将进一步倍增:如今嵌入式CPU的内核数将增加2倍,很快将增加4倍、8倍甚至更多。这种芯片过剩将很快超过供应和管理多核软件负载的静态方法。
在嵌入式开发中,只有嵌入式/移动虚拟化能够提供可扩展且灵活的机制来实现多核处理能力的优势,并简化系统设计、集成和部署,同时使这些系统更加可靠和安全。
相关文章:
嵌入式开发:通过嵌入式虚
嵌入式虚拟化为实现多核处理能力的优势提供了一种可扩展的机制。嵌入式应用中的虚拟化与其企业和桌面应用有许多共同之处。独特的嵌入式使用案例和专业的底层技术为嵌入式开发人员提供了优化性能和响应设计的新机会。在台式机、数据中心以及现在的嵌入式设计中采用多核技术可以…...
广州穗雅医院杨济安:了解症状表现 有效防治口腔黏膜下纤维化
“医生,我出现口干大半年时间,最近两月张嘴费劲,吃点辣的,嘴就刺疼刺疼的,这是怎么回事?”半年前,家住南沙的文先生走进广州穗雅医院口腔黏膜科如是说到。在科室杨济安主任的详细问诊与检查后&a…...
[数据分析] 数据指标体系搭建
在数据分析的学习过程中,我们通常会要求掌握以下两点: 1.理解数据,懂得从数据中发现业务指标(学会如何去看懂数据) 2.使用相关指标去分析数据,同时使用多个指标去分析一个问题(了解常见的指标) 当我们拿到数据(通常以Excel或者数据库方式去…...
Dubbo 源码分析 – 集群容错之 Cluster
3.2.2 FailbackClusterInvoker FailbackClusterInvoker 会在调用失败后,返回一个空结果给服务提供者。并通过定时任务对失败的调用进行重传,适合执行消息通知等操作。下面来看一下它的实现逻辑。 public class FailbackClusterInvoker<T> extend…...
Spring学习20230208-09
IOC底层原理 IOC概念 :面向对象编程中的一种设计原则,用来降低耦合度 通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象引用传递给他。可以说,依赖被注入到对象中。控制反转&…...
tomcat10部署报错WebStatFilter cannot be cast to jakarta.servlet.Filter
异常信息09-Feb-2023 23:08:49.946 严重 [main] org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常[DruidWebStatFilter]java.lang.ClassCastException: com.alibaba.druid.support.http.WebStatFilter cannot be cast to jakarta.servlet.Filterat org.ap…...
Linux修改文件时间或创建新文件:touch
每个文件在Linux下面都记录了许多的时间参数,其实是三个主要的变动时间 修改时间(modification time,mtime):当该文件的【内容数据】变更时,就会更新这个时间,内容数据是指文件的内容ÿ…...
原生微信小程序按需引入vant
vant Vant Weapp - 轻量、可靠的小程序 UI 组件库 1.npm安装 找到项目根目录 安装 # 通过 npm 安装 npm i vant/weapp -S --production# 通过 yarn 安装 yarn add vant/weapp --production# 安装 0.x 版本 npm i vant-weapp -S --production 2 .修改 app.json 将 app.jso…...
高性能IO模型:为什么单线程Redis能那么快?
我们通常说Redis是单线程,主要是指Redis的网络IO和键值对读写是由一个线程来完成的。这也是Redis对外提供键值存储服务的主要流程。 但redis的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。 Redis为什么用单线…...
【数据集】中国各类水文专业常用数据集合集
1 水文气象数据 1.1 中国站点尺度天然径流量估算数据集(1961~2018年) 论文: J2022-High-quality reconstruction of China’s natural streamflow-缪驰远(北京师范大学地理科学学部) 研究内容:…...
落枕、肩颈酸痛,用磁疗就可缓解!
睡觉之前还是好好的,一觉醒来脖子莫名疼痛,转都转不了,有时候连肩膀和上肢都难受,很可能是“落枕”了。 落枕引起的肩颈疼痛与多种因素有关,如颈肩部肌肉的过度使用、不良的睡眠姿势或颈肩部受寒湿空气的侵袭ÿ…...
一文教会你如何选择远程桌面(五大主流远程软件全面讲解)
写在前面 作为程序员的我们,随时随地写代码改代码是我们的日常。刚回到家,就被老板、产品经理cue是常有的事。基于这种情况,一般都会随身携带电脑,随时备战,不过每天背着电脑上下班非常不方便。因此资深程序员的解决方…...
【yolov5】yolov5训练自己的数据集全流程----包含本人设计的快速数据处理脚本
关于yolo应用时能用到的脚本集合,推荐收藏: https://chenlinwei.blog.csdn.net/article/details/127299428 1. 工程化快速yolo训练流程指定版(无讲解) 1.1 抽样数据集xml转txt输出量化分析 python make_dataset.pymake_dataset…...
leaflet 加载CSV数据,显示图形(代码示例046)
第046个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载CSV文件,将图形显示在地图上。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其他来练习 文章目录 示例效果配置方式示例源代码(共74…...
百趣代谢组学资讯:槟榔的基因组为雌雄同株植物的性别决定提供见解
文章标题:The genome of Areca catechu provides insights into sex determination of monoecious plants 发表期刊:New Phytologist 影响因子:10.323 作者单位:海南大学 百趣生物提供服务:植物激素高通量靶标定…...
SSO单点登录 - 多系统,单一位置登录,实现多系统同时登录 学习笔记
(1)单点登录 多系统的前提下,单一位置的登录,会实现多系统同时登录的一种技术。 常出现在互联网应用和企业级平台中 如:京东 单点登录一般是用于互相授信的系统,实现单一位置登录,全系统有效的。 注意:…...
图解LeetCode——剑指 Offer 32 - III. 从上到下打印二叉树 III
一、题目 请实现一个函数按照之字形顺序打印二叉树,即:第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 二、示例 2.1> 示例1 提示: …...
【快排与归并排序算法】
作者:指针不指南吗 专栏:算法篇 🐾或许会很慢,但是不可以停下🐾 文章目录一、快速排序 ( Quick Sort )二、归并排序 ( Merge Sort )总结一、快速排序 ( Quick Sort ) 1.思路 找出一个分界点,随机的调整区间…...
面试官问我:说说你对JMM内存模型的理解?为什么需要JMM?
点个关注,必回关 随着CPU和内存的发展速度差异的问题,导致CPU的速度远快于内存,所以现在的CPU加入了高速 缓存,高速缓存一般可以分为L1、L2、L3三级缓存。基于上面的例子我们知道了这导致了缓存一致 性的问题,所以加入…...
工程管理系统源码之提高工程项目管理软件的效率
高效的工程项目管理软件不仅能够提高效率还应可以帮你节省成本提升利润 在工程行业中,管理不畅以及不良的项目执行,往往会导致项目延期、成本上升、回款拖后,最终导致项目整体盈利下降。企企管理云业财一体化的项目管理系统,确保…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...
