在两年前,NVIDIA与Intel打了一场GPU与CPU谁更重要的口水战,表面上看,这场口水战只是双方交恶的意气之争,但实际上体现了计算业界的根本性分歧:CPU更适合通用性质的任务处理,而GPU更适合高并行的密集数学计算,这两者未来谁会更重要呢? 争论虽然没有得出答案,但Intel用行动来表达自己的野心:Larrabee处理器高调浮出水面,它针对高并行的流计算,当然也支持图形渲染,更关键的是Larrabee采用与X86类似的指令集来编程,摆脱了对固定式图形API的限制,从而能够实现更广泛的任务处理。Larrabee最后并没有获得成功,显然Intel在这个领域缺乏高超的设计水平,原型产品功耗巨大,性能又远逊于对手,强硬推出只是自取其辱。现在Intel暂时放弃了Larabee,放缓进入GPU领域的步伐,NVIDIA和AMD大大松了一口气,但Larrabee所要表达的意图却在图形业界开始被精确呈现。
Cypress与Fermi,向左走,向右走 一个像样的服装设计师,在设计自己作品的时候,总会先思考这些因素:未来将流行哪一种风格?客户又会喜欢哪一种款式?这个命题可以抽象出两种内涵:其一就是作品要针对哪一种应用,其二就是这种应用将采用何种形态来实现?事实上,新一代GPU的设计,也完全涵盖了这两个方面。
在图形领域,AMD的地位与NVIDIA“几乎”对等,“几乎”的意思就是还差那么一点点,至少我们可以看到,AMD在图形驱动的支持方面与对手差距甚远,NVIDIA可以为Windows、Linux和UNIX同时提供驱动,过气的老显卡也从未被抛弃;而AMD只能在Windows平台中保持对等,而且那些一两年前的GPU就得不到妥善的支持,当然更别提它的专业显卡驱动了。
另一方面,AMD无法像NVIDIA一样提供类似CUDA、PhysX这样的丰富软件平台,这让它在通用加速领域束手束脚,而这个领域的落后也很难朝夕赶上。再者,在单GPU芯片的设计方面,AMD一直缺乏NVIDIA这样的功底,迄今为止AMD都没有在晶体管数量方面超过NVIDIA—对结构相对固定的GPU来说,晶体管集成度在多数时候都代表性能的高低。
AMD很清楚自身的缺点,所以它采取灵活的策略来对付对手。显然,AMD的目标只是图形市场,希望能够在独立显卡领域胜过对手,同时图形芯片组再为自家的AMD64平台增加竞争力。这种立意决定了AMD在产品的设计上专注于图形性能本身,并且保持稳健的策略—在R600时代开始之前,AMD认为开发大型GPU芯片的难度越来越大,导致成本居高不下,同时市场铺设动作又非常迟缓。为此,AMD在自家CrossFire交火技术的基础上,制定了多芯片的开发策略。
![]()
以二敌一,开发中等性能GPU,再通过数量联合来实现高端性能,
这是一种代价最低,升级最容易的做法。
多芯片显卡的思想很简单,即GPU芯片不再追求全能和强劲,而只是实现全能性,保证对流行规格率先提供支持,其次便是芯片规模不要太大,以免给制造带来负担。同时,还要保证较好的功耗水准,在满足上述目标的前提下,实现最好的性能。显然,这种思路开发的GPU速度一定不是最快,但却可以在经济效益上做到最好,可以在短时间就上市。至于高端显卡,则可以通过双芯片,甚至四芯片并联的方法进行,以二敌一,来获得性能上的优势。
这种策略令AMD摆脱了新品推出不利的困境,并在商业上获得成功—尤其是在RV770 时代,NVIDIA的GT200完全失去了反击之力,现在AMD又在DirecX11显卡的争霸赛中,整整领先NVIDIA半年多。2009年9月,AMD发布代号为“Cypress(也就是RV870)”的Radeon HD 5870/5850系列显卡,率先进入DirectX11时代,低阶版的其他HD5000系列也很快上市,到现在为止,AMD的Radeon HD 5000系列已代替上一代产品成为主流。但NVIDIA仍只能拿GT200架构的GeForce GTX280/295应对,GT200其实只是2006年底发布的G80的延续,在规格方面比较落伍。很明显,NVIDIA目前的显卡产品不论在规格上还是硬件性能上都全面落败。相信这也是NVIDIA在GeForce FX5800以后遭遇的最大危机。
![]()
2009年9月发布的Radeon HD 5870,是第一款支持DirectX 11的GPU。
然而,NVIDIA高层和科学家们似乎不以为然,将全部注意力放在即将出炉的Fermi身上,他们始终保持高昂的热情,对这款革命性的GPU保持坚定信念。这种信念的内在动力,就在于Fermi与传统GPU已有了根本性的区别。在Fermi的开发工作启动之初,NVIDIA还在图形市场上占据显著优势,它所考虑的并不仅仅是保住自己的王座,而是希望能将GPU延伸到更广泛的领域,获得新的增长点。由于欠缺CPU业务,NVIDIA必须顾虑未来面临Intel和AMD的全平台竞争,很明显,假如NVIDIA只有传统的GPU,那么未来它必定是死路一条—Intel和AMD在某一天很可能甩开业界标准来打造属于自己的封闭平台,届时NVIDIA即便拥有世界上最好的图形技术,那也毫无用处。
有鉴于此,NVIDIA要求它们的新一代产品要更加全能,能够胜任广阔的密集计算要求,而不仅仅只是用作图形渲染。NVIDIA希望它能够进入PC和游戏机之外的更多设备中,比如超级计算机、平板电视以及未来任何需要数字视觉的应用领域。
Fermi处理器,脱离GPU羁绊,专为通用而生 然而,现行的G80/GT200架构虽然具有非常不错的灵活性,但远不足以完成如此重大的使命。NVIDIA的高层作出激进的决策:那就是全部推倒重来—这就是Fermi的出台背景。Fermi被打造成一款高度灵活的处理器,除了图形渲染的基本职能,它还整合了PhysX物理处理器以及光线追踪处理器,同时让每个计算单元都拥有自己的缓存系统,可以高效地完成高负荷的浮点计算任务,比如对视频的实时优化编码,执行“任意妄为”地渲染指令、DNA排序、宇宙探索、质数计算等等,当然还包括物理计算和光线追踪计算—这些过去是CPU的专属应用。
用户也许会发问:“从CPU手中抢到这些任务,对我们会有什么好处么?会不会像那些CPU整合GPU之类的噱头而已?”其实这种好处相当显著:CPU所执行的是X86指令,程序可以任意编写,完全没有使用限制,灵活是它的最大优点;另外,CPU是被设计来执行诸如任务处理之类的整数任务,固定式的浮点计算并非其特长,虽然CPU设计者始终不遗余力增强它的浮点性能。与此不同,Fermi采用一种高度并行的计算结构,它拥有多达512个CUDA计算单元,每个单元都有缓存,作为一个基本的计算单位,这些单元可以同时进行浮点计算的处理。并行度远非CPU可比—AMD的GPU虽然有更多的流处理单元,但这些单元并没有缓存系统,只是被动地接受上级数据计算后输出,通用性非常有限,加上AMD并没有提供理想的开发工具,令开发者无从下手。
![]()
Fermi的CUDA核心,拥有完整的浮点和整数计算单元,
不再在整数计算方面瘸腿,具有高度自主性。
其次,Fermi的每个CUDA核心,都在浮点计算单元之外加上整数处理单元,可执行完整的32位整数计算任务,而后者在过去只能通过模拟实现,且仅能计算24-bit整数乘法而已;同时Fermi引入了复合乘加运算机制(Fused Multiply-Add,简称FMA),每个周期可执行512单精度浮点或256个双精度浮点数运算,而上一代G200仅能支持单精度的FMA操作。当然,所有这些FMA运算都基于IEEE 754-2008浮点算法,计算结果不会出现差错。此外,Fermi的双精度浮点(FP64)性能也大大提升,峰值执行率可以达到单精度浮点(FP32)的1/2,而过去只有1/8;AMD Cypress/RV870核心的双精度浮点性能也只有单精度浮点的1/5—例如Radeon HD 5870的单精度性能达到2.72TFlops,但双精度处理时仅有544GFlops。
第三,Fermi引入了真正的缓存设计,每32个CUDA核心被配置成一组SM(Streaming Multiprocessor)流处理器,每组SM拥有64KB可配置内存,可以根据任务的性质部署成16KB共享内存加48KB一级缓存,或者48KB共享内存加16KB一级缓存的形式,从而满足不同类型程序的需要。此外,整个芯片还共享768KB的二级缓存,方便SM计算单元的输入输出—这些显然都是为通用计算而准备。
![]()
Fermi拥有16组SM流处理器,每组都具有自己的缓存
和内存系统,能够独立地完成各种密集计算应用。
计算核心的大幅增强以及缓存系统的纳入,让Fermi成为一枚高度通用的浮点处理器而非传统的GPU。其实,从数学角度来看,无论是图形渲染的浮点运算,还是物理处理、光线追踪、视频编码处理、DNA排序还是其它的数学计算,在本质上都是相同的单精度浮点或双精度浮点计算,最基础的数学计算机制也完全相同,区别仅在于采用不同的算法—如果算法可以用软件方式输入,GPU依照这种算法进行结构部署并处理,那么就可以实现了通用的浮点处理任务。我们可以打个简单的比喻:这个模式相当于将CPU内的浮点计算单元完全搬移出来,作适应性改造之后再放到GPU上面,同时大大增加它的数量—这就是NVIDIA Fermi的设计立意。
![]()
复杂的CUDA Core设计和缓存系统大大增加了Fermi的规模,
它的晶体管总量达到史无前例的30亿个,给制造工作带来巨大困难。
Fermi被打造成通用型浮点处理器,加上NVIDIA一向对性能要求极高,Fermi就不可避免地成为又一个巨无霸。在产品展示之时,外界咨询为何Fermi屡屡跳票,几乎创下NVIDIA新的历史。NVIDIA的高管不禁大吐苦水:要设计出这个超大超强的玩意实在是太难了!的确,Fermi需要为每个单元建构缓存系统,要确保如此众多的核心能够高效率地协作和共享,这种难度明显超出常规的多核处理器(目前的多核CPU最多只需要应对12核的协作)。NVIDIA高层与它们的科学家都深知Fermi的革命性,虽然产品屡屡因这样那样的问题跳票,但他们几乎不以为意,而对于未来始终充满自信。 |