从多核到众核处理器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
从多核到众核处理器
此文由客座作者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敢于做越来越慢的软件。他不怕因为软件太慢卖不出去,因为处理器的翻转速度的增长会使得他本来很慢的软件,不久就会快得可以接受。但是这个故事已经结束了,现在