当前位置:文档之家› 从多核到众核处理器

从多核到众核处理器

从多核到众核处理器此文由客座作者Zheng Li所写,欢迎大家follow他的twitter:/biglizheng其实“多核”这个词已经流行很多年了,世界上第一款商用的非嵌入式多核处理器是2002年IBM推出的POWER4。

当然,多核这个词汇的流行主要归功与AMD和Intel的广告,Intel 与AMD的真假四核之争,以及如今的电脑芯片市场上全是多核处理器的事实。

接下来,学术界的研究人员开始讨论未来成百上千核的处理器了。

有一个与多核匹配的词叫片上网络(Networks on Chip),讲的是多核里的网络式互连结构,甚至有人预测未来将互连网集成到片上这种概念了。

当然,这样的名词是很吸引眼球的,不过什么东西都得从实际出发,这篇文章也就简单地分析了为什么有多核这个事情,以及多核系统的挑战。

为什么有多核处理器?事先需要提及的是,一个常见误区就是多核和众核处理器的发展来源于应用和市场驱动。

实际上,应用和市场希望单核处理器的寿命越来越长,而物理限制是多核以及未来众核处理器出现和发展的动力。

之后我们来谈论一下,首先,为什么有多核处理器?从Intel 80286到Intel Pentium 4大概二十多年的时间都是单核处理器的天下,为什么最近几年单核处理器却销声匿迹了?是什么导致了多核时代的到来?这里需要知道一个经验定律和三个限制,他们是多核处理器的最本质缘由。

这个定理就是摩尔定律。

Gordon Moore博士是Intel的创始人之一。

早在他参与创建Intel之前的1965年,他就提出,在至少十年内,每个芯片上集成的晶体管数(集成度)会每两年翻一番。

后来,大家把这个周期缩短到十八个月。

这个指数规律的发展速度是令人难以置信的,大家都听过那个国王按几何级数赏赐大臣谷粒,从而使得国库被掏空的传说。

而摩尔定律讲得就是现实中晶体管数量几何级数倍增的故事,更令人难以置信的是这个速度保持到今天已经快五十年了。

人类历史上应该还没有任何技术是指数发展这么久的。

题外话一句,若干年前,互联网骨干网带宽曾经这么指数了几年,曾有人将其总结为一个定律忽悠一堆人研究光纤通讯,后来发现带宽没法按照指数定律涨了,许多搞光电的人也就找不到工作了。

扯远了点,整个IT产业之所以风光了这么多年,摩尔定律是本质的因素。

当无数的硅公硅婆和软件民工们将晶体管数目的增长转换为计算机等IT产品的性能时,摩尔定律也就有了两个推论,每十八个月,计算机等 IT 产品的性能会翻一番;相同性能的计算机等 IT 产品,每十八个月价钱会降一半。

后面这个推论很可怕的一件事情,他说,如果你IT产品像菜市场的商贩一年年复一年的卖同样的东西,那么你IT产品的价钱会指数下降。

从某种意义上来说摩尔定律逼迫着所有的IT企业不断的按指数规律提高产品的性能,并且创新出新的产品。

但不幸的是,这种从晶体管数转换为性能增长的过程日趋困难。

时至今日,集成度还在以摩尔定律的速度增长,但是性能的增长遇到了三个物理规律的限制。

第一是功耗,第二是互连线延时,第三是设计复杂度。

功耗限制:晶体管的主要工作就以翻转提供信息计算,要让晶体管翻转就是给他们提供能量,而他们一翻转就要发热。

从Intel 80286到Pentium 4的路线一直是让晶体管翻转得越来越快(约两千倍的差别),处理器频率随之不断上升,也就是意味单位时间提供给芯片的能量——功耗,会逐步上升,发热也越来越厉害。

一个很明显的现象是,286不需要散热,但是Pentium IV却需要散热片加强劲的风扇。

这种靠不断增加翻转速度的方式带来的最大好处是同一个程序,你什么优化也不做,买一个下一代的芯片就可以让程序跑快很多。

但是与此同时,翻转速度的上升带来功耗的急剧增长,所散热超过了风扇散热的热预算。

不幸地是,散热的能力却不能够同步增长,这限制了处理器所发热的总功耗,从而使得传统地提高处理器频率的老法子不再具有可扩展性。

单核处理器的性能发展走到了尽头。

那摩尔定律提供的多余的处理器怎么办呢?最简单的办法就是用来增加单片集成处理器核的数量而不是性能。

互联线延迟:芯片上除了晶体管就是互连线。

它的主要工作是把一个晶体管干活儿的结果给另一个晶体管,是个车间搬运工的角色。

曾几何时,晶体管是很慢的,所以没人在乎这种搬运工带来的任何延时影响。

但是随着晶体管越来越小,越来越快,互连线的延迟并不随之变块,这就成了问题了。

以前晶体管每翻转一次的时间互连线能够把数据从芯片的一头送到另一头,而如今这种对角线传输得花好几个晶体管翻转的时间。

摩尔定律说晶体管集成度越来越高,但是互连线却相对的越来越慢了。

这带来的最大问题是干一件事情需要花的步骤更多了,打个比方就是工厂里的流水线级数越来越多,很多步骤都花在把东西从一个车间搬到另一个车间上。

在Pentium IV的时候,干一件事情(执行一条指令)要花20级流水线。

流水线级数长不是什么好事,因为一旦当流水线级前面处理的东西出了问题,后面正在处理的那些东西就得重头来做。

当年AMD Athon之所有能够在与Intel Pentium 4争夺中占领一席之地,就是因为虽然AMD的晶体管翻得慢,但流水线级数少,因此那种重头来做的机会和代价都小,因此性能还很高。

