0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式虚拟化支持多核实时应用程序的可扩展性

星星科技指导员 来源:嵌入式计算设计 作者:Kim Hartman 2022-06-21 10:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式虚拟化对 OEM 有几个积极的影响。例如,一旦有一种方法可以拆分应用程序以在多个内核上运行同时保持确定性,该解决方案随后可以使实时应用程序能够向上或向下扩展它们使用的内核数量。借助可扩展性,OEM 可以为其产品提供一系列性价比选项,而无需更改软件。

虚拟化在计算机科学中并不是一个新概念,但随着多核处理器的出现,它引起了新的兴趣。尽管虚拟化被认为是保持多个处理器内核忙碌的一种方式,但需要注意的是,大多数类型的服务器或客户端虚拟化并非旨在满足时间关键型嵌入式处理的需求。这些虚拟化方法通常以相同的方式对待多核芯片上的所有处理器。在这些系统中,单个操作系统 (OS) 在处理器可用时将任务分配给处理器,以试图使所有处理器尽可能地负载处理任务。

服务器和客户端虚拟化通常会虚拟化所有硬件,包括 I/O 接口。当 I/O 接口需要服务时,虚拟机监视器 (VMM) 会处理请求并将结果传递给它所支持的操作系统客户端。没有办法确保在属于该客户端的 I/O 需要服务时加载特定的 OS 客户端,也没有一种全局方法可以将特定 I/O 与客户端 OS 和在其上运行的应用程序相关联。因此,无法准确保证处理 I/O 事件需要多少时间。因此,这种方法不适用于处理嵌入式系统中的实时处理。

嵌入式系统设计人员希望直接控制系统以获得确定性和一致的性能。虽然需要平衡整体处理器利用率并保持多核处理器尽可能繁忙,但这并不是首要任务。首先,嵌入式设计人员正在寻找能够帮助他们在增加功能和/或降低 OEM 产品成本的同时保持确定性的软件技术。

嵌入式设计人员正在寻找一种软件平台,使他们能够组合不同类型的操作系统,以便针对手头的任务优化处理——例如,处理关键 I/O 时序要求的实时操作系统和通用操作系统( GPOS) 来利用 COTS 图形丰富的应用程序,这些应用程序运行人为导向的功能。他们还在寻找扩展应用程序的解决方案,以便他们可以使用相同的应用程序代码库提供不同的产品。这降低了工程开发成本,缩短了上市时间,更重要的是,使新产品能够基于经过验证的软件,这些软件可以在性能和可靠性方面不断升级。

嵌入式虚拟化保留了确定性

为了使嵌入式应用程序具有确定性,它必须从开发项目的一开始就进行设计。确定性不是可以在最后添加的东西。必须特别考虑以确保应用程序线程可以直接控制它们所依赖的 I/O 接口。

图 1 显示了一个拾放装配系统,其中 TenAsys 的 Windows 实时操作系统 (RTOS) 托管在四核处理器的三个内核上,而人机界面 (HMI) 托管在第四个内核上。运行 Microsoft Windows 的核心。运行在不同 CPU 上的实时任务在需要时通过全局对象网络进行通信。该自动化装配系统包括三个实时子系统:引导装配机器人的视觉系统、多轴机器人以及将组件索引到装配位置然后运出装配单元的材料运输系统。开发和调试此类应用程序以确保每个组件按要求可靠运行的理想方法是将应用程序拆分为单独的组件。

图 1:嵌入式系统可以节省成本并保持实时响应能力,同时通过在多核处理器上托管多个操作系统来添加功能。

pYYBAGKxLUSAPzFwAAcaGvDUllA842.png

例如,HMI 将是一个单独的应用程序模块,可以在 Windows 等非实时环境中运行。这需要一个可以划分平台资源的操作系统环境——I/O、内存、中断和 CPU 内核(在多核处理器平台的情况下)——以允许应用程序模块完全独立地运行。嵌入式虚拟化环境支持这一点,允许不同的实时任务在特定的处理器内核上运行。操作软件对物理 I/O 接口进行分区,以便来自设备之一的中断仅中断处理该设备的处理器。这确保了处理实时事件的可预测响应时间。

多核芯片上的多个操作系统环境的托管由称为嵌入式虚拟化管理器的软件或包含在 RTOS 中的特殊嵌入式虚拟化功能进行管理。

嵌入式虚拟化可以以不同的方式实现,具体取决于处理器提供的硬件虚拟化支持量。半虚拟化解决方案使用软件技术来修改客户操作系统,允许它们并肩工作,而不会相互影响或损害系统的实时响应能力。实现提供了不同程度的平台分区,并且通常仅限于在一个平台上一次运行两个操作系统——一个 RTOS 和一个 GPOS。一些实现已经发展到 GPOS 不需要任何修改并且很容易支持最新版本的 GPOS 的地步。当将 GPOS 耦合到 RTOS 的目的是按原样使用传统 RTOS 应用软件时,这是一个真正的优势,无需任何修改,

