新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 多核的多重挑战——新联盟在编制多核通信API的规范

多核的多重挑战——新联盟在编制多核通信API的规范

——
作者:Markus Levy时间:2006-12-10来源:电子产品世界收藏

摘要: 本文从定义、结构差异、以及嵌入式软件的角度介绍了处理器技术。
关键词: ;非

是对还是错?目前所称的处理器仅是处理器厂家和IP供应商为多卖芯片和内核而制造的过渡性热炒。将单核直接倍增用于台式计算机及服务器的这种多核处理器芯片的所谓开发技术也在直接推向嵌入式系统。如果相信会刊上的这类关于多核处理器的言语,那么等将来有一天知晓对多核处理器性能的真实要求时,定会大为震惊。真实的多核处理器原本指的是一种关于未来微处理器的新技术。目前多核的欺骗确实能够多卖芯片和内核,而且在性能和功耗方面也能够表现出某些期望的实用效果。但不幸的是,多年来用于台式机和服务器中使用上述直接的或称无痛倍增式的多核技术对于嵌入式的使用帮助有限。为深入研究新型多核结构的挑战,最近一些公司成立了一个非营利性的多核联盟的组织,其宗旨在于协助嵌入式工业解决弹片式多核处理器的共性难题。该组织着手解决的第一个挑战是弹片多内核之间的通信难题。现正在开发核间通信用的API规范。因该联盟尚未正式获准注册,所以其成员现在不便公布。然而,提出申请并已缴纳首次会费的公司至少已有15个。

多核的多重含义

首先应该给多核下个定义。 多核存在多种定义,尤其不幸的是,多核已被市场频频滥用,乃至被责之为一种骗局。

多核联盟认为单片的多核器件应当存在两个及以上的自治处理单元。 自治或自主是处理单元的重要条件。按此定义,凡主机流程中有协处理器的系统便被排斥在多核处理器之外,而与主机连接着执行自己指令流的DSP核的则是多核系统。这是定义中的简明部分。

若论及AMP(非处理)与SMP(对称处理), 同构与异构,存储器共用与分布等结构形式,简明定义将被突破。

多核处理中的SMP是含有两个及以上的场合,各有同样芯片,同结构的核,运行同样的软件。SMP可共用内存及缓存粘接部分。SMP使用同构的核,尽管同构的内核再不必一定是SMP。 若内部是同构的核,但各核运行的不是相同的操作系统,那就变成多处理(AMP)。AMP系统也可以用异构的核和共用存储接口或使用分布存储器。有时,AMP与NUMA(非均一存储器结构)可以看作同义词。任何情况下,同构或异构核都可构成多核处理器,多核处理器都可以按SMP(对称)或AMP ()模式运行。

往后,弄清每个嵌入式多核处理器的构成十分重要,因不同要求有不同的构成。 Freescale 和Intel以高端的工业和通信应用为目的,选用同构双核的嵌入式多核结构。Freescale 、ST和TI公司以各类多媒体消费电子产品为目标,使用异构多核嵌入式芯片,如Freescale的i.MX 和 ST的 Nomadik。其他公司,如PicoChip Design 和Connex Technology公司构建的则是具有数十、数百乃至数千个核的同构或异构多核处理器。这些本质上差异巨大的多核处理器,在软件编程和硬件的高并行度方面都更加的专业化。

AMP 与 SMP 更多的差异

关于AMP或SMP的优缺点的争论,从通用计算领域的多计算机与多处理器开始,长期以来一直在争辩和磋商。虽然持续了数十年,依然没见明确的赢家浮出水面。两种方案的上下高低说不清道不明,最后由应用的需要为准各行其是。现在,这场争论又传递给了嵌入式。

使用SMP,从应用角度看,操作系统掩盖了CPU结构的优劣并提供一些附加的功能。能够支持SMP的操作系统有许多,包括实时操作系统。其中既有商用的又有开放源码的。 SMP 的编程较 AMP 容易,尽管SMP的多线程编程也较难。已知软件的价格在项目开发中占有相当的数目。另外,SMP因硅粒面积较大、耗能和保持高速缓存的粘合复杂等问题,素有高价方案之名。又有连接带宽、同步、锁定等因素加大内核的开销, 使SMP的可伸缩性受到限制。再有,移动式的SMP系统,因需高度使用片上的,多核的频繁连接耗费更多宝贵的电力。高速缓存的粘合,引发SMP系统产生不可预期的存取延时,使一些实时应用系统无法接受。SMP系统较长的存取时间,即使可以采用硬件的多线程进行弥补,依然会产生性能的下降。SMP系统的伸缩性的不良,当核的使用数量增加时,会有更多的核由于等待线程资源而使性能下降。

