现在的位置: 首页 > 综合 > 正文

英特尔重启超级计算机技术

2013年07月24日 ⁄ 综合 ⁄ 共 5006字 ⁄ 字号 评论关闭

 

 

声明:转自http://www.mittrchinese.com/article.jsp?id=468

英特尔重启超级计算机技术

(作者:罗伯特•X•克林奇利) 

当2002年安瓦尔•古鲁姆(Anwar Ghuloum)来到英特尔工作的时候,该公司是芯片制造行业的龙头老大,这主要是因为它在持续供应速度越来越快的处理器。“我们的奔腾4处理器已经达到了3GHz,而公司发展路线图计划,未来生产时钟频率达到甚至超过10GHz的处理器,”古鲁姆回忆道,他拥有卡内基梅隆大学的博士学位,现在是该公司的首席工程师之一。在同年的英特尔开发商会议上,首席技术官帕特•基辛格(Pat Gelsinger)说,“我们正在按部就班地进展,将在2010年开发出30GHz的设备,采用10纳米或更小的制作工艺,实现万亿指令级别的性能。”就是每秒钟处理一万亿条计算机指令。

但是基辛格错了。英特尔和它的竞争对手仍在制作速度低于4GHz的处理器,至少现在看来,5GHz依然被当作硅技术可实现的最大速度。

这并不意味着摩尔定律失效了——该定律认为,一块芯片上的晶体管数量每两年增加一倍。当然,由发热和能量消耗带来的不可预测的问题,已经对处理器的时钟频率或指令的处理速率造成了实际限制。新的技术,比如自旋电子学(它用单个电子的自旋方向来编码数据)和量子(或隧道)晶体管,最终可能会使计算机的运行速度大大提升,同时大幅降低能耗。但是,这些技术至少还需十年才能进入市场,而且它们需要更换掉花费数百亿美元建造的半导体生产线。

所以,为了使手中的技术发挥出最大的效用,芯片生产商们采取别的方法。摩尔定律预测增加的晶体管,并不用于加快单独处理器的运行速度,而是增加了芯片中处理器的数量。拥有双处理器——或“核心”——的芯片现在成为台式计算机的标准配置,而四核芯片也越来越普遍。从长远来看,英特尔期望每台设备包含数百个核心。

但是出现一个问题:尽管过热芯片的硬件问题通过多核计算的方法很好地解决了,但是这种解决方案进而引来一个棘手的软件问题。你怎么给多处理器编程?这就是安瓦尔•古鲁姆,在他管理的美国和中国编程团队的帮助下,所要解决的。

微处理器公司采用多核战略是顶着巨大风险的。如果他们找不到为新芯片编写软件的简单方法,

那么他们就可能失去软件开发者的支持。这就是索尼的多核PlayStation3游戏机推迟上市,并且在游戏数量上仍然输给竞争对手的原因。

 

硅的问题

 

微处理器发展的前30年间,提高性能的方法是尽量缩小芯片的零件尺寸,同时提升运行的时钟频率。1977年,最初的苹果II型电脑使用一个运行速度为1MHz的8位处理器。今天的计算机标准为3.6GHz的64位芯片——实际上速度是以前的28800倍。但这似乎就是这条轨道的终点。到2002年左右,蚀刻在芯片的最小零件尺寸,通过光刻技术缩减至90纳米——在此规模下会产生意料之外的结果,大部分注入到芯片的电流会泄漏出去,产生热量却什么工作也不做。同时,由于晶体管排列得太过密集,它们发出的热量无法被吸收和带走。当时钟频率达到5GHz时,芯片制造商们意识到,芯片的温度太高,以至于如果没有精密的冷却系统,它们的制造原料——硅——就会融化。该行业需要别的途径来提高性能。

相对于单核高速芯片现在所需的设计复杂,多核技术可以具备相同处理能力并消耗更少电力。更少的电力产生更少的热量。此外,使用多核可以随时随地地释放热量。

然而,大多数计算机程序设计时并没有考虑多核。它们的指令被线性处理,没有并行环节的作用。如果你的计算机看起来能同时进行多项任务,那是因为处理器不停地在任务间跳转,其速度快得超乎你的想象。因此多核最简单的用途就是劳动分工——例如,在一个核心上运行操作系统,在另一个运行一个应用程序。