多年来,其中一些实现已经过优化,可为特定的操作系统组合提供最佳性能。这样做的缺点是每个实现都特定于特定的操作系统组合,提供通用虚拟化解决方案以支持多种操作系统组合是一种不切实际的方法。

最近推出的 VT(由 Intel 处理器支持)等硬件辅助虚拟化功能通过提供内置于处理器中的硬件辅助,消除了半虚拟化的一些软件复杂性。通过使用硬件虚拟化支持,可以构建 VMM 以在不了解客户操作系统的情况下运行。因此,VMM 可以支持针对该平台的任何操作系统。

英特尔处理器特性,如 VT-x(VT 特性的一个子集)确保客户操作系统发出的任何内存地址都自动映射到物理内存中的适当地址位置。同样,称为 VT-d 的硬件辅助虚拟化功能自动映射总线主控 DMA 设备的 I/O 内存访问,使作为来宾 RTOS 应用程序一部分的本机 I/O 驱动程序无需修改即可在虚拟化环境中使用。这些硬件辅助功能大大降低了 VMM 的复杂性,并使嵌入式虚拟化成为更可行的解决方案。

使可伸缩性在实时应用程序中发挥作用

虽然嵌入式虚拟化为将实时应用程序拆分为单独的独立操作组件提供了理想的环境,但拆分应用程序需要一种机制来支持进程间通信 (IPC)。

过去,设计人员经常在应用子系统之间建立以太网链路,并使用 TCP/IP 堆栈在子系统之间进行通信,但这种方法繁琐、速度慢,有时不可靠,并且给系统的行为增加了不确定性,影响了确定性。

更好的 IPC 方法是使用称为全局对象网络的概念。 全局对象网络提供了一个具有内置启动和发现服务的托管通信环境,使应用程序能够在加载时动态分布在一个或多个 CPU 上。自动找到需要其他进程服务的进程,并且本地管理器记录它们的位置以跟踪已建立的 IPC 链接。如果通信链路或目标进程发生故障,管理器会通知启动进程。此外,当启动过程不再需要 IPC 链接时,本地管理器通过清除所有记录来保持系统清洁。由于全局对象网络与操作系统集成,其开销很低,并且不需要应用程序开发人员创建任何自定义软件。

操作系统管理全局对象的位置和存在,进程通过这些对象传递信息以确保系统的完整性。例如,一个进程在多个处理器上使用的对象是“保持活动状态”的,只有在所有进程都终止时才会被删除。这需要底层管理基础架构来确保不会过早删除对象,或者不会因为未使用资源清理不当而导致内存泄漏。同样,如果一个处理节点在其进程终止之前发生故障,管理器需要通知所有其他处理节点上的全局对象管理器它们应该清除对故障节点上对象的任何本地引用。

GOBSnet 通信示例

图 2 显示了图 1 所示系统的软件架构的高度简化视图。除了 RTOS 和实时过程软件,Cores 0-2 还运行 INtime GOBS manager 软件,其功能是管理全局对象通信。(GOBSnet 是 TenAsys 的全球对象网络,由公司的 INtime Distributed RTOS 和 INtime for Windows RTOS 支持。)

图 2: GOBSnet 促进了在不同处理器内核上运行的实时进程之间的通信。

poYBAGKxLU2AMl8BAAX9vtS0lPw407.png

使用 GOBSnet,一个内核上的进程可以使用全局内存对象与另一个内核上的另一个进程通信。启动进程,图 2 中的“进程 1”,创建内存对象并将其编入该内核的根进程中。完成此操作后,运行在其他处理节点上的进程可以找到内存对象,从而为所有进程提供高效的共享内存接口。这同样适用于 IPC 使用的所有对象范围(包括信号量和邮箱)。

第二步是让其他进程定位内存对象并获取其内存位置。这是通过指定处理器名称来开始搜索来完成的。当进程找到对象时,它将其位置、类型和参数存储在处理器节点的 GOBS 管理器中的引用对象中,并保留该引用对象的句柄。从那时起,当远程进程(本例中的进程 2 或进程 3)想要写入或读取内存对象时,它会使用引用对象的句柄来检索适当的内存对象信息以访问它。

当进程 2 或进程 3 终止其节点的 GOBS 管理器时,该管理器会清除有关远程内存对象的所有引用对象信息。当进程 1 终止时,它会删除它创建的所有对象,包括内存对象。如果这不是最佳操作,则可以选择使用计数器创建内存对象。每当另一个进程连接到内存对象时,计数器就会增加,而每当这些关联的进程之一终止时,计数器就会减少。结果是内存对象仅在与其连接的所有进程都终止时才被删除。这允许远程进程进程 2 和进程 3 可以继续通过内存对象传递信息的情况,即使启动进程进程 1 已经终止。