AMP,在有硬件的支持条件下,功耗、硅粒面积等方面有所改善,效率比SMP高。按传统的说法,AMP的编程较难。一般来说,将应用程序分割成松耦合的程序段,再映射给分布的AMP硬件结构并非是一件轻松的事。一些倡导者曾争辩说,应当给AMP创造能够优化程序分段的健康生态环境。然而想要将多个程序段汇集成具有竞争能力的整体,依然并非易事。但是,当片上的的多核数目增长到一定程度时,采用SMP和AMP混合方案似乎更为可行。

多种存储器结构也是问题

多核结构也可以按存储器结构形式和通信采用的机制来讨论。

对于共用存储器结构多核系统,传统上多采用SMP编程模式。每个核都可以访问到全局地址空间中的所有存储器。访问共用存储器的典型方法是通过总线,使用查询的控制机制,来避免多个核同时访问同一个存储器。为使片上的每一个核都能够访问到所有的存储器,这是一种最直接明了的方法。另外,共用存储结构可以使用引用方式传递数据,数据不必真实地移动。当太多的核同时存取时,共用存储器会变成瓶颈。传统的SMP编程模式,不太能够适应多核系统处理器。因为SMP传统编程模式假定,有均一的存取结构和缓存等机制。SMP的功耗不理想,在伸缩方面也达不到嵌入式多核系统期望的数十乃至数百个核的水平。SMP频繁地同步对于多数嵌入式多核系统是过度的耗费。嵌入式多核系统需要适合流式的通信和编程,而SMP对于流模式却笨拙不灵。

分布式结构包括从全球英特网、广域网(WAN)到局域网(LAN),服务器、含有各种处理内核的单芯片器件。对于分布存储的多核系统,各核都有自己的局部存储器。尽管可能有全局存储地址空间,但需要各种形式的信息传输和资源同步机制才能通信。具有自己局部存储器的核不必与其它核分享存取以求效率与支持伸缩。当某个核要求从其它单个或多个核取得数据或命令时,必须在它们之间进行同步,而且数据必须物理地在处理器间移动而取代引用。并行编程支持便携形态的信息传送。分布式的编程通常比多线程(但它在SMP系统中能工作的很好)编程容易。然而,信息传输所需代码大于并行传输的共用代码。信息传输方式最初就是为串行通信过程(CSP)而设计的。从串行通信的字眼上就可联想到,它不会运行于现代要求紧凑代码的科学应用上面,更不用说用到嵌入式可伸缩的系统上了。

为了支持这些多种不同存储和通信结构,多年来开发了多种API标准。其中有称之为OpenMP(开放多处理)和MPI(信息传输接口) 的两个标准。

MPI是大范围分布计算系统中广为应用的信息传输API。它可用于多种分布的存储结构,因而也适宜于移动系统。每个运行的硬件都可自行优化,因而它又是高速的。 MPI虽然功能强大,但是复杂。要是把各种功能都发挥出来,单片多核上的内存远远不足,同时计算开销之大也使存储系统时延过大。

开发更快的通信API

处理器间的通信标准尽管很多,但是没有一个是为近邻分布(紧耦合)、存储紧凑、性能约束苛刻的嵌入式多核的系统所设计的。在嵌入式世界里,多数的应用在性质上是的。多核系统可以在同一个单芯片内使用异构的核,或是在同构核上运行不同的操作系统而成为非对称结构,或者在同一芯片上令二者共存。

为应对向多核系统的转移,业界同意抽象化并发概念,令其通用、简单、有效,直观地表达为一组编程用的API。这即是多核协会的宗旨。 编写嵌入式多核系统的规范时,应对资源管理(核、存储、连接、I/O),核间通信,和片内行为的同步等有所陈述。编写API不应只针对单一操作系统,或单一的SMP操作系统。当异构多核系统跨越多个核运行多个操作系统时,需要考虑任一操作系统均不能操作的资源。硬件加速器不运行任何操作系统,仅依靠当时运行核的操作系统对它的交互作用来工作。硬件加速器更加重了这种系统的复杂性。

联盟已经着手编制关于嵌入式分布基础通信方面的信息传输和资源管理的API。内部称它为通信API(即)。CAPI的目标系统包括多维异构核,片上连接,存储器,操作系统,软件开发工具,和编程语言。CAPI是关于API的编写规范,而并非是其实现。联盟的成员可以自由地参照它完成自己所需处理器结构和选用操作系统的CAPI实现。

尽管有了多处理器编程的MPI和OpenMP工业标准,但其初始目标尚只集中于大型SMP分布系统及个别特定的应用领域(如科学计算)。

关于伸缩性,其CAPI的限制比其他标准的目标更多一些。再有,对比于应用方面,其CAPI更为通用化一些。

