DX 10显卡战硝烟燃起——NVIDIA GeForce 8800和ATI R600前瞻

技术空间

随着Vista一天天的临近,DirectX10也引起了游戏玩家和硬件发烧友的浓厚兴趣。而对NVIDIA和ATI这两大显卡巨头来说,DirectX10的问世意味着一个全新的显卡时代即将到来。

GPU的全新战场——DirectX 10

就在Windows Vista还称作Longhorn的时候,DirectX 10(以下简称DX10)就常被人们提及。在新操作系统开发的这几年时间内,DX10一度被更名为WGF(Windows Graphics Foundation,视窗图形基础),后来微软考虑到DirectX的知名度,才将这个划时代的API(应用程序接口)命名为DX10。

相比DirectX 9(以下简称DX9),DX10最大的改变就是采用了统一渲染架构(Unified Shader Architecture),所谓Unified Shader,就是把Vertex Shader(顶点渲染单元,以下简称VS)和Pixel Shader(像素渲染单元,以下简称PS)从原来的固定单元中抽像出来,然后用统一的方法进行管理。对于程序员来说在编写游戏的时候根本不需要分别对PS和VS进行编程,因为所有的Unified Shader单元都能够根据需要在顶点和像素、几何处理间进行切换。

除此以外,在DX10中新加入的几何渲染单元(Geometry Shader,以下简称GS)也是该API的一大飞跃。几何渲染单元被附加在顶点渲染单元之后,但它并不像顶点渲染单元那样输出一个个顶点,而是以图元作为处理对象。借助丰富的图元类型支持,几何渲染单元可以让GPU提供更精细的模型细节。当然,DX10还在运行效率和开发速度方面进行大量的革新。

小知识:图元在层次上比顶点高一级,它由一个或多个顶点构成。由单个顶点组成的图元被称为“点”,由两个顶点组成的图元被称为“线”,由三个顶点组成的图元被称为“三角形”。几何渲染单元支持点、线、三角形、带邻接点的线、带邻接点的三角形等多种图元类型,它一次最多可处理六个顶点。

44-d8-02.jpg
DirectX 10的渲染流程示意图

DX10毕竟只是个API,如果缺少硬件的支持就会变得毫无用处。为了在DX10时代占得先机,NVIDIA和ATI都加紧了各自DX10 GPU的开发,NVIDIA GeForce 8800和ATI R600正是开路先锋。

DX10先行者——NVIDIA GeForce 8800

正当许多人翘首以待ATI的统一渲染架构的R600的时候,NVIDIA G80已悄悄向我们走来。在G80开发消息传出的初期,许多人认为G80可能采用VS与PS(像素渲染单元)分离结构,而非DX10倡导的统一渲染架构。直到最近G80的消息纷纷曝光的时候,人们才惊讶地发现,代号G80的GeForce 8800 GPU采用的是不折不扣的统一渲染架构!

1.灵活的统一渲染架构

GeForce 8800GTX拥有128个Stream Processor(着色单元),而GeForce 8800GTS则配备了96个Stream Processor。所谓的Stream Processor,也就是既可以完成VS的工作,也可以完成GS和PS的最基本GPU处理单位。这些Stream Processor可以根据需要组成任意VS/PS比例。例如在VS密集处理的领域,游戏开发者可以让96个Stream Processor处理VS指令,剩下的处理PS指令。到了PS“密集”的应用场合,更多的Stream Processor被分配去执行PS运算,从而提升性能。

必须指出的是,当今所有采用统一渲染架构的GPU,在DX9应用中几乎都采用了模拟的方式。也就是说用Stream Processor来模拟VS和PS,这样一来就需要驱动程序在后台进行大量的操作和优化。而用这种方式模拟的DX9应用注定不会有太强的性能。在初步测试中,G80在运行除3DMark06外的各种DX9应用程序时,所表现出来的性能并没有大幅领先GeForce 7950GX2。随着驱动程序的不断改进,G80的DX9运行速度将会得到突飞猛进的提升。另外,GeForce 8800还提供了对128bit FP(浮点)精度HDR(高动态范围)的支持,并且可以在打开HDR时提供全屏抗锯齿功能。值得一提的是,GeForce 8800GTX的内核时钟频率尽管只有575MHz,但是渲染部分的运行速度却达到了1350MHz!至于GeForce 8800GTS,在核心频率为500MHz的情况下,渲染部分速度也达到了1200MHz。

除了采用统一渲染架构,完全支持DX9之外,GeForce 8800中的ALU(Arithmetic Logic Unit,算术逻辑单元)设计也耐人寻味。根据7亿规模的晶体管数量推断,我们认为G80很可能采用了128个ALU对应128个Stream Processor的设计。NVIDIA在官方文档中把这样的GPU内部架构设计称作NVIDIA Lumenex架构——沿用多年的CineFX终于走到了尽头。

有了众多的Stream Processor和ALU,GPU内部的线程管理和并发线程数量就成了决定GPU效率的关键。在GeForce 8800中,NVIDIA引入了被称作GigaThread多线程发送与管理技术,通过这样的技术,G80就可以并行处理大量的线程,并且保持较高的效率。

2.显存仍采用GDDR3

在进入Unified Shader时代后,GPU对于显存带宽的需求也较以往更大。为此NVIDIA选择了折衷的方案,即采用了384bit的显存控制器和和高速GDDR3 786MB显存,以在成本和性能上获得平衡。许多人会惊讶为什么G80不采用性能更强的GDDR4显存?这问题就出在GDDR4内存的惊人功耗上。初期的GDDR4内存发热量惊人,而且产能也并不充足。为保守起见,NVIDIA最终还是选择了GDDR3显存。

