多核系统,虚拟机管理程序和多核框架

文章作者:Colin Walls

在多核嵌入式系统上开发软件是一项复杂的工作。重要的是要了解其中的一些选项——相对简单和完全灵活之间的权衡。

多核嵌入式系统的软件可能非常复杂。一个经常讨论的主题是如何在每个核心上实现代码,以使其得到最佳利用。在这篇简短的文章中,有一个不同的视角:关注可以跨多个核心运行的软件。

多核硬件架构

从硬件的角度来看,广泛的两种类型的多核设备:均匀多核,其中有多个核心,所有相同类型和异构多核,其中核心是不同的类型。异构装置可以包括一些相同的核心。

要跨多个核心运行单个软件,核心必须是相同的(无论如何,从指令集的角度来看)。因此,需要一个同质多核设备或异构设备中的同质“岛”。

对称多处理

构建多核系统的一个原因是以一种节能的方式最大化计算能力。这是个人电脑设计师所采用的方法;多核处理器在笔记本电脑和台式机系统中几乎无处不在。嵌入式开发人员可能有相同的目标。最好的方法是使用支持对称多处理(SMP)的操作系统。

SMP操作系统将进程分布在可用的核上。这通常是自动的,但是嵌入式开发人员可能需要进行一些控制,可能需要将某些应用程序锁定到特定的核心上。进程并不“知道”它们运行在不同的核上;操作系统提供它们之间的通信和同步。SMP版本的几个实时操作系统(RTOSes)是可用的;Linux还有一个SMP版本。

虚拟机监控程序

尽管嵌入式SMP OS提供了某种程度的控制,但嵌入式开发人员通常希望确保资源的分配完全按照他们的喜好进行配置。因此,另一种选择是用自己的操作系统实例配置每个内核—并且所有的内核不需要运行相同操作系统和应用程序代码。然后,在所有能够控制其操作(引导顺序等)的核心上运行一个hypervisor,并提供内核间(或os间)通信。

为了更多的灵活性…

到目前为止,我们通过从系统中的单个(SMP)操作系统迁移到多个(可能是不同的)操作系统实例,增加了灵活性。但是,如果需要更多的灵活性,需要使用不同架构的核心,那该怎么办?这消除了跨多核运行代码的选项——SMP操作系统或管理程序都需要同质的多核环境。然而,还有另一种选择:在每个内核上运行一个多核框架(可能是基于OpenAMP的产品)。这种方法提供了核心间通信和生命周期管理。此外,在“裸金属”(即没有操作系统)上运行应用程序的选项也变得可用。

结论

在多核嵌入式系统上开发软件是一项复杂的工作。重要的是要了解其中的一些选项——相对简单和完全灵活之间的权衡。

- Colin Walls是Mentor公司的嵌入式软件技术专家

留下你的评论