近期于美国加州举办的多内核博览会(Multicore Expo)是多内核协会(Multicore Association)自成立以来的首次公开会议,众多与会公司在会议中详细介绍了多内核和多线程架构,以及高度并行处理阵列的开发。然而,这些先进处理器的成功并非已成定局,因为目前从缺乏编程和开发工具到惧怕公司合并等各个方面都存在障碍。
图1: 多内核设计需要优化的并发C模型
许多市场上出售的可重构多处理器芯片目前已经纷纷落马,它们都是架构缺陷、繁琐编程工具或缺乏经济资助的受害者。“最近几家开发多内核架构的供应商可能遭到合并。”市场调查公司Forward Concepts的首席分析师Will Strauss预测,“即使不断有公司涌进,今天大约20家左右的供应商数目在未来五年仍可能会萎缩到5家左右。”
Strauss说,挑战不仅仅在于构建高性能的硅芯片,而且要对芯片进行编程以便能够执行所要求的算法。许多早期多处理器供应商的失败就在于无法实现后一点。一些工具要求的学习曲线太长。有时候,处理器供应商为了客户的利益不得不开发应用软件,但这样做却无法与多数潜在客户进行良好合作,因为这些客户希望能够自己开发算法(珍贵的IP)。
硬件设计从简单到卓越
此次博览会公开展示了一组具有可达到31GMACs(每秒310亿次乘法累加运算)运算速度的处理器,能够很快完成在无线基站、医学影像、网络路由、视频代码转换以及多媒体等领域复杂的计算密集型算法。这些处理器,也显示了该技术在驱除长期以来的阴霾之后,所取得的巨大进步。
会议中进行讨论的硅解决方案跨度很广,从简单的异类方法到性能极高的高集成处理器阵列。异类方案中有来自ARC国际公司的先进的声音子系统处理器,该处理器集合了高处理能力、128位宽的单指令多数据(SMID)处理阵列,以及一个ARC700系列CPU内核。当时钟频率达到500MHz时,该组合能产生每秒95亿次运算(9.5 GOPS)的处理能力。
该处理器为SIMD引擎增加了一个音频编解码库,为了管理数据流增加了一个双通道音频优化直接存储控制器。“这让子系统具备了高速转码能力,以及高速音频编码和多通道高保真音频解码能力。”ARC公司的销售与营销高级副总裁Derek Meyer表示。
据称,该子系统能够以少于第一次跟踪播放的时间将完整CD的音频内容截取到硬盘,而同时还能够处理多个音频流的解码和回放,其中每个音频流采用不同的采样率和压缩算法。据ARC的相关人士透露,多亏了使用专用的SIMD引擎,在完成所有工作后,其功耗仅为同等解决方案正常水平的20%。
会议期间,ARM公司描述了一种使用其MPcore设计架构的可综合方法,可以将多个ARM11内核以一个模块的形式实现。该方案让设计人员可以利用16到64kB指令和每个处理器都有的数据缓存器将4个ARM11处理器形成一个整合体。采用四处理器内核的设计在运行速度达到550MHz时,峰值性能可以超过2,700 Dhrystone 2.1 MIPS。通过使用一个在创新监听控制单元(SCU)中实现的增强型MESI一致性协议,所有四个处理器能够平衡运行,ARM公司多处理器的项目经理John Goodacre介绍。单独处理器能够被隔离出来运行单独的分割工作,并且能够帮助移植遗留或实时代码。
“多内核解决方案也是一种低功耗设计:缓存到缓存的传输减少了由于缓存缺失对主内存进行查找的需求,所以消除了内存总线传输的功耗。;”Goodacre介绍,“数据能够直接在处理器缓存之间流动,从而减少等待时间;自适应功率管理能够使未使用的内核进入动态以及静态节能模式等等。该解决方案还使用了频率调整,以保持内核的功耗最低。”所以,一个拥有32kB指令和数据缓存器的四内核设计,以130nm CMOS工艺实现,当使用1.2V电源供电时,仅消耗3.3mW/MHz。
来自于picoChip设计有限公司和Rapport公司的高内核数处理器,采用了极限性能的概念。在会议上,picoChip公司公开了其下一代针对DSP应用的PC200系列处理器。PC202、203 和 205在一个芯片上集成了198到248个不等的相同DSP,202和205还集成了一个ARM926EJ-S 32位处理器内核来处理控制以及辅助操作。
每一个DSP内核都是一个带有局部存储器的简单16位哈佛架构处理器。ARM处理器包括64kB指令和数据缓存、128kB紧耦合存储器(TCM)和128kB数据存储器(32位宽),该数据存储器可以被内部总线读取,但也可以作为DSP阵列的资源使用。
该器件的运算吞吐量超过每秒1000亿条指令(100 GIPS)和31GMACs。根据picoChip公司营销副总裁Rupert Baines的观点,以1GMAC/1美元的成本,该器件为消费和其他对价格敏感的市场建立了新的性价比标准。而附带的C语言软件开发工具套件,也让设计人员能够很快对DSP引擎阵列进行配置和编程。
高端的PC205是PC202和203的扩展集,包括了由248个被称为picoArray的DSP引擎组成的阵列。每一个DSP引擎是一个完整的DSP块,包括了16×16位的乘法累加器。除运行信号处理算法外,picoArray还能够执行物理层和面向无线基站应用的较低层媒体存取控制(MAC)软件。上层的MAC功能由ARM处理器来执行。芯片的额外资源还包括:一个向量中断控制器、两个UART、一个通用计时器模块和一个看门狗计时器、一个10/100以太网端口、一个运行在200 MHz以上的双倍数据速率SDRAM接口,以及多个通用I/O线。Baines介绍,PC205还包括专用内核,能够有效执行关键子函数。
图2: Linx提供分层的IPC架构
Rapport公司也在会议上展示了包含256个8位处理单元的KC-256芯片,并将于数月内提供样片。Kilocore架构中的256个处理器相互独立,能够任意互连且时钟周期高达125 MHz,有效性能峰值高达每秒320亿次运算。这允许处理器用于实时通信、多媒体和无线通信系统时,可以处理增强的保密性、数据压缩以及信号处理。它也能够作为加速图像渲染和数据加密的一般资源来使用。
Rapport公司透露正在计划推出一系列产品,从微小的64内核芯片到一个4,096个内核的片上超级计算机。
编程和调试问题
多内核架构引发了许多编程问题,风河系统的CTO Tomas Evensen指出。这些问题包括:如何启动系统?不同的内核是否需要运行不同的操作系统?内核之间如何通信?如何共享存储器和缓存等资源?如何保持负载平衡?
调试可能称得上是问题中的问题。Evensen介绍,调试同时发生的事件确实需要技巧。其中最棘手的问题包括内核之间的交互,特别是在竞态条件下。该问题的起因及其产生的影响可能相差数百万个周期。
传统的关断处理器的调试方法在多内核同时运行时不再奏效。Evensen指出,关键在于要在不关断内核的条件下进行动态调试。他介绍,风河的Workbench调试器允许用户在系统运行时动态添加“传感器点”,但他也承认,这些传感器点会改变时序。
目前大多数人使用2到4个内核。随着内核数量的剧增,内置并行处理能力的新语言也许会是一种解决方案。Evensen表示,“C/C++将能应付一阵子,但是当芯片中整合了256个内核时,我们就需要更强大的语言。”
其实picoChip公司早已经面临了这样的问题:其PC102 picoArray包含308个处理器和14个协处理器。PC102的工具链包括:一个VHDL解析器、C编译器、精确到每个周期的仿真器、设计分配器、布局和转换工具以及网络检测器和调试器。C语言用于单独处理器的编程,而VHDL则用于处理器的连接。虽然在多内核中分配设计是手工完成的,但是picoChip的工具却能自动分离穿越不同时钟域的信号。
调试整合了300个内核以上系统的技巧是在信号线上放置探针,picoChip的首席构架师Gajinder Panesar表示。这些非侵入式探针会采集有用数据,但是不会影响信号处理模块的性能。picoChip的调试器提供几款不同的探针,用户还可定义自己的探针种类。
业界迫切需要的多内核设计流程,要支持将多应用影射至多内核,而且在实现运行时能够平衡负载,IMEC比利时研究中心的设计技术副总裁Rudy Lauwereins表示。
Lauwereins描述了一个IMEC工具流,专为紧密耦合的一维和二维VLIW处理器模板而开发。大多数C代码被影射至一维VLIW,而紧密循环则映射至二维VLIW,后者能够提供更高程度的并行处理能力。一个可变目标工具套件包括:编译器、硬件生成器、周期精确仿真器和指令精确仿真器。
Lauwereins介绍,多内核设计流要求三个新举措:首先,进行独立于平台的优化,这会生成一个优化的C模型;其次,进行从顺序到并发的模型转换,并生成并行代码;最后,再进行与平台相关的优化。“它们不涉及硬件,完全是软件运作。”他说,“许多时候,你要从软件下手并清楚该如何搭建架构,绝不能反其道行之。”
多内核器件可能会挑战设计领域有关编程的一些基本假设。麻省理工学院(MIT)的工程和计算机科学教授Anant Agarwal指出,因为多内核通信比存储器存取成本更低,所以设计人员必须从以存储器为导向的计算模式转到以通信为中心的模式上来。传统的集群计算编程方法浪费了多内核提供的机会,他说,因为讯息传递和共享存储器技术是在假设通信成本非常高的前提下设计的。
Agarwal提倡一种“流”编程方法,它能最小化存储器的使用。数值从网络中被读取,经计算后再发送出去。这样做避免了存储器存取指令和同步。他表示,多亏了采用这种方法,MIT的“Raw”架构在运行首字(first word)时只需3个周期。
TIPC发展趋势
随着新型编程技术的出现,许多人担心缺少标准应用编程接口(API)和协议会引发大范围不兼容问题。“开放标准是唯一的出路。”风河的CMO John Bruggeman表示。
本次会议,多内核协会选择了风河公司支持的开放源码的透明进程间通信(TIPC),将其作为多内核环境的一个标准协议。而就在会议举行的前一周,Enea Embedded Technology公司宣布Enea将以开放源代码的形式提供Linx(另一竞争性的IPC)。
在Linx推出之前,将TIPC定为多内核应用的标准IPC似乎不会引发任何争议。爱立信为多处理器网络上的进程间通信而开发的TIPC,两年来一直都采用开放源模式,并且得到了嵌入式软件开发领域最大的供应商风河的支持。
但是Enea的产品管理总监Michael Christofferson并不同意选择TIPC。他表示,Linx比最新发布的TIPC性能要高20%,很容易就可以从多内核IC升级到带有数百个处理器的网络,支持任何分布式技术,并具有独特寻址方式(节点只存储本地连接所需的地址)。除Enea的OSE操作系统之外,Linx还支持Linux,并将从6月起开放源代码。
“TIPC是一个出色的协议,”Christofferson承认,“但它处理的问题范围比Linx窄,因而不得不硬塞入像多内核IC这样的应用中。”他认为TIPC虽然先行一步,而且一些人也已经开始加以采用,但是离广泛普及还相差甚远。“这场游戏还在进行之中。”他表示。
但是Bruggeman却对此予以反驳,“标准就意味着被采纳。我们拥有TIPC开放源标准已经两年,并且拥有大型电信公司的良好使用记录。”他称Linx解决方案能够解决的问题实际并不存在。
Bruggeman不承认Linx所声称的高性能,他评论道,“我们不知道他们运行了什么测试,得到了什么结果,或与什么进行了比较。”他表示,即将发布的优化版本TIPC 1.6可以提供如Linx所宣称般的良好效果。他还提到,TIPC目前支持次级节点和多群集,不再像以前那样需要全部节点才能获取完整的地址映射。
Bruggeman认为,最有可能的结果是Enea将停止“逆流而行”,并将Linx的精华部分引入TIPC。“我很希望看到这样的结果。”他表示。
而Gartner Dataquest的一名分析师Daya Nadamuni则认为:“Linx以现有成熟标准挑战者的身姿出现,但是我们不应该排斥它。”他补充道,“如果Linx拥有一个易于使用的编程模型,能够升级而且被广为接收,那么就极有可能胜出。”
作者: 葛立伟