无论实时应用程序分布在同一多核芯片上的 CPU 之间,还是网络在一起的不同微处理器组件上的不同 CPU 内核之间,都可以使用 GOBSnet 通信。通过围绕这种灵活的系统软件架构设计系统,嵌入式系统开发人员有足够的空间来提高其产品的处理能力或相应地缩小其处理能力,以应对未来的挑战。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    20154

    浏览量

    247423
  • 嵌入式
    +关注

    关注

    5186

    文章

    20166

    浏览量

    329097
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11223

    浏览量

    223015
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    什么是嵌入式操作系统?

    RT-Thread)还集成了设备驱动框架,支持 SPI、I2C、UART 等外设的标准调用,和 HAL 库配合更高效。 四、嵌入式 OS 的典型特征(判断一个 OS 是否适合嵌入式
    发表于 12-09 10:33

    嵌入式软件分层架构设计原则

    嵌入式软件分层架构的设计原则如下: 模块扩展性:每一层应当保持松耦合,这样当硬件变化或某些功能扩展时,只需要修改对应的层次,而不影响整
    发表于 11-28 07:05

    嵌入式实时操作系统的特点

    操作系统具备高效的中断处理机制,能够快速响应和处理系统的中断事件。 资源管理:实时嵌入式操作系统提供有效的资源管理机制,包括内存管理、设备驱动程序、文件系统和网络协议等,以支持
    发表于 11-13 06:30

    如何评估电能质量在线监测装置的扩展性

    评估电能质量在线监测装置的扩展性,需围绕 “ 硬件扩展、软件升级、协议兼容、场景适配 ”
    的头像 发表于 10-22 16:35 390次阅读

    嵌入式工程师为什么要学QT?

    Qt对嵌入式工程师来说,真的很重要吗? Qt是一个跨平台的C++应用程序开发框架,非常适合嵌入式系统的开发,Qt在嵌入式开发中具有很重要的作用。 在项目实践中可以看出,Qt在工业自动
    发表于 08-14 15:15

    RISC-V 虚拟堆栈和硬件的最新进展

    RISC-V 虚拟是其突破现有应用边界、进入更广泛场景(尤其是高性能计算、云计算、服务器及复杂嵌入式领域)的关键能力。比如,在嵌入式实时
    发表于 07-18 16:00 3676次阅读

    一文读懂:嵌入式Linux实时性进阶

    在工业控制、机器人、汽车电子等关键领域,嵌入式系统对实时性要求极高。 Linux作为强大的通用操作系统,其原生实时性能难以满足最严苛的硬实时需求。为突破这一限制,PREEMPT_R
    发表于 07-10 15:26

    嵌入式软件开发常用的软件有哪些?

    源代码编辑器。这个软件支持语法高亮,代码自动补全,代码重构,查看定义功能,并且内置了命令行工具和Git版本控制系统。用户可以更改主题和键盘快捷方式实现个性设置。也可以通过内置的扩展程序
    发表于 07-03 17:06

    Linux嵌入式和单片机嵌入式的区别?

    较高,需要较大的内存和存储空间来运行Linux系统和应用程序。 5. 扩展性 : 单片机嵌入式扩展性有限,通常只能通过增加外设来
    发表于 06-20 09:46

    瑞萨电子RA系列微控制器的扩展性强的配置软件包 (FSP)安装下载与使用指南

    瑞萨电子RA系列微控制器的扩展性强的配置软件包 (FSP)安装下载与使用指南
    的头像 发表于 06-11 17:21 1400次阅读

    飞凌嵌入式ElfBoard ELF 1板卡-Regmap的优势

    的读写操作,没有提供寄存器缓存功能。 四、扩展性:Regmap 提供了一个模块的框架,可以轻松扩展支持更多的通信接口和寄存器映射类型。这
    发表于 05-22 10:39

    瑞芯微RK3288解决方案:高性能、高扩展性嵌入式系统设计理念与应用分析

    。本文将深入剖析基于RK3288的处理方案,重点阐述其在硬件架构、软件平台、扩展性设计以及应用场景等方面的优势,并探讨其所蕴含的嵌入式系统设计理念。一、RK328
    的头像 发表于 05-08 15:39 862次阅读
    瑞芯微RK3288解决方案:高性能、高<b class='flag-5'>扩展性</b>的<b class='flag-5'>嵌入式</b>系统设计理念与应用分析

    IAR推动嵌入式开发:云就绪、扩展的CI/CD和持续自动

    IAR正式发布全新云就绪平台,为嵌入式开发团队提供企业级的扩展性、安全性和自动能力。
    的头像 发表于 04-07 11:21 492次阅读

    FPGA+GPU+CPU国产人工智能平台

    平台采用国产FPGA+GPU+CPU构建嵌入式多核异构智算终端,形成FPGA+GPU、FPGA+CPU、CPU+FPGA等组合模式,形成低功耗、高
    的头像 发表于 01-07 16:42 1766次阅读
    FPGA+GPU+CPU国产<b class='flag-5'>化</b>人工智能平台

    扩展您的Chart FX应用程序:标准升级适应更多领域

    扩展性基础设施标准升级后,将会带来更好的集成体验和更轻松的Chart FX扩展部署。这些Chart FX扩展是.NET程序集,允许Char
    的头像 发表于 12-31 09:42 657次阅读
    <b class='flag-5'>扩展</b>您的Chart FX<b class='flag-5'>应用程序</b>:标准<b class='flag-5'>化</b>升级适应更多领域