You'll need Macromedia Flash Player 8 or above in order to view some of our content. Download now!

多核处理器有前途吗

了解多核处理器的功耗、内存和并行指令集
我是 James Reinders,今天我们要来谈谈媒体上频频提到的多核处理器。

我会谈到一个常常被问到的非常简单的问题:多核处理器将是昙花一现,还是一个长期发展方向。我们是否需要重视多核处理器,它未来是否有发展空间?答案是肯定的,多核处理器将是一个长期发展方向。因此,我会简单谈谈原因,并讨论一下多核处理器的未来发展趋势,以及我们程序员需要注意的问题。

首先:为什么要发展多核处理器?您常常听到的一个原因是功率。功率是我们遇到的壁垒之一,也是我们不再像过去那样快速提高微处理器时钟频率的原因之一。除此之外,还有另外两项考虑:指令级并行性壁垒和存储壁垒。这些都是使我们转而发展多核处理器的原因,因此,让我们逐一进行简短的讨论。

在这几项原因中,对功率问题的报道是最多的。我首先谈谈其它两种原因。

第一个问题是指令级并行性。指令级并行性是指微处理器同时执行多条指令,以便提高工作速度的方法。当我们提高处理器的时钟频率时,处理器每次能找到并执行更多指令。

问题在于,要从现有程序中找到越来越多可以并行运行的指令是非常困难的,而且随着时钟频率的不断提高,指令级并行性的效果会越来越不明显。因此,随着时钟频率的不断提高,性能的提升不再像过去那样明显,而我们越是提高时钟频率,这种趋势就会越发严重。因此,指令级并行性只是我们遇到的问题之一。

另一个问题是存储壁垒。有段时间,处理器时钟频率的提升速度远远超过内存时钟频率,而且这一趋势还会延续。上面说过,当我们提高已经达到千兆赫的微处理器频率时,性能的提升已经不再像过去那样明显,从而使得我们不断添加越来越大的高速缓存及其它技术,以便缓解这方面的一部分问题——但并非所有存储方面的问题。而多核技术可以放慢提高处理器时钟频率的脚步,让情况不再继续恶化,因此,多核技术能真正解决这一问题。

此外还有功率的问题。我读到的关于这一问题的报道是最多的——一定要阻止微处理器功率继续增加。

我们不妨做一次有趣的观察,取一个微处理器,然后从一个基线开始:比如,每消耗一个单位的电能,处理器产生一个单位的性能。很多时候,人们喜欢对处理器进行超频,超频的处理器性能也许能提升 13%,但您也许会问,这样会消耗多少电能?一般来说,性能提升 13%,功耗会增加 73%。其前提条件是,使用同一个微处理器,且除了提高时钟频率外不做其它改动。

当然,过去我们总是对微处理器进行其它方面的改动,但就某一时间点而言,如果只是提高处理器的时钟频率来超频,功率就会大幅增加。如此看来并不划算。现在有些人为了提升仅仅 13% 的性能而宁愿多消耗 73% 的电能,但大多数人不认为这样做是个好方法。

我感兴趣的是,降频是一个切实可行的方法。如果你不在乎把处理器的性能降到 87%,这时消耗的功率是多少呢?答案是大约原来的一半。

由此很容易想到一个方法:我们何不把两个处理器放在一起,其功率与原来大致相当,而性能却能提升 73%。

降低处理器的时钟频率,同时获得超过期望的性能提升,这是一种很巧妙的方法。把两个处理器放在一起,其耗电量与原来大致相当,性能却几乎是原来的两倍,这是因为您有了两个处理器。这就是我们开发双核、四核等多核处理器的最大动机。

现在,这只是众多妙法的一种。随着处理器尺寸的缩小,每隔几年,相同面积上可容纳的处理器数量就会翻一倍,这是降频之外的另一个妙法。

因此,我们并非要永无休止的不断降频,而是要不断在相同空间内容纳更多处理器,因为我们能够保持耗电量不变。

我们已经了解,这三个壁垒促使我们去研究多核技术,现在我想告诉你们的是,迄今为止我们见过的所有多核处理器只是用两个现有性能的处理器合并而成的:双核处理器,我们已经见到了四核处理器芯片,其内核的功耗与今天的处理器功耗大致相当。

曾经有人问,如果采用性能低得多的内核——例如 10 年前那种占用面积小得多的内核,这是否有利于在一块模板上集成大量很小的内核呢?事实证明,这样做有其不利的一面:执行今天的程序时性能不佳。因此,人们更喜欢今天的乱序执行内核。但是,如果把它们混合起来——把一些小内核和一些大内核放在一起,又会怎样呢?这很可能是多核处理器未来的发展方向但近期内还不会如此。我们在市场上已经有了四核处理器,我估计我们还会有八核、十六核处理器,随着这一趋势,把数百个内核集成在一起会成为大势所趋。

我认为不会出现太多全由小内核构成的处理器,但大小内核搭配组合的想法会很有吸引力;这称为异构计算。我认为这是一个值得关注的重要趋势,未来的多核技术也许会朝着这个方向发展,到时候我们需要为它编写程序,因此,今后谈到编程时我们还会深入讨论这个问题。

多核处理器有前途吗?

了解多核处理器的功耗、内存和并行指令集。

了解任务和数据并行

任务和数据并行之间的差异,以及如何避免阿姆达尔定律施加的限制。

必须了解的三个并行问题

英特尔James Reinders称,在管理多核系统方面,可扩展性、正确性和可维护性全都是至关重要的因素。

并行之抽象方法

处理原始线程是并行应该避免的问题之一。抽象化为解决这个问题提供了一种方法……

成功的并行编程

说明一些开发者在为并行系统编程,力求改善工作效率时重复出现的话题。

并行编程基础:第一部分

了解线程构造块的核心算法——一个并行编程C++模板库。

并行编程基础:第二部分

英特尔的James Reinders深入探究线程建构基础——一个并行编程C++模板库。

并行编程之API

英特尔James Reinders解释消息传递接口(MPI)——一个并行API。



About Us | Contact Us | Membership | RSS Feeds
Privacy Policy | Terms of Use

Copyright © 2007 CNET Networks, Inc. All rights reserved.

Other CNET Networks sites: ZDNet Australia | CNET.com.au | AppleSource
Builder.com | Builder UK | TechRepublic