这不需要一个全新的编程模型,而且,它可以匹配今天拥有两个或四个核心的芯片。但是将来出现64个核心时,该怎么办呢?

 

重操旧业

 

幸运的是,哈佛大学计算机科学与应用数学的教授莱斯利•瓦瑞安特(Leslie Valiant)说,高性能计算领域——也就是超级计算机——的并行原理几十年前就解决了。“现在的挑战,”瓦瑞安特说,“是寻找让这些老玩意儿依然有效工作的方法。”

激发出多核计算的超级计算机是上世纪80年代的第二代设备,由思维机器(Thinking Machines)和肯德尔广场研究公司(Kendall Square Research)等公司制造。这些公司使用成百上千个现成的处理器,让它们并行地运行。一些由美国国防部高级研究计划署委托制造,以当作克雷超级计算机(Cray supercomputers)的廉价替代品。为这些计算机编程所获得的经验教训,成为今天进行多核编程工作的指南。所以,《侠盗猎车手》游戏可以很快地从二十年前帮助设计氢弹的软件研究中获益。

在80年代,并行计算的关键问题开始清晰起来:很难将软件分开在数百个处理器上并行工作,再按照正确的顺序组合回去,而不让预期结果错误或丢失。计算机科学家发现,尽管一些问题很容易并行化,但是也有一部分不行。在一种叫做“竞态条件(race condition)”的情况下,即使问题可以并行化,结果可能仍会不按顺序返回。想象两个并行工作的运算,其中一个需要在另一个之前完成,才能使总结果正确。你如何确保正确的那个运算赢得这场竞赛呢?现在,想象一下两千个或两百万个这样的处理进程的情况。

“我们从高性能计算的早期工作了解到,有些问题适合平行,但是这些平行应用程序不容易编写,”伊利诺伊大学香槟分校通用并行计算研究中心(Universal Parallel Computing Research Center,UPCRC)的副主管马克•史尼亚(Marc Snir)说。通常,程序员使用专门的编程语言和工具来为计算机编写指令,因为相对于1/0二进制码,人们更容易理解它们。但是这些语言旨在表现线性的运算过程;我们很难通过一系列线性命令来组织数千个平行的进程。为了从头创建并行程序,就需要编程语言让程序员在编码时不考虑如何使之平行——就像往常一样编程,软件会计算出如何给多个处理器有效地分发指令。“然而,现在仍没有好的工具来隐藏并行,或令其浅显易实现,”史尼亚说。

为了帮助解决这些问题,公司们已经召回了参与80年代超级计算机的老家伙们。例如,大卫•库克(David Kuck),伊利诺伊大学的荣誉退休教授,以并行编程工具的开发者而闻名。现在,他在英特尔从事多核编程工作。同样还有以前数字设备公司(Digital Equipment Corporation)雇佣的整个团队;在早期职业生涯中,该团队开发出数字设备公司的消息传递接口(MPI)实施方案,如今成为多机超级计算机的主要软件标准。

就某种意义来说,这些老先生们比上一次要轻松一些。因为,今天许多的多核程序与杰出的主机设计者吉恩•阿姆达尔(Gene Amdahl)的设想大大不同,他创立的理论认为,通过使用多个处理器所获得的速度增量受限于给定程序可以被并行化的程度。

计算机现在处理的数据量比以前更大,但是它们对任务的处理能够完美地平行化,以至于1967年描述的阿姆达尔定律的约束似乎变得完全不存在了。大规模平行任务的最简单例子,是通过尝试所有可能的字母组合来暴力破解密码。将潜在答案分给1000个处理器必然会快上1000倍。今天的视频和音频数据编码等处理器密集型程序也同样受益。并行地压缩电影几乎有完美的效率。但是,即使今天更容易找到并行计算的用途,要实现它也不那么容易。让它变得简单,就需要芯片制造商、软件开发者和计算机学者的一致努力。实际上,伊州大学的UPCRC就是由微软和英特尔资助的——如果多核计算成功,这两家公司将获益丰厚,如果失败,则损失惨重。

 

发明新工具

 

如果软件继续复杂化,那不只是因为加入了更多的功能,还因为程序员实际所做工作的复杂性被越来越多的抽象层掩盖,而编码就建立在这些抽象层上。这不仅仅是膨胀:程序员需要抽象,好让基础的二进制码完成我们所想要的更加高级的工作。但是,当开始为并行处理器编写程序的时候,程序员使用的工具就太简陋了,甚至微软研究院未来数据中心项目的软件架构主管詹姆斯•拉诺斯(James Larus)将它们比喻成“程序员所能使用的最底层和最困难的语言”。