如图1所示,CAPI形成单独的一层,其上可以是应用层或开发者构建的抽象层。为性能最佳,将核间通信、同步和资源分配划出,由应用层和CAPI层直接交互,跨过一系列耗时的操作系统的调用。 CAPI有一长串要支持的独特性能和函数。

图1  CAPI形成单独的一层,其上可以是应用层或开发者构建的抽象层。为性能最佳,将核间通信、同步和资源分配划出,由应用和CAPI直接交互,跨过一系列耗时的操作系统的调用。图中给出的是两个核的情况。

编写软件想着未来

许多支持 SMP 的 RTOS 透明地平衡多处理器间的工作负担,免除了再写这部分软件。联盟希望把这种方便也引入 AMP 系统,尽管开发这部分软件并不轻松。开发应用软件的主要挑战在于设计的重用和程序的快捷。 编程人员在编程时更多地致力于优化、快速和重用,并不关心对不同硬件结构适应性、市场的需要和工业标准的要求等等。一个普通的硬件的改变可能牵联到增加很多个核,甚至不同的处理器。相应地,还会涉及软件的生命周期。开发者需要维护巨大的代码库和曾经延续过多少代的产品演化。对于主机的处理器,若使用的是相当稳定和标准化的操作系统,将有助于开发可重用和可重复映射的软件。 但是现在的焦点已转移到居于操作系统之上的应用构架。多媒体的应用构架如OpenMax,GStreamer和 Direct Show对于编写软件有非常大的帮助。 然而,多数嵌入式的软件是为特殊功能而运行在专用的处理器上,通常并无符合标准的操作系统。在如此情况之下,映射和快速都变成十分艰难的问题。今天,多数嵌入式应用都存在固有的并行性,等待着程序员去开发。它们向SMP 结构映射比较容易,而对 AMP 至今仍是挑战。新浮出水面的进程间通信 (IPC) 标准解决这类问题很有帮助,多核联盟也正在开发中。它可以编写出将来对现行结构上的旧软件能够予以修改的软件,并且将其转移到 AMP。 若使用CAPI则必须修改软件,为使得移动容易,可能还需重新构建成松度的耦合才行。CAPI还将提供源代码的移植和重用,令结构独立和伸缩。甚至还可以设想,用这些特点将CAPI变成一个构架,用于评价程序套件EEMBC之中。

更好的中间件即将面世

面向消息的中间件能增加应用的互操作性、移植性和灵活性。 它能够将应用程序在多个异构处理器核之间进行分布。 它能够通过将每个操作系统的细节对多操作系统应用中的其他操作系统隔离开来,减少编程的复杂性。

实现消息传送中间件的典型形式,是采用中间件的软件堆栈。CAPI是使用消息传送API中间件的一例子。尽管CAPI的重要性极其关键,但它处于中间件堆栈的底层,堆栈中的一切高层中间件都是以它为基础演进而来。PolyCore 软件的 Poly-Messenger是消息传送中间件的一个例子。等CAPI完成之后,期望为PolyCore能够提供一套具备映射和配置能力的Poly-Messenger CAPI。它为多核系统提供的是一套统一的API。只要再将硬件各异和软件各异的组件都抽象化之后,它将提供从双核到数百个核的高效伸缩能力。

不同的嵌入式应用需要不同的并行结构。应用及SoC会越来越复杂,软件也将发展成包含多种算法的并发运行及它们彼此间的协调。视频解码算法将要求有驱动多核的能力。大量的应用将要求多核的处理器。其中许多应用使用多核的SoC是唯一的选择。

多核联盟已不可避免地被卷入多核调试领域。 有许多厂家宣称他们的开发工具内部支持任何嵌入式处理器组合的多核和多处理器系统。 如现存的方案中包括有 JTAG 探头及另一端的服务端子,再备有多个因处理器而异的开发调试专用的适配器。它们虽可勉强调试多核系统,但是并不全面,系统多于双核就不行了。如对于一个16核的系统想象中就将用16个调试器。多核联盟的计划中,准备开发一个标准的调试样机及相应的API,希望厂家能够参照研制出统一的多核系统调试器。

为了迎接即将到来的巨型多核革命,业界必须携起手来推进多核的生态环境。多核联盟欲将操作系统的厂商、中间件提供商、处理器厂商、EDA厂商、应用开发者、OEM厂商及其他集聚一堂,鼓舞信心,坚定信念,齐心协力,拟定一个符合共同需要的规划蓝图,保证其实施。新事物的诞生,初始虽慢,继之加速。多核联盟已经有了初始者们奠定的坚固基石,已经着手处理关键的挑战,随着事业的发展,后继者的涌现,任重道远,前途光明!(梁合庆译自《Microprocessor Report》)



评论


相关推荐

技术专区

关闭