|
本帖最后由 PRAM 于 2011-5-26 16:29 编辑
以GPU厂商为代表的另一派,主张把晶体管用于设计更多的CPU核心。GPU主要用于三维图形运算和多媒体。就算使用很大的CPU缓存,这些应用的CPU缓存失误率还是非常高。因此GPU厂商希望设计更多的CPU核心。目前一块GPU芯片上的计算核心数目已经超过128个,而且还在增加。一些GPU厂商把核心的数目作为广告和推销手段,误导市场,让人们以为“核心数目越多越先进”,一些非主流芯片甚至吹嘘有上千个核心。GPU的这些核心利用率是非常低的。“内存墙”问题在三维图形和多媒体应用上更加严重。GPU回避“内存墙”主要靠两个手段:采用多端口的CPU缓存和专门的软件编程方法。
以NVidia为代表的GPU芯片大量采用多端口的缓存设计。GPU缓存容量不大,但是有多个读写端口,提高了缓存的带宽,这样做的代价是大大地增加了芯片的功耗。GPU芯片的速度大概在800MHz左右,但是功耗明显比2GHz的CPU芯片还要高。由GPU功耗太高引起的计算机故障的报道比比皆是。多端口的缓存对性能有小小的帮助,GPU发挥性能主要还是靠专门的软件编程模式。由于GPU的主要应用在三维图形处理,编程非常特殊。以NVidia为例,GPU厂商提出了针对GPU的专门编程模式CUDA。CUDA的目的是提高程序的并行度,从而提高GPU核心的利用率。这样做代价是很大的。首先,这极大地增加了软件设计的难度,因为能够掌握CUDA编程模式的工程师非常少;其次,它限制了GPU应用范围,NVidia想把GPU作为通用平台推广,推出了GPGPU(通用GPU)的概念,但是响应寥寥;最后,专门的为GPU优化的编程模式改动非常困难,稍加改动,性能就可能大幅下降,软件移植非常困难。IBM和Intel都曾经尝试过GPU的这种多核心设计思路。IBM的CELL芯片有一个大的CPU核心,8个小的核心,一共9个核心,在当时是最多核心的CPU。IBM和索尼对CELL芯片寄予很大的希望,投资巨大,仍然以市场失败告终。CELL芯片后,IBM再也没有做超过4核的CPU。Intel也提出过有几十个核心的Larrabee芯片计划,在巨资投入,多年研发后,达不到预期的效果,现在该计划已经取消。
大缓存与多核这两种截然相反的CPU设计思路都行不通,就因为“内存墙”是性能的根本瓶颈。不突破“内存墙”一切都是空谈,所以说我们的发现和发明是性能瓶颈的根本突破。
{lol:] |
|