文章插图
首先我们来看IBM Cell处理器的设计,其中包含了一个Power processing element(PPE)作为主处理器(其性能相当于64位的Power PC),加上八个Synergistic Processing Elements (SPE)作为协处理器(其性能相当于普通的RISC处理器和一个128位的SIMD),这些处理单元通过一个环形网络就行互连,达到超过200GB每秒的带宽 。光从这些数据上来讲,这个多核处理器符合前面讲述的异构并行原理,并且技术也不差 。最为不幸的是这个处理器太难编程了 。每个协处理器有一个私有的局部存储器(256KB)大小,这个存储器几乎需要程序员来手动调度,它既没有类似于缓存的自动预取,又不与PPE的存储单元共享地址空间 。如果要协调好PPE与SPE的工作,除非程序的工作模式是固定的 。这样的结果就是处理器理论性能很高,但是实际程序优化起来并不容易,很多程序仅仅能够使用一个类似于PowerPC的PPE 。没有多少廉价程序员能够理解如此繁杂的体系结构,愿意在上面做开发 。这可能就是Cell最终被IBM停止开发的原因吧 。
Intel是最能理解编程的简易性对于一个处理器生命的至关重要性,在当年以x86为代表的CISC和以MIPS、SPARC为代表RISC结构出现争端的时候,Intel为了保证程序的兼容性,保持了x86指令向下兼容 。尽管牺牲了一定性能却赢得了软件开发者和客户的认可,而随着半导体技术的推进这些性能牺牲被历史所抹平 。针对RAW和Cell都面临的问题,Intel推出了一个保持存储一致性和x86指令集的多核设计:Larabee,作为未来GPGPU时代众核编程的抬头兵 。不过这个设计从2008年透出风声到2009年底就被宣布第一代产品难产了 。

文章插图
Larabee的设计野心就是编程的容易性,16(甚至32)个x86的处理器核通过一个环形的片上网络连接在一起,分布式的的片上缓存保持完全的一致性,没有任何特殊的专用硬件单元来增加编程的难度 。大部分的优化可以通过软件来完成 。完成这样一个设计难度在于两个方面:
- 众核的片上缓存一致性是个难题,现在片上缓存一致性的核的数量支持到8已经很不容易 。如果要拓展到16或者32的话,要不性能很低,要不就是得放弃部分一致性的特点,从而使得编程的难度增加 。
- Larabee如果想要达到超过Nvidia或者AMD同类GPU产品的性能,必需有一套支持图形图像常见应用的开发工具链,而这个的开发不是一朝一夕之功 。
小结在本文的结尾总结一下所探讨的这些多核乃至众核处理器,可以看到其中的挑战其实并不是在处理器设计本身,而在互连与编程这个两个方面 。一个未来会成功的众核处理器提供给开发者一个向下兼容的简单编程模型,并且尽量将互连的影响尽可能的化解 。这个目标并不容易实现,很有可能人们不得不最终放弃传统的编程模型,而直接面对众核处理器的互连和编程挑战 。本文的续篇中,我们试图分别探讨一下,在互连和编程上研究者们做出的努力 。
推荐阅读
- 8个完全免费的软件合集,你总会用到的
- 茄子怎么煮才能吃到好吃的茄子
- 奇巧|NFT和数字藏品到底有什么区别
- 大学生|两大行业面临“断代”困境,缺人却招不到人,90后大学生们怎么了
- 广告片拍摄流程有哪些
- 生板栗怎么煮熟
- 金单从红茶,乌岽单从茶的功效与作用
- 简化“过度”吗?RX 6500 XT的视频功能到底咋样
- 收到“AdSense 发布商违规行为报告”后怎么办?
- 爬虫到底是什么?爬虫是否违法?简谈爬虫概念
