合并是嵌入式领域长期存在的一个趋势,它使得性能更优良的嵌入式设备采用更少的元器件,从而降低了成本及功耗预算。这一趋势的最新进展是在单个封装内提供多个处理器内核的多内核嵌入式微处理器的增加,而且与同等的单内核处理器相比具有低功耗和低成本的优点。
使用多处理器内核要求软、硬件团队之间进行更多的系统级设计合作。基于这种理念,下面是对采用当前开发工具和硬件直接实现多内核系统的三个简单模型的概述。这些多内核设计模式不是一个为了严格定义一个系统的刚性模型,而是针对思考和探讨关于系统实现宏伟蓝图的初始点,以及规定了一套通用术语以便软、硬件团队都能设计出一个多内核系统结构。
三种设计模式
1. 平面模式
第一种模式是平面模式(Planar Pattern),这个名称源于划分一个通信系统的处理任务的“控制平面”和“数据平面”。它是一个广泛的和不同类型的多内核设计实例,这种多内核设计统称为非对称多处理技术(简称“AMP”或“ASMP”)。
如果采用平面模式,系统需要划分成具有显著不同处理要求的多个自包含模块。在其标准的通信和媒体处理形式中,该模式的优点是在一个专用的DSP或网络处理器上运行需要进行大量数据处理的算法,同时在一个通用的CPU上保持其它系统软件的正常运行。这种特殊性意味着平面模式系统通常在专门构件的硬件上实现。由于许多平面硬件设备仅有一个通用CPU内核,因此传统的单内核工具、操作系统和设计方法都可用来设计和调试系统的通用部分。
2. 片上栅格模式
片上栅格(Grid-on-Chip,或简称“栅格”)模式是平面模式的演绎,包含由许多完全独立的和网络互连的节点组成的任意多处理器系统。栅格是办公计算机网络的片上版本,它是共享相邻物理链路但彼此独立的许多网络处理节点。一些文献将该类型系统称之为分布式多处理系统,且仍将其归类到AMP/ASMP系统总类别当中。
使用栅格模式的关键要求是首先要分割系统,然后找到一个合适的节点间通信系统。(尽管更高级的栅格系统能够在运行期间对其自身进行重新配置,但栅格模式系统的设计者需要认真思考系统功能到处理节点的分配问题。)除分割之外,栅格系统具有三种设计模式中最少的高级设计约束。一旦系统被分割,每个独立节点的设计与实现就会如同一个独立系统一样进行。栅格系统可在专用硬件上实现,但另一个普遍的选择是通过采用SMP硬件以及将共享的存储空间划分成针对每个内核的片段来建立栅格节点。
栅格模式系统与其它设计相比具有几个突出的优点。首先,它们可以很容易与过去的软件整合在一起,过去的系统甚至可以在栅格范围内它们自己的节点上继续完整地运行。此外,栅格系统在判决能力(determinism)和调试能力方面具有明显的优势。栅格模式系统设计的松散联结意味着在资源竞争方面不会有多少意外情况,由于熟悉的单内核调试方法可以用于每个孤立的系统节点,所以调试相对简单。栅格模式系统的分割特性使其更为强大,但这也是其缺陷的根源所在,因为分割使得它难于再分配资源,这将导致栅格系统在适应将来的和不可预期的要求方面缺乏灵活性。
图1:针对图像处理的平面模式。
图2:栅格模式系统。
3. SMP模式
在一个对称多处理(简称“SMP”)系统中,单一映像(single-image)操作系统是运行在两个或多个共享存储空间的处理内核的顶层,这些处理器内核实质上是相同的。正如一台多内核桌面计算机一样,SMP模式系统可以在一个处理器内核组基础上动态地均衡任务。重新分配处理能力以匹配当前任务的这种能力是SMP系统的一大主要优点,这也使得SMP系统成为了三种模式中最灵活和适应性最强的模式。利用当今SMP实时操作系统,这种灵活性可以不需要在牺牲任何性能的条件下实现判决或实时响应。
图3:SMP系统实例。
一个SMP模式系统要求具备两样条件:一个是对称的共享存储器的多内核处理器平台,另一个是具有SMP功能的操作系统。今天众多的处理器系列都支持SMP功能,也有多种渠道可以得到SMP操作系统。SMP系统的两个更为突出的优点是开发人员比较熟悉,以及可以快速启动。理论上来说,开发人员可以较为容易地启动具有SMP功能的操作系统,并将现有的应用设计进行移植,开发人员可以快速地利用多内核硬件的性能。
现实的情况基本如此,但是有几个问题需要牢记。第一个值得关注的问题是硬实时性要求,一个支持SMP功能的实时操作系统(RTOS)不会牺牲实时性能,但是,当使用SMP时,不具有硬实时性功能的操作系统将缺少判决性以及缺少更高级的和更可变的中断反应时间。对一个良好的SMP RTOS而言无需担心此点,但需牢记的是,通用的操作系统在SMP硬件上和它运行在单处理器系统上比较也许会有不同的表现。
第二个潜在问题是资源竞争。SMP系统的一个突出优点是很多资源都是共享的,这使得SMP系统更具有灵活性和适应性。然而,该优点也是一个缺点,由于所有的资源是共享的,将会由于资源竞争产生无法预期的性能改变。在每个系统中这是不会发生的,但如果开发人员想要系统按其设计的性能运行的话,还是要将此点牢记于心。
设计实现与调试
正如嵌入式开发一样,在硬件设计的过程中需要首先考虑软件的开发和调试。确保设计具有片上调试(OCD)的功能将会极大地加快系统开发进程,而且为编程和分析系统提供了一套可靠的工具。在平面设计模式和栅格设计模式中,单个OCD端口可让开发人员对系统的单个内核进行调试,就好像他们拥有一个更为传统的单内核系统一样。
实时跟踪端口是另外一个调试特性,这一特性随着系统中内核数目的不断增长而变得越来越重要。实时跟踪提供了一个标准方法去观察内核之间的相互作用,而不会破坏对再现问题起关键作用的敏感时序。如果多内核设备包含有一个或多个实时跟踪端口,这将会使的系统开发更容易。
有一个常常被提及但并不符合实际的说法:尽管许多开发人员成功采用了这三种设计模式,但是软件开发工具并不是针对多内核应用设计的。现在,已经有支持SMP功能的实时操作系统提供,且可以为开发人员提供不损耗实时判决的灵活的SMP模式。对于使用平面模式和栅格模式的设计来说,开发人员可以充分利用现有熟悉的、经过验证的单内核设计工具和方法。多内核设计可使系统变得更为复杂,但是已开发出来的工具和方法可以为开发人员在管理多内核硬件的复杂性、实现其强大的功能及成本等方面助上一臂之力。
作者:
Anderson MacKay
硬件调试/跟踪探测工程经理
Green Hills软件公司 |