GeForce 8800GTX搭配了384bit位宽、786MB容量、1.8GHz速度的GDDR3显存。而GeForce 8800GTS只有320bit位宽、640MB、1.6GHz速度的GDDR3显存。全系列的GeForce 8800显卡的GDDR3显存都由Samsung(三星)提供,GeForce 8800GTX采用的GDDR3显存芯片速度为1ns。

另一方面,在G80的各种参数中,赫然有被称作Quantum Effect技术的GPU物理加速方案。NVIDIA在文档中表示,通过这个技术,GPU就可以执行众多复杂的物理计算而不必占用CPU资源,极大的提升游戏性能。

从G80的内部体系架构中我们不难看出,在采用统一渲染机构之后,每个Stream Processor都可以处理比DX9时代复杂的指令,而没有把这些单元简单地称作Shader,恐怕也是基于这样的考虑。由于物理计算的海量并行性与GPU执行的图形操作大致相仿,所以在DX10 GPU时代,用GPU来执行物理运算将会更加容易和高效。在物理运算强调的浮点性能中G80也可以轻易地获得超过400GFlops的性能,要知道AGEIA的PPU的浮点性能也不过30GFlops。所以在驱动程序和游戏开发者的支持下,要实现物理加速,并不是一件困难的事情。

44-d8-05.jpg
GeForce 8800GTX显卡
44-d8-07.jpg
G80芯片外观

3.分离的RAMDAC

GeForce 8800系列显卡还率先采用了外置RAMDAC的设计。在拆开GeForce 8800显卡的散热器之后,我们可以发现靠近DVI接口的地方有一片和NV44面积相当的芯片。这块芯片正是由GPU内部独立出去的RAMDAC以及显示信号输入输出功能。

由于GeForce 8800的Stream Processor部分的工作频率达到了1.35GHz,如果此时再将模拟部分的RAMDAC整合在GPU芯片内部,不仅在成本上无法控制,在输出质量上更是难尽如人意。为此NVIDIA将G80的模拟部分独立出来,做成单独的芯片。这个被称作NVIO的芯片集成了RAMDAC、10bit色彩精度的信号输入输出、双Dual-Link DVI支持及HDCP等功能。

44-d8-06.jpg
GeForce 8800系列显卡上外置RAMDAC芯片

DX10狙击手——ATI R600

和NVIDIA GeForce 8800即将开卖相比,ATI的R600的开发进度可谓落后不少。其实,早在微软推出Xbox360时,ATI就为这部游戏机设计了全球第一款统一渲染架构的GPU——ATI C1(Xenon)。这款GPU拥有被分为3组的48个渲染单元,同时还搭配了4条材质渲染管线,更让人惊叹的是,CI竟然拥有10MB的eRAM(嵌入式内存)。

在随后的众多消息中,ATI都透露R600将会是C1的扩大版。ATI首先将C1的Shader处理器扩大两倍,使得R600拥有96个渲染单元。同时材质渲染管线的数量也相应增加两倍,达到了8条。这样一来,ATI的R600的渲染单元就与NVIDIA的G80相当接近。

另一方面,在ALU的指令并行方面,ATI很可能采用3D+1D的ALU设计。这样ALU在理想情况下就可以最少并行处理2条指令。在线程管理方面,R600还将会使用加强的Ultra-Threading,通过一个庞大的联合线程计数器、小线程单元、专门的分歧执行单元,和一个巨大的、高性能任务堆栈列表,使得GPU在高速的动态流控制和扩展并行处理性能间取得最好的平衡。

对于许多人翘首以待的eRAM,在R600上恐怕就不得不舍弃了。事实上,eRAM需要驱动程序的极大优化才能发挥惊人的威力。对于Xbox360这样的封闭系统来说,要对所有软件进行优化设计并不困难,但是面对开放平台的PC做起来就相当困难了。R600抛弃eRAM还有个重要因素在于当今只有NEC能够生产eRAM,eRAM的成本相当惊人,且产量也不大。要在桌面图形卡上运用eRAM更多的只是增加成本而已。

为了解决DX10应用对显存性能的需求,ATI破天荒在R600中引入了512bit显存控制器!这里的512bit和R580中的512bit 内部环形总线不同,R600拥有的将会是不折不扣的512bit显存总线。因此可以搭配512bit 1GB显存,甚至更多。为此,R600的PCB面积增大将会再创纪录。

尽管让NVIDIA抢得了先机,但是R600在多卡并行和物理计算方面也毫不含糊。R600将会延续RV570采用的原生Crossfire交叉火力多卡并行方案,在PCB上提供两个一共12bit多卡并行接口以实现双卡并行。除此以外,R600很可能支持3卡Crossfire并行方案,其中1片显卡会被专门用于处理物理计算,而剩下的两个执行图形运算。这样一来,3卡交叉火力的灵活性和功能都会有明显的进步。

R600将会采用65nm制造工艺,所以在GPU面积上将会稍小于G80。可是由于R600集成的512bit显存控制器有着惊人的晶体管占用,加上复杂的ALU架构,所以最终R600的晶体管数量和功耗会和G80相当,甚至超过。根据近期的消息透露,R600的整体功耗明显超过GeForce 8800,至少需要500W的电源才能让这款显卡毫无障碍地运行。相比之下,GeForce 8800GTX只需要450W电源即可运行。

结语

毫无疑问,随着GeForce 8800系列显卡的问世,ATI和NVIDIA之间的市场争夺战开始进入了DX10的崭新时代。在Windows Vista问世之后,DX10更会与之伴随走入千家万户。在DX10带来的以假乱真的3D世界背后,一场新的显卡战役正悄悄打响。