多核设计将在消费电子领域大行其道
Patrick Madden在“多核处理器前途未卜(Multi-core processors face uncertain future)”一文中关于多核芯片的讨论焦点集中于单个的通用处理器架构上,实际上这种观点对使用多处理器来解决系统架构问题作出了不必要的限制。正如 Madden所言,大型半导体和服务器处理器供应商可以提供多核的对称多处理器,每个对称多处理器都可以运行并行的多线程软件程序。这些多核处理器常在运行基于SAMD(single application multiple data)模型应用的大型服务器和笔记本电脑中。SAMD应用可回溯至早期的大型机时代,当时计算机专注于航班预定系统和实时银行系统等实时应用。
当前,嵌入式设计中对称多处理器(SMP)架构的应用引起了业界极大的关注。实际上,很少应用是同时并行(embarrassingly parallel)的。就像Madden提及,图像和多媒体处理是同时并行的,但是这些应用已经有专用的多媒体芯片处理了,例如IBM的Cell处理器和 ATI/Nvidia的图形处理器。因此,包括Madden在内的很多专家都认为,对称多处理器上的并行应用已经被局限在一个很小的范围之内。
软件工程师不习惯并行地考虑问题
在Madden的文章中,大多关于对称多处理器的讨论都会谈到开发工具的问题。实际应用中,依靠软件工具把一个巨大的单线程应用程序自动分配给多个处理器运行是不大可能的。类似于Verilog这样的硬件描述语言可以很容易地表达并行操作,而像C这样的软件语言更适用于单线程算法的实现。为了让C语言更适用于并行编程,人们做了很多改进尝试,比如Concurrent C、UPC、mpC、pC等。它们有些通过特殊的库,有些通过并行的API来实现并行进程的显式标识和进程间的通信,例如Madden的文章中提到的 MPI和OpenMP技术。
还有些研究人员试图用全新的整合了并行编程结构的软件开发语言来替代C语言。但是业界对这些新的编程语言并不认可(例如,Ada语言和Inmos公司的 Occam语言均以失败告终)。我们已经习惯于单任务的算法描述,对大多数程序员来说,思考并行程序或多线程操作都相当困难。然而,跳出SMP的限制来扩展处理器架构,我们发现至少有两种利用异构而非同构的并行方式。使用该两种便捷并行(convenient concurrency)方式能充分地将软件开发人员从并行工作的思考中释放出来,因为不同的并行任务间的联系并非十分紧密。
图1:超级3G移动电话原理图
第一种方式
你可以称这种并行为“组合并行”,因为这种并行操作将不同的子系统组合在一起,而每个子系统中都包含一个或多个针对特定任务优化过的处理器。在这种架构设计中,结构化的子系统间的通信只在需要时才相互影响。图1所示的超级3G移动电话系统体现了该思想。图中共有18个独立的处理模块(灰色表示部分),每个模块都有清晰的功能定义,因此很容易将整个系统功能划分开来用18个处理器完成设计(考虑到子任务处理的话,可能需要更多处理器)。
一些人对这种架构设计提出批评,因为处理器和门电路的效率看上去并不是很高,至少在理论上只需用几个高时钟频率的通用处理器(或者是SMP多核处理器)就可以替代10个、20个或更多的处理器核。实际上这些批评并不恰当,摩尔定律继续促使在一片芯片上可以集成更多的晶体管,而Denard经典尺度则提供速度更快、功耗更低的晶体管,但是从90nm开始,Denard理论无法继续提供更快的速度和更低的功耗了。在90nm节点上,功耗和能耗变得很难控制,而且随着工艺的提高问题将更严重。所以嵌入式系统的设计人员从现在开始就必须接受降低系统时钟频率以满足预期功耗和能耗指标的设计风格。
组合并行设计具有很多优点
* 将运算任务分配给几个片上处理器来运行是典型的增加晶体管数量换取低主频以降低功耗和能耗的方法。这是一种很好的工程折衷,由于时钟速度和内核工作电压之间的紧密关系,时钟频率的提高将使功耗呈超线性增长。此外,较低时钟速度的处理器不必采用最新的制程工艺。相同光刻节点情况下,采用速度较慢的低功耗制程的静态漏电流水平比采用高性能制程的漏电流水平小三个数量级。
* 当不需用到某个专用子系统时,可以切断其电源供应。因此,设计人员可以很容易地确定何时使用或不使用这些专用子系统。
* ASIP可以比通用处理器具备更高效的利用面积和功耗,而用作组合并行系统中的任务处理器。由于所使用的通用处理器核很少,也相应地减少了晶体管的数量。组合并行的设计避免了与SMP硬件设计和多线程代码相关联的子系统所需的复杂交互与同步。一个四内核的SMP系统带有音频、视频和照相功能,在运行其他任务
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)