从99年的NVIDIA的Geforce256开始,NVIDIA在其后的近10年间相继推出了以Geforce2、Geforce3、Geforce4 Ti、GeForce6800、GeForce 7800、GeForce 8800为代表的产品,GPU 的计算能力也在过去10年间有了飞速的发展,基本上是平均6个月,就有性能翻倍的产品面市。下面,我们不妨对近年GPU的发展予以简单回顾:
一、GPU发展历史回顾
1999年~2000年,此时市场上的GPU主要以NVIDIA的Geforce256和Geforce2,ATI的Radeon7500,以及S3的Savage3D为代表。这期间的GPU将T&L功能从CPU分离出来,实现了高速的顶点变换。
2001年,主导市场的GPU主要有NVIDIA的Geforce3和Geforce4 Ti,还有ATI的Radeon8500。2001年间的GPU首次引入了可编程性,即顶点级(vertex stage)的可操作性,也就是说,应用程序调用一组自定义指令序列来处理顶点数据,并可以将图形硬件的流水线作为流处理器来解释。
2003年,NVIDIA的GeforceFX,ATI的Radeon9700是最主要的产品。象素级和顶点级操作的可编程性得到了提升,这时的GPU也实现了对浮点格式的纹理的支持,不限制在[0,1]范围内。Cg语言在内的高级语言,在这一代GPU开始得到使用。
2004年,市场上主要以 GeForce6800为代表,这一代GPU,顶点程序可以直接访问纹理,支持动态分支;象素着色器开始支持分支操作,包括循环和子函数调用,TMU支持64位浮点纹理的过滤和混合,ROP(象素输出单元)支持MRT(多目标渲染)。
2006年,市场的领头羊非NVIDIA GeForce 7800莫属,该产品在架构上做了许多改良,包括重新设计的顶点着色单元缩短了执行流程,新的像素着色单元提高了浮点运算速度等等。
2007年,以GeForce 8800为代表, G80核心拥有令人惊叹的6.81亿晶体管。07年底,NVIDIA又推出了G98核心, 对于H.264实现了完全硬件解码支持,对于VC-1实现了部分硬件解码支持,说明GPU功能越来越多,为CPU分担了越来越多的工作。
如上所述,正是由于GPU厂商的持续努力,今天的GPU性能已经非常的强大,也开始承担越来越多传统上CPU所做的工作。GPU 的能力今非昔比,加上近年,芯片的发展趋势趋向于融合,GPU挑战CPU的态势已然确定。双方阵营剑拔弩张,一场CPU和GPU的大战箭在弦上。
二、GPU强势挑战CPU
想要挑战CPU,绝非易事。不论是RISC阵营的 Sparc和 Power,还是CISC阵营的Intel和AMD,CPU各阵营在过去30年的发展中,已经拥有了极高的业界声誉和技术积累。另外作为PC机的消费者,我们依旧习惯使用CPU,对于GPU电脑还非常陌生。 面对强大的CPU 巨头们,GPU挑战CPU胜算到底有几成?GPU、CPU之间是淘汰另一方还是走向融合?下面我们就一起从技术角度予以分析。
首先是主频。作为CPU关注度最高的指标,主频的大小对于CPU的表现起着至关重要的作用。同时,主频也是GPU的关键指标之一。但就主频来看,现在很多CPU的主频都可以达到3GHz以上,而GPU则普遍在500~600MHz。表面上看起来,好像CPU很领先,但实际上,一些GPU的主频近年也已经达到了2GHz甚至更高,相当接近CPU的水平。而从另一方面考虑,CPU主频倾向于较高的原因也在于CPU、GPU的架构有较大区别。
第二,处理器微架构。CPU和GPU的设计初衷不一样,也导致了二者拥有不同的处理器微架构。对于CPU而言,程序计算的平衡性至关重要,毕竟CPU是整个计算机的心脏,因此必须兼顾程序执行和数据运算的并行性、通用性,不会在某个指标方面特别突出或者特别薄弱。另外,CPU的设计思路一直是这样:单核CPU的设计是尽快完成一项任务,然后再完成下一项,而多核比如4核CPU也是一样,尽快完成4项任务,然后去完成另外4项。但是GPU却不一样,GPU 必须同时完成成千上万的任务,因此并行计算对于GPU的设计至关重要——相对于CPU,GPU非常擅长于图形类矩阵运算以及非图形类并行数值计算,GPU 的浮点运算能力也非常出众。
简单的说,CPU是串行计算的领先者,而GPU是并行计算的领先者。CPU在操作系统、系统软件、应用程序、通用计算、系统控制等领域有着较深的技术功底,但是最近几年,CPU的主导地位开始被GPU强势挑战。因为,GPU也开始支持各种复杂的控制指令,例如条件转移、分支、循环和子程序调用等等,GPU在其他方面的进步幅度是非常大的。
NVIDIA更是在推出了颠覆的GPU系列计算机,以其高性能赢得了不少目光,并且直接把矛头指向了CPU。GPU早已不是10年前只能仰视CPU的边缘化产品了,随着各种性能的大幅提升,如今GPU已经有能力与CPU在市场上一决高下。挑战归挑战,技术优势归技术优势,毕竟面对那些CPU巨头, GPU只是后起之秀,GPU究竟能赢得多少信赖,GPU近年的发展究竟是不是顺利呢?下面,我们就来解答这些疑问。
1) NVIDIA的Telsa和CUDA环境
我们上面提到的NVIDIA推出的GPU计算机,实际就是指基于Tesla芯片的产品,Tesla是早些时候NVIDIA Quadro Plex的延续。不过,与Quadro Plex有所不同,Tesla面对的客户更加广泛,包括了从石油和天然气产业、金融、医药一直到科研领域的HPC,而且其产品设计也大大的超越了Quadro Plex。虽然目前还较少出现在普通PC上,但这也并不妨碍我们了解Tesla的技术特点。
具体来说,Tesla对比Quadro Plex有以下几个特点。第一,Tesla拥有128个运算处理核心的大量多执行绪架构。第二,Tesla采用C语言的绘图处理器开发环境。第三 Tesla提供完整的开发工具套件。
其中特别值得一提的是,Tesla的C语言开发环境及开发工具包——CUDA(Compute Unified Device Architecture)和CUDA工具包。CUDA使得Tesla可以用于图像计算以外的目的。这个项目本身非常令人兴奋,因为它开源的特质,降低了GPU计算的应用门槛。但是我们也必须说,CUDA推出的时间并不长,还处在发展的初级阶段,编程环境也不如CPU完善。何时会有足够多的用户和行业成为CUDA的一员,我们还有待观察。
2)AMD的Fusion
NVIDIA的GPU攻势愈发猛烈,与此同时AMD在并购了ATI之后也没有停止脚步。并购完成之后,AMD就开始研发融合了GPU功能的CPU,取名为Fusion。Fusion的汉语意思就是融合,顾名思义,未来的AMD的Fusion就将融合CPU与GPU的功能特性和优点。只是可惜,目前Fusion的很多细节AMD并没有透露,我们只知道Fusion以Phenom为根基进行设计。样本预计于08年末、09年初完成。虽然暂时没有成品,但是我们还是发现AMD对未来处理器融将合的大方向判断。
3)Intel的Larrabee
Intel对于GPU的兴趣其实由来已久,Intel计划在08年末、09年初推出一款代号为Larrabee的GPU。由于产品细节披露得较为有限,我们只知道Larrabee将拥有16个x86内核,一个可编程流水线,采用GDDR5显存颗粒,和PCI-E二代接口。具体Intel产GPU前景会怎样,我们不好估计,但是面对称霸GPU数十年的NVIDIA和AMD ATI,Intel的GPU势必将面临一场硬仗。
4)其他GPU厂商的发展
今天,我们看到最多的是AMD ATI和NVIDIA的竞争。但事实上,GPU市场的硝烟从来就没停歇过。S3被VIA收购,TRIDENT被SIS收购,3DFX被NVIDIA收购 ,XGI又被ATI收购,随后ATI又被AMD并购。显赫一时的TRIDENT、3DFX、Matrox、XGI等等厂商都逐渐退出了GPU舞台。在竞争惨烈的GPU领域,厂商的发展,往往几年之间就会有翻盘式的变化。
四、小结——GPU在高性能计算领域的挑战
最近GPU的确展现出了咄咄逼人的气势。GPU未来能取代CPU吗?我想答案无外乎3种:第一,未来除了Power、Sparc、Intel和AMD之外,Tesla可能会继续发展成为其中一个主流芯片,以GPU取代CPU的大部分功能和用途。第二,GPU未来的发展也可能像AMD Fusion计划那样,CPU和GPU融合到了一起,在芯片层各自发挥各自的作用。第三,GPU依旧继续以辅助CPU的方式独立存在,比如作为专门针对图形应用的加速器存在,不过更多的计算任务交由GPU处理。
其实不管未来GPU朝哪一个发展,GPU对计算机的影响将越来越大,这一点似乎没有人怀疑。而多年来,GPU由于结构比CPU简单,其运算速度的提升也一直比CPU提升得快,这也将GPU的能力推向比肩CPU的新高度。
当然,我们也不得不说,GPU目前还是有一些问题,比如GPU串行计算环节的薄弱,再比如NVIDIA开发环境CUDA的时间也并不够长,参与其中的人和厂商数量与CPU相比还有一定的差距。但是不管怎么讲,GPU现在的影响力已经令人惊叹,GPU的发展速度也令人始料未及。GPU与CPU之间的大战已经揭幕,谁能胜出?还是让时间告诉我们答案吧。