当今的多核片上系统(SoC)硬件有望提供比以往更多的打包到您的嵌入式项目中。设计人员不再需要将软件域分离到单独的设备中。同一设备内的多核处理集群可以降低材料清单(BOM)成本,并通过更紧密的域集成来帮助缩短设计时间。
但是,对于更复杂的系统,系统架构师和软件设计师的任务仍然是正确配置应用程序域,使重要数据保持独立和安全以及有效地管理整个系统的通信方式。在此过程的早期应该做出一个关键决定:什么是最适合您的多核系统的域管理器?是否需要管理程序,还是多核框架是更好的解决方案?
多核系统
在多核SoC中,促进项目的功能分段会导致将设计配置为非对称多处理(AMP)系统。AMP系统可以由核心体系结构的任意组合构成。所有核心可能都是相同的(均质的),或者可能存在丰富的核心类型混合,其中包括常规处理单元以及专用核心;例如,(异构)数字信号处理器(DSP)。
每个内核在带有或不带有操作系统的AMP架构中独立执行。此外,可以根据所需功能选择每个内核的操作系统。
AMP设计面临着独特的挑战:
核心间通信功能很可能是必需的。
可能存在安全/安全问题,要求内核之间必须相互保护。
引导顺序(每个核心上的软件启动的顺序)对于避免同步和安全性问题可能很重要。
调试潜在异构内核上运行的不同工作负载可能会非常具有挑战性。
尽管AMP系统中的核心是独立的,但这些挑战表明必须有一些总体控制工具。大致有两种选择:
系统管理程序:在所有内核上运行的复杂软件组件。
多核框架:一种软件组件,允许在每个核上运行的AMP系统。
应当注意,可以使用支持对称多处理(SMP)的操作系统来实现多核应用程序。但是,该方法不允许在不同的内核上执行独立的工作负载,并且不支持异构内核。
管理程序
虚拟机管理程序是一个相当复杂的通用软件组件,可提供对多个操作系统的监视功能,可管理CPU访问,外围设备访问,OS间通信和OS间安全性。系统管理程序可以通过多种方式使用。例如,可以在单个CPU上运行多个操作系统,以保护对旧版软件的投资。但是,随着多核处理器的增长,这种情况越来越少。
或者,可以在AMP设计的嵌入式应用程序中使用虚拟机管理程序,其中需要对内核间通信进行监视并需要将外围设备分配给特定内核。系统管理程序还可以照顾启动顺序并管理共享的外围设备访问。
使用管理程序的主要优势之一是,如果操作系统“崩溃”,它将不会影响其他内核上工作负载的执行。在某些情况下,系统管理程序甚至可以重新引导该操作系统,而无需重新引导设备。当然,最好使用专门为嵌入式应用程序设计的虚拟机管理程序以获得更好的性能。
尽管有可能开发一种能够在软件中启用所有必需的分离和虚拟化功能的虚拟机管理程序,但如今这已相当困难且不寻常。如今,管理程序已设计为使用大多数多核处理器上存在的基础虚拟化功能。
系统管理程序的优缺点
与其他解决方案相比,虚拟机管理程序具有优点和缺点。
优点
高度的灵活性可实现虚拟机(VM)之间的有效资源共享,动态资源使用,低延迟和高带宽通信
强大的内核间分离
启用设备虚拟化和共享
能够将外围设备的所有权分配给特定的内核
缺点
仅在同一个多核设备上工作(即,所有核都相同)
大量代码占用
一些执行开销
需要在处理器中启用硬件虚拟化
多核框架
由于它们的分离,管理和共享功能,虚拟机管理程序具有的功能远远超过许多嵌入式设计所需的功能,而且它们可能会过大。为了解决此问题,一些嵌入式运行时供应商开发了一种专门设计用于支持AMP多核系统的替代方案:多核框架。
框架经过专门设计以支持多核应用程序,仅提供关键功能:引导顺序控制和内核间通信。结果是框架可以以较低的开销加载系统,并且可以在更多基本系统上运行。尽管AMP设计中的每个内核都可能运行一个操作系统,但一个或多个内核可能是“裸机”,即根本不运行任何操作系统。多核框架可以适应这种可能性。
处理器间通信(IPC)
一旦远程处理器OS和应用程序堆栈运行,许多用例将需要与系统其他部分进行通信。Mentor嵌入式多核框架提供了一个称为rpmsg的远程处理器消息传递框架功能的无尘室实现,可在主操作系统和远程操作系统之间建立通信通道。这样,可以在处理器间通信通道中在两者之间来回传递数据。
同时支持远程处理器生命周期管理和处理器间通信的传输层是VirtIO。VirtIO是针对虚拟化Linux环境中广泛采用的高性能输入/输出设备驱动程序的虚拟化标准。
远程处理器生命周期管理
假设对远程处理器进行控制,然后启动或停止该远程处理器中的OS和/或应用程序堆栈,则称为远程处理器(remoteproc)生命周期管理。Linux社区采用了一种远程处理器框架来管理这种情况。Remoteproc允许主操作系统在其他内核上启动其他操作系统。
Mentor嵌入式多核框架中的remoteproc功能使Mentor嵌入式Linux,Nucleus RTOS和Bare Metal Environments(BME)与其他供应商的Linux和RTOS产品之间具有远程处理器互操作性。远程处理器生命周期管理的主要优势是降低了功耗。当不使用时,远程核心保持低功耗状态。只有在使用remoteproc启动远程核心并部署必要的固件之后,远程核心才会消耗任何显着的功率。
多核框架的优缺点
与其他解决方案相比,多核框架具有优缺点。
优点
为某些应用程序提供最低要求的功能
适度的内存占用
最小的执行时间开销
可以在异构多核设备上工作(即,所有核不必相同)
支持裸机应用
缺点
核心工作负载不是相互隔离的
可能更难以控制启动顺序和调试
OpenAMP
尽管某些多核框架是专有的,但已经提出了一些规范其功能,接口等的标准。OpenAMP是此类标准的一个流行示例。
OpenAMP有两个关键功能:
使用remoteproc进行生命周期管理。这有助于控制启动顺序等。
使用RPMsg的内核间通信。
GitHub上提供了OpenAMP标准的当前参考实现。Mentor嵌入式多核框架(MEMF)和Mentor嵌入式多核框架Cert是OpenAMP标准的专有实现。该标准的扩展包括其他功能,以作为远程支持Linux,大缓冲区,零复制,对以太网的代理支持以及其他开发工具(图1)。
1. Mentor嵌入式管理程序是OpenAMP标准的专有实现。
混合安全关键系统
混合安全关键系统是要求在单个SoC上执行具有不同安全完整性级别(SIL)或不同关键性(例如安全性关键和非安全性关键)的多个应用程序的系统。系统管理程序和多核框架都可以支持这种类型的配置。
虚拟机管理程序通过对虚拟机管理程序本身进行认证来做到这一点。 然后,虚拟机可以具有通过认证的虚拟机管理程序运行的不同关键级别。分离由认证的管理程序提供,该管理程序通常使用SoC上的基础硬件虚拟化和分离功能。
多核框架利用某些SoC架构提供的其他硬件辅助分离功能来在安全域和非安全域之间获得所需的分离。这包括处理块,存储块,外围设备和系统功能的分离。 多核框架提供了增强的边界检查,以确保共享内存数据结构的完整性。它还提供中断限制和轮询模式,以防止中断泛洪。甚至有可能使用经过非安全认证的虚拟机管理程序以及支持混合关键性的多核框架(图2)。
2.多核框架可以提供增强的边界检查,以确保共享内存数据结构的完整性,从而允许非安全认证的虚拟机管理程序与启用了关键性的混合多核框架一起工作。
结论
决定使用虚拟机管理程序或多核框架或两者来控制和管理多核系统是一项关键的体系结构决策。最终选择将取决于特定的应用程序要求和设备的用例。这些选项应被视为补充解决方案,可以释放多核SoC的功能,实现对各个项目领域的管理,并最终允许设计人员专注于其项目的独特IP。