嵌入式开发:通过嵌入式虚
嵌入式虚拟化为实现多核处理能力的优势提供了一种可扩展的机制。嵌入式应用中的虚拟化与其企业和桌面应用有许多共同之处。独特的嵌入式使用案例和专业的底层技术为嵌入式开发人员提供了优化性能和响应设计的新机会。
在台式机、数据中心以及现在的嵌入式设计中采用多核技术可以满足类似的需求——在不提高系统时钟的情况下扩展计算能力,并为下一代设备和应用实现更高的每瓦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三级缓存。基于上面的例子我们知道了这导致了缓存一致 性的问题,所以加入…...
工程管理系统源码之提高工程项目管理软件的效率
高效的工程项目管理软件不仅能够提高效率还应可以帮你节省成本提升利润 在工程行业中,管理不畅以及不良的项目执行,往往会导致项目延期、成本上升、回款拖后,最终导致项目整体盈利下降。企企管理云业财一体化的项目管理系统,确保…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...