“我们无法想象使用汇编语言编写今天的软件,”他说。“但是出于某些原因,我们认为,我们可以使用几乎是并行汇编语言的工具来编写复杂度类似、但拥有新的关键特性的并行软件,实际上却做不到。”

这就是为什么微软一直在尽早发布并行编程工具。例如,F#,是微软通用ML编程语言的并行版本。它不仅使一些功能平行化,而且防止它们之间不当的相互影响,从而使并行软件变得更易于编写。

同时,英特尔每个月都将古鲁姆送出国一周,与软件开发者讨论多核架构和并行编程模型。“我们已经得出一个观点,并行编程‘问题’不会在一两年内解决,它将需要对现在的语言进行大量改进——以及几次跳跃式发展,”古鲁姆说,“我还认为,我们不能脱离现实去完成这项工作;没有重要的程序员反馈,我们无疑将以失败告终。”

在商业和开源市场,其它新的语言和工具要么利用了多核处理的能力,要么掩盖了它的复杂性。其中包括谷歌MapReduce架构,它使并行计算更易于在集群计算机上运行;Hadoop,一个MapReduce的开源实施项目,可以为数千个节点分配程序。类似Clojure和 Erlang等新的编程语言完全以并行计算为根本而设计,风靡全球的Facebook聊天程序就部分使用Erlang编写。

同时,从麻省理工学院诞生的公司,Cilk Arts,可以将使用现有C++语言编写的程序打散为多线程,从而能在多个核心上并行处理。还有,圣刘易斯市的Appistry公司宣布,它的企业应用结构(Enterprise Application Fabric)可以自动地将微软的.Net编程框架分配给数千台服务器,程序员连一行原始代码也不用修改。

 

多核计算的局限

 

然而,就像英特尔的10GHz和30GHz芯片的梦想给多核计算的发展让路一样,多核自己也只能存活大约几年,而不是几十年。每增加一个处理器,并行系统的效率就会下降一些,因为处理器在争夺相同的数据;当矛盾发展到一个临界点时,向芯片增加新的核心实际会拖慢它的速度。可能在我们开始购买百核计算机之前,多核策略就被早早设置了实际限制。

然而,这有什么关系呢?尽管有些程序可能需要多核的能力,但是大多数人不会使用它们。除了游戏发烧友,很少有人会抱怨他们的计算机太慢。实际上,微软已经强调Windows 7,作为陷于困境的Windows Vista的替代品,将比Vista使用更少的处理能力和内存——这是应对低耗能移动计算平台的普及和可预期的个人电脑应用程序网络化,所采取的必要举措。愤青们会说,对不断增长处理能力的追求是纯商业的——半导体和计算机公司、软件供应商和手机制造商需要我们购买新的玩意。

所以,如果多核计算失败了,会有什么负面影响呢?如果我们的技术出现重大转折,突然无法使用未来笔记本电脑中全部64个处理器核心时,我们的文化会受到什么影响呢?

“我等不及了!”苹果II型机的发明者史蒂夫•沃兹尼亚克(Steve Wozniak)说,“摩尔定律的失效将带来软件开发的复兴,”他宣称。“只有到那时,我们才能最终创建在稳定持久的平台上运行的软件。”

“在学校里,”沃兹说,“一张课桌的生命期是25年,一本教科书是10年,而一台计算机最多3年。这些设备中哪一个的购买和维护费用最多呢?当然是计算机。哪些设备的使用期结束后还具有剩余价值呢?不是计算机——我们要花钱去处理这些电子垃圾。至少书本可以烧掉取暖。直到技术的速度减慢,计算平台生存期足够长,具有经济上的可行性时,它们才会真正成为教育的必备物品。所以,摩尔定律的结束,虽然感觉不好,实际上却是一件好事。”

——————————————————————————————————————
罗伯特•X•克林奇利(ROBERT X. CRINGELY)已经为科技行业笔耕30载。他是《意外的电脑王国:硅谷的毛头小伙子们是如何成为百万富翁、参加国际商战,却仍然不懂约会》一书的作者。

 

 

抱歉!评论已关闭.