克服互联线延迟增加的最好办法就是把一个大厂房分成很多个小厂房,事情都在一个小厂房里解决,这样运输的距离就变短了。

换句话说,使用较小的核组成一个多核的芯片,而不是以往的单核芯片。

设计复杂度:随着晶体管数量的增加,芯片设计的设计空间、设计复杂度和验证难度都是大幅度增加的。

话说Intel六核的iCore7上集成了超过十亿个晶体管,其设计难度之大可想而知。

如果采用多个重复设计处理器核,那么设计的复杂度就会大大降低,从而使得设计成本降低,出错的机会也减小了。

总结一下,多核系统的出现是摩尔定律与物理规律限制相互作用的结果,三个主要的限制是:功耗、互连、设计复杂度。

一个处理器上的晶体管数越来越多,但是他们却因为功耗和互连线的限制并不能直接提供很高的性能,那么怎么办呢?一个最简单的办法就是用在一个处理器中集成多个简单的处理器核。

这样既把多出来的晶体管用上了,而每个处理器核就像前一代的处理器一样简单,因此不必提高他们的翻转速度,各个处理器核只需要自己交换数据,因此没有很长的连线延迟。

这也就是Intel放弃Pentium IV采用Core 2结构的缘由,也是本篇文章最本质的原理。

从单核到多核乃至未来众核的变化并不是芯片设计公司根据客户需求,市场趋势做出的主动选择,而是在物理规律限制不得已的情况下被逼走上的道路。

这意味着以前那种处理器频率越来越高的时代已经一去不复返了。

在那个已经过去的黄金时代,程序员不需要怎么优化程序,因为优化程序所花的功夫和时间还不一定值得去市场上买一个新款处理器。

这也就使得Microsoft敢于做越来越慢的软件。

他不怕因为软件太慢卖不出去,因为处理器的翻转速度的增长会使得他本来很慢的软件,不久就会快得可以接受。

但是这个故事已经结束了,现在的新款处理器跑老程序并不会快到哪里去,而当你买了新处理器还得对老程序作进一步的优化才能利用上新增的晶体管。

这可能也就是微软的Vista按照老路子设计,但卖得没那么好的原因,也带来了微软裁员5000人,但是linux却还是比较红火的结果。

下面这个图是09年初Redhat Linux和Windows的股票走势,可以比较明显的看出来,当处理器速度不再翻倍的时候,当人们没钱总是换硬件的时候,微软的表现就不是那么好了。

因为Windows Vista 是微软沿用了以前处理器发展规律设计的操作系统,因此并不叫座。

微软公司不得不花大力气重写了他们的内核代码,推出了Windows 7来收拾Vista的残局。

多核虽然说着容易,做起来也不难,但是难得却不在多核本身上,下面的内容简单地揭开了多核设计貌似困难实则简单地面纱,同时也指出多核之难不在核上,而在互连与编程两大挑战。

多核处理器是什么样子的?多核处理器的发展其实很大程度上是一个学术界最早提出但是由工业界引领的题目,从本质上来说设计一个多核处理器本身没有什么有深度的挑战,难点其实是互连和编程的问题。

不过在我们深入了解这两个问题前还是先回顾一下多核处理器的发展之路,目的是看看人们怎么从单核走到多核的。

多核的点子最早学术界提出的。

典型的有四个:斯坦福的Hydra(1996),斯坦福的Imagine (2000),MIT的RAW(2002),以及UT奥斯丁的TRIPS(2003)。

在这个问题上,是不得不佩服美国的创造力,要知道直到在2000年左右,所有的人都还在为处理器频率按照摩尔定律翻翻而狂热,美国的顶尖研究员就早已看到了这条路的尽头并指出未来处理器的发展之路。

如果从学术界多核处理器的发展上学到一点最关键的内容的话,那就是:做一个多核的处理器不是一件有理论困难的事情。

曾有人据此预测说多核设计给了学术界一次超越工业界的机会,就像当年一个随便的学生project做出来的RISC处理器就能胜过工业界的CISC处理器一样。

但是就目前看来这件事情并没有如期发生。

真正的难点并不在处理器设计上,当工业界用各自不同的方式实现多核处理器后,一个重要经验就是:真正的难点在提供一个多核平台上的编程环境。

在介绍多核处理器的设计的时候我们将学术和工业界的研究情况结合在一起。

多核处理器架构的学术深度是有限的,但是工业界的实现却是多种多样的,SUN、IBM、Intel、AMD、甚至ARM都相继设计并推出了了自己的多核处理器。

面对不同的客户市场,不同的公司推出的不同多核处理器具有截然不同的特点。

多核处理器的设计依照大致可以分为三类:总线或者交换开关互连的或和设计,流处理器和图形处理器,以及网络互连的处理器:以总线或交换开关为基本互连架构的多核设计最初的多核处理器集成的处理器核数量较小,典型的特点就是互连方式是以总线和交换开关为主,而每个核结构相似功能较为强大。

这种设计也该可以看作传统一个主板上多处理器结构在片上的集成,主要的创新来源于摩尔定律指导下半导体技术进步带来的集成度提高,体系结构的创新并不明显。

这种结构的始祖(当然也是片上多核的始祖)是Hydra。

斯坦福的Hydra处理器是最早提出的片上多核处理器。

Hydra发明后成立了一家公司,然后这个公司被SUN公司购买(后来SUN又被Oracle买了,不过那是后话),Hydra也就成为了现在SUN主流处理器Niagara的原型。

不仅如此,现在Intel的双核、四核处理器也是采用了和Hydra类似的结构。

Hydra的出发点也就是看到了多发射超标量处理器架构的末日,然后将多个简单的处理器核集成在了一个芯片上,互连方式还是最简单的总线互连,每个处理器通过总线广播的方式发送信息,也通过总线侦听来接受其他处理器。

相关主题