● 万神殿之战
DirectX 9时代之所以能够成为GPU发展历程中最具活力的时代,来自设计思路、理念以及设计者运作能力的激烈碰撞绝对是最重要的因素。几乎每一次架构更迭都有属于自己的故事,几乎每一代产品都能向我们诉说着成功与失败间的因果循环,这些故事和循环恰到好处的彼此相连,优美的为我们演绎了一连串“你方唱罢我登场”的好戏。
激动人心的对决开始于R300/NV30时代,作为一个时代大门的开启者,Radeon 9700Pro的地位是无可争议的,这款基于R300架构,拥有8条渲染管线的显卡不仅在图形史上首次真正意义上完整支持了DirectX 9.0(此前的Parhelia512未能提供Pixel Shader 2.0的支持),同时也向我们展现了一颗简洁高效的图形GPU所应该具有的全部素质。Radeon 9700Pro的每个Pixel Shader单元拥有完整的3D+1D mini ALU,这为其带来了相当理想的FP24 Shader吞吐能力,32个Temp Register的寄存器资源也让缓冲体系达到了相当充沛的程度,再加上在2002年底已经十分成熟的150纳米工艺,我们在Radeon 9700Pro身上看到了流畅简谐的美感,同时也收获了令人印象深刻的绝对性能/性能功耗比表现。
一个时代的经典——R300架构
与R300相比,和它同场竞技的NV30几乎完全站到了对立面上。它并不具备Pixel Shader 2.0中常规的处理3D+1D以及co-issue的能力,如果遇到坐标变换等需要非绑定4D运算的场合,NV30将一筹莫展。与此同时,NV30的Pixel Shader单元还不具备mini ALU,shader core后端包含的是两个完全符合DirectX8.1要求的FX12 combine,由于Pixel Shader2.0并不支持混合精度以及非浮点精度指令,所以这两个FX12 combine单元在DirectX 9的场合中完全就是废物。除此之外,整个NV30构架的Temp Register也被限定在了13个,仅比Pixel Shader2.0所要求的12个的最低要求多1个。Register被分为2个bank,这2个bank加在一起每周期内只能向shader core输送一个FP32或者两个FP16数据,由此造成的延迟是十分巨大的。在此基础上,本来就不够多的Register还会被拿去做Output Buffer,或者说Register与Output Buffer竟然使用了同一片存储区域,如果某个shader Program的数据需要调用2个FP32 Register或者4个FP16 Register,NV30的整体渲染效率就会开始大幅下降,这种下降还会随着调用寄存器的增多而不断加剧,当FP32 Register调用达到5个时,整个流水线的像素填充率只能达到理论值的1/4。如果说我们在R300身上看到的是充满了流畅和简洁的数学美感,那么在NV30身上,我们就只能看到非常全面的缺点和失败了……
NV30是NVIDIA进入Shader Model 2.0时代伊始便遭遇的一次重大挫折,这打击甚至险些让NVIDIA陷入一蹶不振当中。好在历史给了我们希望,在接下来的DirectX 9.0C时代,得失双方的角色发生了逆转。
还记得CeBIT2004上那个“完美支持DirectX 9.0,8条流水线,每条流水线2组TMU单元,单周期能够进行16次浮点像素操作及贴图操作,特别包含来自3Dfx未发布的rampage所使用的先进技术”的“NV40”么?这个看上去像是NV35放大一倍,同时有火星科技加持的东西几乎欺骗了全世界,不仅包括竞争对手ATI,全世界所有的玩家以及关注者,投资家,股评人,甚至还包括一部分尚未得到芯片的显卡厂商。相对于NV3X,NV40的改进可谓大刀阔斧。它彻底去掉了只属于DirectX 8的Combine,代之以具备完整功能mini ALU且支持co-issue的shader Unit 2,完全修正了愚蠢的Register bank问题、Output Buffer与Register使用同区域以及极少Register总量的错误,NV40构架可以做到同时调用4个FP32 Register或者8个FP 16 Register,像素填充率仍然不出现下降。有了这些改进,再加上整体放大的规模,NV40的各方面性能均可以达到NV35的2倍以上,在很多DirectX 9类得场合甚至可以达到4倍以上。数学的“简谐之美”,这一次回到了NVIDIA的头上。
NV40让ATI陷入了空前的尴尬和窘迫之中,因为根据之前多方面汇总的情报,ATI已经做出了确认NVIDIA要推出“完美支持DirectX 9.0,8条流水线,每条流水线2组TMU单元,单周期能够进行16次浮点像素操作及贴图操作,特别包含来自3Dfx未发布的rampage所使用的先进技术”的新构架的判断,同时将自己完整支持DirectX 9.0C的R400构架的研发速度控制在了一个相对缓慢的程度。在NV40发布前后,陷入巨大慌乱的ATI彻底乱了阵脚,本来计划中利用R350的结构基础+支持DirectX 9.0b,用来对付那个不存在的软弱对手的构架显然不能应付目前的局面了,ATI不得不转而寻求一种将先前的改进型构架放大规模到与NV40同等规模,同时尽可能多的提高频率的解决方案,以便让其获得与NV40抗衡的可能,这一方案就是与NV40规模相近的R420。仓促上阵的R420虽然得益于R3XX的优秀基因而具备了不错的Shader Modle2.0性能,但相对于NV40来说,在效能上始终乏善可陈,而且缺乏对Shader Modle3.0的支持让其注定无法与NV40同场竞技。毫无疑问,这一次的胜利者从ATI变成了NVIDIA。
这就是令人激动的DirectX 9时代,无论谁出现了失误,都能够在挫折之后迅速站起来重新投入战斗,并且在不久之后为我们奉上更为精彩的翻身之作。正是双方这种锲而不舍的对高效率图形架构的追求,造就了GPU十年历史中令人难以忘怀的部分。而与之相伴的情报战之类精彩的故事,则成了点缀这个时代的最好装饰。
值得纪念的DirectX 9时代在尾声处迎来了最终的高潮,在经过了第二代DirectX 9.0C架构的调整之后,ATI和NVIDIA分别选择了两条不同的前进道路,前者坚持技术为本的研发理念,而后者则更加务实的选择了在成本与性能之间谋求平衡的方向。最终,双方都在自己的道路上递交了令人满意的答卷,那就是属于G71/R580的“双赢”。
作为R520的继任者,R580拥有了Shader Modle3.0时代唯一的一次构架突破,它将传统的每个shader unit的ALU数量原先的1个提升到了3个,这一改动让R580在流水线总数不变的前提下拥有了3倍于R520的Shader Program吞吐能力。R580的构架设计赢得了大多数人,尤其是程序员们的好评,它强大的吞吐能力带来了极其强劲的Shader Modle3.0性能,同时也满足了当时通过更多像素效果来提升整体视觉效果的诉求。R580获得了性能层面的胜利,成了Shader Modle3.0时代当之无愧的单芯卡皇,在一片溢美的赞誉之声中,3:1“黄金构架”的一代天骄将ATI的声望推向了顶峰。
以逻辑结构而言,G71相较于前代的G70并没有太多变化,甚至与更早的NV40也没有太多规模以及co-issue能力之外的不同。它没有太多矫饰的特性,也不具备R580那样令人生畏的Shader吞吐能力。但就是这样一个看似羸弱的架构,却创造了NVIDIA历史上的销售记录。G71拥有比R580更为简单的Shader Unit,所以也就避开了后者因结构复杂以及互联需求激增而不得不面对的单元规模问题。配合co-issue能力,G71在特定的场合下的吞吐能力并没有落后R580多少,而其简单结构最终也转化成了尺寸更为小巧同时功耗表现更加出色的芯片。借此成功控制住成本的NVIDIA不仅赚取了大量的利润,同时也让市场接纳了这样一款注重性能功耗比表现的DirectX 9末代架构。而属于我们的DirectX 9时代,也以“一方赢得了技术层面的胜利和赞誉,一方赢得了市场的认可以及丰厚的回报”的结果画上了圆满的句号。
对决、谋略、失误后的励精图治、发展中的奋力上升……这就是属于GPU的DirectX 9时代。这是最好的时代,这是糟糕的时代,这是我们的时代。
三秦IT网的官方微信:更多资讯请关注:三秦IT网官方微博