多核处理器将为嵌入式系统带来包括更高的吞吐量、更小的尺寸、重量和功率方面(SWaP)的诸多益处。异构处理器可以将应用程序与每个内核类型的功能匹配,从而进一步提高数据吞吐量和SWaP能力。多核处理器的优势在于软件架构的复杂性增加,以最大限度地利用处理器内核。对于实时系统,特别是安全关键系统,由于处理器核心之间共享资源的争夺,多核处理器对严格确定性提出了重大挑战。随着异构内核的增加,这种挑战会增加,因为最坏的执行时间可能会因应用程序执行的核心而有所不同。
要更详细地探讨如何折衷,本文结合了NXP i.MX 8QuadMax应用处理器异构内核(图1)。i.MX 8QuadMax具有四个Arm Cortex-A53核和两个Cortex-A72核,通过将每个应用程序任务的性能要求与不同内核的性能容量匹配,从而实现功耗优化。与A53核相比,A72核的性能大约提高两倍,但功耗更高。
图1:NXP i.MX 8体系结构
为了实现多核解决方案的数据吞吐量和SWaP优势,软件架构需要支持可用处理器核心的高利用率。必须支持所有多核功能,从启用核心的并发操作(与可用内核强制进入空闲状态或在启动时保持重置)到提供确定性负载平衡机制。软件多处理体系结构越灵活,系统架构师就越需要高效率的工具。
多处理体系结构
与多处理器系统一样,多核处理器的软件体系结构可以根据内核之间的共享和协调来划分。基于多核系统的最简单的软件架构是非对称多处理(AMP),每个核心都可以独立运行,每个内核都有自己的操作系统或虚拟机监控程序及操作系统。每个核心运行不同的应用程序,在调度方面,核心之间很少或没有任何有意义的协调。这种解耦可能导致由于缺乏负载平衡、难以缓解共享资源争用以及无法跨核心执行协调活动(如全面内置测试所需)而导致利用率不足。
现代的AMP替代方案是对称多处理(SMP),其中一个操作系统控制所有资源,包括在哪个内核上运行的应用程序线程。这种架构易于编程,因为所有的内核都“对称”地访问资源,从而释放操作系统将任何线程分配给任何核心。对于具有异构内核的处理器,如i.mx8Quadmax,不知道应用程序将运行哪种类型的内核,可能会导致大量的无效执行时间,这会显著影响确定性性能。
混合多处理(Bound Multi-Processing BMP)直接解决这个问题是一种增强的、受限制的SMP形式,它静态地将应用程序的任务/线程绑定到特定的核心,这种静态绑定允许系统架构师严格控制多个核心的并发操作。
确保确定行为
除了实现多核处理器的吞吐量和SWaP目标外,安全关键系统还需要为每个应用程序保持可预测的最坏情况执行时间(WCET)。使用BMP来限制与应用程序配对的核心类型是确保异构系统中确定行为的一个重要组成部分。确保确定性的其他技术是时间和空间分区以及管理共享资源的争用。
在单核处理器中,多个安全关键型应用程序可以通过在托管应用程序之间可靠地划分内存空间来在同一处理器上执行。内存空间分区将内存的非重叠部分专用于在给定时间运行的每个应用程序,由处理器的内存管理单元(MMU)强制执行。通过使用时间划分,可以进一步增强确定性,即将一个固定的时间间隔(称为主帧)划分为一系列称为分区时间窗的固定子间隔。每个应用程序被分配一个或多个分区时间窗口,窗口的长度和数量由应用程序的WCET(最坏执行时间)和所需的重复率决定。
多核的干扰挑战
在多核环境中,可以有多个应用程序在不同的核心上并发运行。这些并发应用程序都需要访问处理器的资源。每个处理核心都有一些专用资源,但大多数资源在处理器核心之间共享,包括内存控制器、I/O、共享缓存和连接它们的内部结构。当多个处理器同时访问这些资源时,需要尝试并发访问这些资源。在安全关键型应用程序(如航空电子设备)中,主要关注的是这种共享资源争用如何导致运行在一个内核上的应用程序干扰另一个内核上的应用,会对确定性、服务质量以及最终的安全性产生负面影响。
如果不加以缓解,共享资源争用的影响可能会非常显著。只检查其中一个共享资源DDR memory,我们可能会猜测,当另一个内核试图访问相同的内存并且两个内核都在运行内存受限的应用程序时,WCET可能会加倍。实际上,由于共享资源仲裁和调度算法中的非线性行为,WCET可以增加8倍而不是2倍。试图访问DDR内存或争夺其他资源(如片上互连)的额外内核可能会导致WCET的增长更加显著(图2)。
图2:多核干扰的增加比核心数量的增加快。
多核干扰抑制
减轻多核干扰的一种方法是手动调度应用程序,以最小化资源争用。这样的方法并不能消除所有的干扰,任何时候修改或添加新的应用程序时,所有应用程序都需要重新测试和验证。另一种方法是一次只安排一个多任务应用程序运行。任务之间仍然会发生干扰,但不会干扰其他应用程序。这种方法在具有异构内核的处理器上尤其无效,因为不同内核类型上的执行时间不同。
更一般的方法是让操作系统管理共享资源争用。正如操作系统使用硬件MMU通过向不同的应用程序分配不同的内存区域来实现空间分区一样,操作系统可以按每个内核为共享资源分配带宽。解决操作系统中的多核干扰为系统集成商提供了一个有效、灵活的解决方案。它还简化了新应用程序的添加,而无需对系统架构进行重大更改,并减少了重新验证环节。
航空电子设备中异构核心的示例解决方案
NXP i.MX 8QuadMax应用处理器包括四个Arm Cortex-A53内核,共享一个1MB二级缓存,两个Arm Cortex-A72内核共享另一个1MB二级缓存。处理器还包括两个用于卸载系统功能的Cortex-M4F内核和两个能够运行OpenCL、Vulkan和OpenVX的GPU。i.MX 8的一个独特功能是硬件资源分区,系统控制器将外围设备和内存区域提交到客户定义的特定域中。域之间的任何通信都必须使用通过硬件消息传递单元运行的消息传递协议。i.MX 8QuadMax的目标是广泛应用,包括工业人机界面(Human-Machine Interface)和控制、电子驾驶舱、平视显示器、楼宇自动化和单板计算机。
Green Hill's INTEGRITY-178 tuMP多核RTOS是一个统一的操作系统,运行在i.MX 8中的所有64位处理器内核上,并支持AMP、SMP和BMP的同时组合。RTOS的时变统一多处理(tuMP)方法为将安全关键应用程序移植、扩展和优化提供了最大的灵活性。INTEGRITY-178 tuMP使用跨所有核心运行的时间分区内核,该内核允许应用程序绑定到一个或多个核心组(称为关联组 Affinity Groups)。如果需要,可以进一步限制关联组中应用程序的每个任务在特定核心上运行。对于i.MX 8QuadMax处理器,系统架构师可以使用关联组来确保给定应用程序的任务只在Cortex-A72内核上执行,或者只在Cortex-A53内核上执行(图3)。
图3:使用关联组,一个应用程序绑定到两个Cortex-A72核心,而另外两个应用程序绑定到Cortex-A53内核组。
INTEGRITY-178 tuMP直接解决多核干扰问题,包括一个带宽分配和监控(BAM)功能,符合最严格的安全级别。BAM功能监视并强制从每个处理器核心向共享资源分配带宽。BAM模拟了一种基于硬件的高速率方法,以确保对每个核心使用共享资源的连续分配强制执行。BAM在整个应用程序的执行时间窗口中平滑地调节带宽,从而允许在同一执行时间窗口中的其他应用程序获得其分配的共享资源。使用之前的内存访问干扰案例,将50%的内存带宽分配给高关键性应用程序会导致WCET接近恒定,即使干扰核心的数量增加,WCET也会降低8倍(图4)。这种能力有效地减轻了多核干扰,大大降低了集成和认证风险,同时也使集成商能够获得多核处理器的最大性能优势。
图4:使用BAM将50%的共享资源带宽分配给关键应用程序后,WCET几乎不变。
NXP i.MX 8QuadMax为航空电子设备和其他嵌入式实时系统的SWaP提供了一个重要的基础。Cortex-A72和Cortex-A53核心的结合为系统架构师提供了一种强调性能或电源效率以创建最佳系统级解决方案的能力。相应的软件体系结构需要有足够的灵活性和控制能力来充分利用这些异构的应用核心,同时保持严格的确定性。结合使用关联组或其他形式的BMP的能力和多核干扰解决方案(如BAM),可以在安全关键应用中有效地使用i.MX 8QuadMax。