●最具争议的作品——GeForce FX系列
公元2002年11月18日,Comdex 2002上,NVIDIA发布了研发代号NV30的GeForce FX,这也成了历史上Nvidia最具争议的一款产品。在回顾GeForce FX系列产品前,我们不妨先对NV30的问世背景做个简单介绍。
GeForce FX看上去很美好
众所周知,从DirectX 6时代确立优势地位以来,经过DirectX 7、8两代的发展,伴随着与微软的良好合作,NVIDIA成为了桌面PC独立显示核心的霸主,市场占有率成倍提升。在收购了3DFX以后,NVIDIA又通过GeForce 3、4两代产品在市场占有率方面击败了另一个对手ATI,而且,通过雄厚的技术实力,其每半年更新一代的做法也令对手疲于奔命。随着GeForce 4的成功,NVIDIA也处于历史上的最巅峰时期,产品不仅局限于PC显示核心,更延伸到主版芯片组,电视游戏机领域。
不过NVIDIA的一家独大也引起了一些业内人士的不满,他们指责NVIDIA是图形业内的INTEL。当然这也使与NVIDIA一贯合作良好的微软有所注意,尤其是NVIDIA在DirectX 8标准制定过程中的某些做法以及开发自主的CG语言等,使得微软不等不重新审视这个昔日的合作伙伴,两家公司的开始逐渐变得貌合神离。
后来,在NVIDIA为微软提供XBOX硬件解决方案的过程中,随着制造工艺的进步,硬件产品的制造成本是逐渐下降的,但是NVIDIA与微软的合同中并未考虑这一点,等到微软意识到这一点后,希望修改合同中的部分内容,但却遭到了NVIDIA的拒绝……
DX9第一代产品让NVIDIA一败涂地
作为回应,DirectX 9规范的制定过程中,竟然没有考虑任何NVIDIA的意见。在参考了ATI的部分提议后,微软将24BIT渲染精度、着重于Shader并行处理性能等作为DirectX 9的主要特点。除此之外,在年底发布的3DMARK03中,微软的影响也是显而易见,NVIDIA这时再也按耐不住,对3DMARK的开发公司Futuremark进行了公开的指责。
NVIDIA忙碌于芯片组的研发
再来看NVIDIA自身方面,2001年秋到2002年底也是其历史上最忙碌的一段时间。除了半年一次的GPU升级之外,NVIDIA还要根据合同为微软开发XBOX用SoundStorm音频处理芯片以及XBOX的主板。而且在主版芯片组领域,NVIDIA的压力更大,在经历了NForce遭受冷遇的开局后,无疑对雄心勃勃的NVIDIA打击不小。所以在NForce2上,NVIDIA倾尽全力,誓要在AMD平台与VIA一较高下。摊子铺的过开,也使NVIDIA开发资源变得分散。
综上所述,在这种大背景下,经过数次延期修改,并打破了NVIDIA过去半年发布一款核心的规律之后,NV30问世了。由于采用了3DFX的反锯齿技术,NVIDIA将其正式命名为GeForce FX 5800 Ultra,并于2003年初上市。
NV30像素管线部分采用了成熟的4X2架构,为当时领先的0.13微米制程制造,核心集成的晶体管数达到创纪录的1.25亿个,由于较高的默认频率,所以其功耗、与发热非常之大,为此NVIDIA使用了称为名为“FX Flow”的散热系统,包含一个铜制散热片、热管和换气装置。
“FX Flow”散热系统
GeForce FX 5800 Ultra使用Flip-Chip封装设计,频率提高到了惊人的500MHz。BGA和Flip-Chip封装方式的芯片,可以直接和插槽接触,缩短布线距离,同时也提高了信噪比,可以适应更高频率,并降低功耗。
Flip-Chip BGA 核心渲染架构方面,NV30首次引入了CineFX着色引擎。其中的Cine是Cinematic(电影般的)的缩写,而FX则表示其部分技术源自3DFX。CineFX的意思就是指新一代核心可以渲染出电影般的视觉效。
CineFX引擎
在CineFX着色引擎中,具有32个128位浮点处理器。并在PC图形核心历史上首次提供了128bit色彩精度的支持,并且可以在同一个着色程序中的不同色彩精度中切换。
SHADER规格对比
NV30的顶点着色单元较前代也有了质的飞跃,可以支持到Vertex Shader 2.0+,所能处理的最大指令数为65536,这一点远远高于DX9.0的规范。而且,初级的动态循环和分支指令的引入提高了着色单元的可编程性。像素着色单元支持Pixel Shader 2.0+,同样也超出了DX9.0规范,最大指令数提高到1024,对于每一个像素最大可进行16个纹理贴图操作,而且像素单元可以支持更多的高级指令,并且可以进行指令预判。总的来说,CineFX引擎支持更多的指令,因此可以带给开发者更大的发挥空间。
同时CineFX引擎也可以很好的支持NVIDIA的Cg(C for Graphics)编程语言,使得开发人员可以利用Cg语言而无需针对底层硬件进行编程,从而降低了图形编程的难度,可以更方便、快捷的开发出游戏所需要的渲染效果。
高度灵活的CG语言
在反锯齿方面,4X FSAA是NV30设计的中心,也是NV30硬件效率最高的操作。为了使4X FSAA运行更快,NV30在反锯齿设计上进行了重新制定,每个数据通道的宽度都为4X FSAA做了优化。同时,NV30还首次采用了Intellisample(智能采样)、(Adaptive Texture Filtering)自适应纹理过滤等技术一提供更好画面质量。
让人想入非非的渲染效果
在内存控制方面,NV30采用了4X32bit共128bit的位宽。由于采用了全新的DDR-II显存,所以NV30在GeForce 4的LMA II的基础上(Lightspeed Memory Architecture,光速内存结构)针对DDR-II做了相应的优化设计。这款内存控制器实际上是全新设计,对4X FASS进行了全速优化。ROP(光栅化处理器)、帧缓存等都是根据它来设计的。而且它运行在2X的核心频率上,可以充分利用DDR-II的特性。
DDR-II SDRAM
GeForce FX 5800 Ultra的DDR-II SDRAM显存运行频率为1GHz,不过由于是128BIT位宽,和对手的Radeon 9700相比,其峰值带宽落后25%。但由于新型LMA内存控制器提高了Z-culling和压缩方面的性能,顶点、纹理和Z轴数据都进行了压缩以节省带宽,在程序配合较好的情况下,NV30可以更有效的使用带宽。再加上Z-occlusion和纹理压缩等技术,GeForce FX 5800 Ultra的实际最大带宽可以达到20GB/s。
虽然在2002年11月18日NV30就已经发布,但是由于0.13微米制程等因素的延误,直到2003年2月,GeForce FX 5800 Ultra才正式上市,而且由于当时0.13微米工艺并不完善以及较高的核心频率,导致NV30芯片发热量极大,必须采用“FX Flow"散热系统。为了保证核心以及DDRII显存在高达500MHz的频率下稳定工作,nVidia不等不史无前例的采用12层PCB设计,同时供电电路的做工用料也是非常豪华,再加上DDRII显存在当时的价格也是十分昂贵,这些因素使得GeForce FX 5800 Ultra的成本异常之高且功耗也十分巨大。所以其上市售价也接近500美元,十分惊人。由于上市时间的延误以及核心自身的不成熟,GeForce FX 5800系列的辉煌也只持续了不到3个月,就被下一代的GeForce FX 5900所替代。
● 备受指责的5800衍生物——FX5600和FX5200
由于GeForce FX 5800 Ultra高昂的价格,显然很难为普通的消费者所接受,旗舰级产品更多的是为了技术实力,只能面向规模较小的高端市场。为了加快GeForce FX系列的普及,2003年3月的GDC大会上,NVIDIA发布了面向主流市场的NV31和NV34,即GeForce FX5600和GeForce FX5200系列,这标志着NVIDIA开始全面更新其产品线,使得更多的普通用户也可以体验到GeForce FX系列的新技术。
按照以往惯例,GeForce FX 5600系列按工作频率不同分为GeForce FX 5600 Ultra和GeForce FX 5600两个版本,GeForce FX 5200系列也同样包括GeForce FX 5200 Ultra和GeForce FX 5200两个版本,它们的核心设计上都基于NV30的“CineFX"架构,这意味着它们在对3D特性上的支持基本与GeForce FX 5800 Ultra相同。
规格一览
Geforce FX5600 Ultra显示芯片内部研发代号为NV31,同样采用0.13um制程工艺生产,晶体管数量约为8000万个,和NV30相比减少了36%。产品定位于Geforce Ti4200接替者,是DX9级别的中端主力显卡。NV31采用了四条像素管线,每条管线的纹理单元缩减到了一个,也是进入Shader时代后,NVIDIA第一个基于4×1架构的核心。显存方面,NV31采用了主流的DDR,虽然速度不及FX 5800 Ultra的DDRII,但是成本及功耗都有大幅的下降。NV31的显存控制方面也有所变动,用两个64-bit显存控制器而不是FX 5800那种四个32-bit显存控制器的设计。NV31也采用CineFX引擎,具有与高端NV30完全一样的技术特性,不过浮点运算单元的数量被精简,具体为Vertex Shader缩减到NV30的1/3,Pixel Shader数量则为NV30的3/4。
Geforce FX5600 Ultra是系列的最强版本,核心频率最初为350MHz,后来经过改进后提升至400MHz。虽然GeForce FX 5600 Ultra被定为Ti4200接班人,但早期低频版(350MHz)在当时的一些游戏中得性能提升得有限,甚至在部分游戏中还输给了超频后的GeForce4 Ti 4200,这样的表现无疑令人感到意外。面对Radeon 9600 PRO的强劲攻势,GeForce FX 5600 Ultra显然难以招架,只能将对手定为Radeon 9600。
为了进一步提升Geforce FX5600 Ultra的竞争力,NVIDIA协同TSMC将NV31的封装方式进行了改进,核心频率也提升到400MHz,和Radeon 9600 PRO相同。同时,显存速度也提升到800MHz,这时FX5600 Ultra才真正超越了GeForce4 Ti 4200,与Radeon 9600 PRO也的差距被缩小了很多。不过这也延误了不少时间,新版的FX5600 Ultra直到7月份才上市,让Radeon 9600 PRO独占中端市场数月之久。NVIDIA后来还迁怒于TSMC,并将Geforce FX 5700的NV36核心改由IBM生产。
Geforce FX5200 Ultra显示芯片的研发代号为NV34,目的是取代Geforce MX440,FX5200的出现也标志着NVIDIA的低端产品线跳过了DX8而直接进入DX9。NV34采用更为成熟的0.15微米工艺,集成的集体管数目大约在4500万个。架构方面和NV31相同,具有4条像素管线及4个TMU单元。NV34核心作为Geforce FX家族中的低端产品,但也采用了CineFX引擎,完整支持DirectX 9.0的Pixel Shader 2.0+与Vertex Shader 2.0+ ,但是去掉了对IntelliSample技术的支持。不过NV34集成TV编码器、TMDS传送器和两个350 MHz RAMDAC,支持高画质电视输出,在多媒体方面有更好的表现。
Geforce FX5200 Ultra的核心/显存频率分别为325/650MHz;5200标准版则为250/400MHz。Geforce FX5200的推出有效缓解了NVIDIA在低端市场的压力,因为只支持DX7的MX440已经无法胜任新一代游戏。同时在DirectX 规格上Geforce FX5200 也领先对手的Radeon 9000和Radeon 9100。
GeForce FX 5200 Ultra
GeForce FX 5200 Ultra是NV34系列的的最高版本,运行频率325/650MHz,性能较上一代的MX460有一定的提升,而且规格上也是全面领先。但是较高的工作频率使得FX 5200 Ultra必须使用6层PCB(Inno3D 这款采用了8层的公板P140 PCB)以及外接供电设计,这些都提高了该产品的生产成本,FX 5200Ultra版本比普通版本高出至少20美元,接近于FX 5600 XT的售价使其在当时低端市场的地位也是比较尴尬。
GeForce FX 5200 TV Tuner
在低端显卡的市场上,消费者往往对产品的3D性能并不十分关心,但是对显卡的多媒体功能有较全面的的要求,所以Inno3D还推出了GeForce FX 5200 TV Tuner,也是NVIDIA Personal Cinema系列的第二代产品,针对当时的All-In-Wonder Radeon 9000。FX 5200 TV Tuner显卡上板载了一颗数字高频头,以及飞利浦或者其他第三方的解码芯片,配合附送的丰富的专业处理软件,可以为用户提供从家庭影院到视频剪辑、编辑等全方位的数码娱乐体验。总的来说,虽然进入多媒体领域较晚,但是凭借Personal Cinema系列的出色表现,NVIDIA大有后来者居上的架势。
GeForce X5600Ultra
GeForce FX5600Ultra作为系列的最高版本,其做工用料也是非常出色。为了保证高频下的稳定工作,NVIDIA专门为它开发了成本高昂的但具有优良电气性能的P140公版,早期Wirebond封装的NV31核心采用的的PCB是P140/A02版本,后期FC-BGA封装核心为P140/A04。P140公版为8层PCB设计,而且只支持MBGA封装的显存颗粒,同时供电部分也采用了较多的三洋OSCON固态电容,因而FX5600Ultra也有不错的超频潜力。
但是遗憾的是,由于0.13微米工艺的不成熟,NVIDIA在NV31核心的生产过程中并不顺利,产量始终难以满足市场的需求,而且由于NV31核心设计上的不成熟,很快就让位于NV36核心的GeForce FX5700Ultra。
FX5600频率较低,被动散热足以搞定
Inno3D GeForce FX 5600是系列中的主力产品,相比成本高昂的GeForce FX5600Ultra,FX5600标准板的价格更加贴近主流用户,因而出货量也是系列中最大。FX 5600标准板核心/显存的工作频率分别为325MHz/550MHz,核心频率非常接近FX5600Ultra的350MHz,所以性能与FX5600Ultra的差距不是很大,由于采用了6层PCB,其成本也得到了较好的控制,性价比更高。由于在2003年DirectX 9的游戏还不多见,所以GeForce FX 5600在大多数游戏中还是显示出了不错的性能。同时在当时市场上,Ti4200已经略显老态,Radeon9500缺货现象严重,因而FX5600标准板也为多数主流用户所采用,取得了不错的市场份额。
性价比出色,Radeon 9600 SE的克星
GeForce FX5600XT是GeForce FX5600的低频率版本,默认频率为235/400MHz,公版采用128 bit的4ns显存,售价和GeForce FX5600标准版相比也更加低廉。这也是NVIDIA 首次用“ XT"后缀命名同系列的低端产品,GeForce FX5600XT也是FX5600系列的最低版本。这和对手ATI用“ XT"后缀命名高端显卡的方式正好相反,也容易使用户产生一定的误解。由于GeForce FX5600XT和标准板一样采用了nv31核心,其性能还是得到了相当程度的保证,而且多数FX5600XT都可以超频达到标准板的工作频率,所以FX5600XT还是具有不错的性价比,在多数的非DX9游戏中都可以领先Radeon 9600 SE。
● 重新审视NV30的失败之处:
现在回过头来看,NV30在架构的设计上还是存在着不少问题,其中最主要的就是Piexl Shader的处理能力低下。由于NV30的Piexl Shader单元没有co-issue(标量指令+矢量指令并行处理)能力,而在DirectX9.0中,单周期3D+1D是最常见指令处理方式,即在很多情况下RGB+A是需要非绑定执行的,这时候NV30就无法并行执行,指令吞吐量大大降低。其次,NV30没有miniALU单元,也限制了NV30的浮点运算能力。
RGBA处理过程 另外,NV30在寄存器设计(数量及调用方式)、指令存储方式(读写至显存)等方面也有缺陷。NV30的寄存器数量较少,不能满足实际程序的需要。而且,用微软的HLSL语言所编写的pixel shader2.0代码可以说NV30的“天敌”,这些shader代码会使用大量的临时寄存器,并且将材质指令打包成块,但是NV30所采用的显存是DDR-SDRAM,不具备块操作能力。同时,NV30材质数据的读取效率低下,导致核心的cache命中率有所下降,对显存带宽的消耗进一步加大。 寄存器调用 同时,由于NV30是VILW(超长指令,可同时包含标量和SIMD指令)设计类型的处理器,对显卡驱动的shader编译器效率有较高的要求。排列顺序恰当的shader代码可以大幅度提升核心的处理能力。NVIDIA也和微软合作开发了"Shader Model 2.0A",可以为NV30产生更优化的代码。在早期的一些游戏中,这种优化还是起到了一定的作用。但对于后期Shader运算任务更为繁重的游戏则效果不大。 shader代码
从宏观上说,NV30的整体架构更像是一个DirectX7(固定功能TRUE T&L单元)、DirectX 8(FX12combiner DX8整数处理单元)、DirectX 9(浮点像素单元)的混合体。而在DirectX 9的应用中,不能出现非浮点精度的运算,所以前两者是不起作用的,造成了NV30晶体管资源的浪费,同时也影响了性能。而NV30这种DirectX 7、8、9三带同堂的架构也让我们想起了一个至今仍在广泛使用的3D测试软件: 3DMark03——这会是一种巧合吗?
虽然NV30的架构决定了它在DirectX 9游戏中的表现不会很好,但是由于在整个2003年,DirectX 9并未成为游戏开发的主流,所以NV30的架构缺陷并未暴露出来。即便如此,NVIDIA还是意识到了NV30的一些不足,并迅速对NV30的像素着色单元做出了改进,并于2003年5月的GDC上,发布了新一代研发代号为NV35的5900系列。
|