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

    文章

    19155

    浏览量

    229057
  • 嵌入式
    +关注

    关注

    5068

    文章

    19008

    浏览量

    303000
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211097
收藏 人收藏

    评论

    相关推荐

    【「嵌入式Hypervisor:架构、原理与应用」阅读体验】+全文学习心得

    降低了虚拟机之间的耦合性,提高了系统的可靠性和安全性。 在学习过程中,我深刻体会到嵌入式Hypervisor的核心价值在于其灵活性和扩展性。它能够根据实际应用需求,动态地调整资源配置
    发表于 10-09 19:11

    【「嵌入式Hypervisor:架构、原理与应用」阅读体验】+第7-8章学习心得

    据技术的不断发展,嵌入式设备将越来越普及,对嵌入式Hypervisor的需求也将不断增加。未来,嵌入式Hypervisor将更加注重实时性、安全性和
    发表于 10-09 18:50

    【「嵌入式Hypervisor:架构、原理与应用」阅读体验】+第一二章读后感

    Hypervisor的重要性和应用场景有了更深入的认识。我认为,嵌入式Hypervisor作为一种前沿的虚拟技术,在优化有限资源、实现异构操作系统安全隔离等方面具有广泛的应用前景。 此外,这两章的内容也让
    发表于 10-09 18:22

    嵌入式Hypervisor:架构、原理与应用 阅读体验 +Hypervisor基础概念

    解决嵌入式系统资源有限但应用场景日益复杂的难题。单核处理器计算性能的提高和多核处理器的引入为嵌入式Hypervisor的发展提供了硬件基础。与此同时,处理器芯片供应商对CPU虚拟
    的头像 发表于 10-08 15:08 395次阅读
    <b class='flag-5'>嵌入式</b>Hypervisor:架构、原理与应用 阅读体验 +Hypervisor基础概念

    EsDA,一站嵌入式软件

    ,旨在提高嵌入式软件开发的效率、性能和扩展性。EsDA全称是嵌入式系统设计自动,它是一个由AWorksLP、AWStudio、AXPI、
    的头像 发表于 09-15 08:10 223次阅读
    EsDA,一站<b class='flag-5'>式</b><b class='flag-5'>嵌入式</b>软件

    嵌入式系统的未来趋势有哪些?

    会更加模块和集成化,允许更容易的硬件和软件的切换和升级。这会提高系统的可维护性和扩展性,会使得系统能够适应不断在变化的应用需求。 5. 生态可持续性与环保材料 在嵌入式系统的设计以
    发表于 09-12 15:42

    C28x嵌入式应用程序二进制接口

    电子发烧友网站提供《C28x嵌入式应用程序二进制接口.pdf》资料免费下载
    发表于 08-31 09:39 0次下载
    C28x<b class='flag-5'>嵌入式</b><b class='flag-5'>应用程序</b>二进制接口

    MSP430嵌入式应用程序二进制接口

    电子发烧友网站提供《MSP430嵌入式应用程序二进制接口.pdf》资料免费下载
    发表于 08-30 11:43 0次下载
    MSP430<b class='flag-5'>嵌入式</b><b class='flag-5'>应用程序</b>二进制接口

    嵌入式系统中的实时操作系统

    嵌入式RTOS是嵌入式应用程序运行、相互交互和与外界通信的底层软件机制。在本节中,您将了解嵌入式软件开发人员使用哪些流行RTOS以及它们运行的嵌入式
    的头像 发表于 08-20 11:28 439次阅读

    一文解析嵌入式多核异构方案,东胜物联RK3588多核异构核心板系列一览

    嵌入式人工智能快速发展,对于高性能计算需求越来越大。为了解决性能与功耗的平衡、通过并行加速计算等,越来越多地嵌入式处理器使用同构多核、异构多核
    的头像 发表于 06-17 15:45 1861次阅读
    一文解析<b class='flag-5'>嵌入式</b><b class='flag-5'>多核</b>异构方案,东胜物联RK3588<b class='flag-5'>多核</b>异构核心板系列一览

    微内核实时操作系统的介绍

    微内核实时操作系统(Microkernel Real-Time Operating System, μRTOS)是一种专为实时设计的操作系统。它采用微内核架构,以提高系统的可靠性、安全性和
    的头像 发表于 05-11 17:13 466次阅读

    再谈嵌入式实时操作系统

    由于嵌入式处理器早期功能单一且运算能力不高,嵌入式应用已不能满足各个领域不断增长的需求。嵌入式操作系统应运而生,嵌入式操作系统可以支持新时代
    的头像 发表于 04-09 17:27 739次阅读
    再谈<b class='flag-5'>嵌入式</b><b class='flag-5'>实时</b>操作系统

    嵌入式软件设计的原则分享

    嵌入式软件开发如果具有更好的阅读性、扩展性以及维护性,就需要考虑很多因素。今天给大家分享几个嵌入式软件设计的原则。
    发表于 02-25 10:54 641次阅读
    <b class='flag-5'>嵌入式</b>软件设计的原则分享

    分布大屏控制系统的扩展性设计

    分布大屏控制系统的扩展性设计是确保系统能够适应不断增长的需求和未来发展的关键因素。以下是扩展性设计的几个方面: 模块
    的头像 发表于 01-29 14:46 534次阅读

    如何规划嵌入式软件架构

    。如果预见未来没有扩展重大新业务的需求,那么相应的软件架构就没有必要采用高扩展的软件架构。比如嵌入式的传感器数据采集小设备,就没有必要把云计算等,业务范围不沾边的技术点放到其中。软件
    的头像 发表于 12-07 15:29 536次阅读