Programming for Parallelism(1)——James Reinders

来源:互联网 发布:java中list多个列排序 编辑:程序博客网 时间:2024/06/07 17:33

这是个人对James Reinders 的 Programming for Parallelism 视频及文章的学习小结,有兴趣的同行可进入http://www.builder.com.cn/video_intel/video_intel.shtml

多核处理器有前途吗?

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

多核处理器将是一个长期发展方向。因此,我会简单谈谈原因,并讨论一下多核处理器的未来发展趋势,以及我们程序员需要注意的问题。

 

一、原因

首先:为什么要发展多核处理器?主要包括以下三个原因:

第一个原因是指令级并行性ILP。指令级并行性是指微处理器同时执行多条指令,以便提高工作速度的方法。当我们提高处理器的时钟频率时,处理器每次能找到并执行更多指令。但是要从现有程序中找到越来越多可以并行运行的指令是非常困难的,而且随着时钟频率的不断提高,指令级并行性的效果会越来越不明显。因此,随着时钟频率的不断提高,性能的提升不再像过去那样明显。因此,指令级并行性只是我们遇到的问题之一。

 

另一个原因是存储壁垒。处理器时钟频率的提升速度远远超过内存时钟频率,而且这一趋势还会延续。我们通过不断添加越来越大的高速缓存及其它技术,以便缓解这方面的一部分问题。而多核技术可以放慢提高处理器时钟频率的脚步,让情况不再继续恶化,因此,多核技术能真正解决这一问题。

 

此外还有功率

我们不妨做一次有趣的观察,取一个微处理器,然后从一个基线开始:比如,每消耗一个单位的电能,处理器产生一个单位的性能。一般来说,性能提升 13%,功耗会增加 73%。其前提条件是,使用同一个微处理器,且除了提高时钟频率外不做其它改动。

当然,过去我们总是对微处理器进行其它方面的改动,但就某一时间点而言,如果只是提高处理器的时钟频率来超频,功率就会大幅增加。如此看来并不划算。

我感兴趣的是,降频是一个切实可行的方法。如果你不在乎把处理器的性能降到 87%,这时消耗的功率是多少呢?答案是大约原来的一半。由此很容易想到一个方法:我们何不把两个处理器放在一起,其功率与原来大致相当,而性能却能提升 73%。

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

二、多核的未来

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

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

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

原创粉丝点击