成就3D图形霸业!NVIDIA历代显卡回顾
现在回过头来看,NV30在架构的设计上还是存在着不少问题,其中最主要的就是Piexl Shader的处理能力低下。由于NV30的Piexl Shader单元没有co-issue(标量指令+矢量指令并行处理)能力,而在DirectX9.0中,单周期3D+1D是最常见指令处理方式,即在很多情况下RGB+A是需要非绑定执行的,这时候NV30就无法并行执行,指令吞吐量大大降低。其次,NV30没有miniALU单元,也限制了NV30的浮点运算能力。
另外,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运算任务更为繁重的游戏则效果不大。
从宏观上说,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系列。
● 亡羊补牢之作——NV35,FX5900
NV35芯片采用更加成熟了的0.13微米铜互联工艺,芯片的良率比NV30大幅度提升。核心面积为40mm×40mm,采用1309针FCPGA封装,内部晶体管数量达到了1.3亿。虽然比NV30又增加了500万个晶体管,不过通过改进的工艺,NV35的发热量略有降低,因此没有搭配Flow FX散热系统。
NV35
新的NV35采用了CineFX2.0引擎,和第1代CineFX相比,NVIDIA对Piexl Shader做出了一定的改进,在保留FX12 combiner的同时增加了两个可进行浮点运算的miniALU,虽然miniALU的功能有限,但是还是使得NV35的浮点运算能力提高了一倍。
NV30中的CineFX2.0还改进了Intellisample(智能采样)技术,增加了更多的高级纹理、色彩以及Z轴压缩算法以提升图象质量,并重新命名为“Intellisample HTC(高分辨率压缩技术)”技术。
CineFX 2.0引擎引的另一个改进是引入了UltraShadow的技术。UltraShadow也可以说是为IDSoftware的新一代DOOM3引擎量身打造的,因为DOOM3引擎大量采用了体积阴影技术(Volumetric Shadow),Shadow Volume可以更加精确的表现动态光影效果的场景,但由于阴影体积引入了额外的顶点和面,也加大了光影计算的强度。而Ultra Shadow可以简化光影计算的过程,它允许程序员定义场景中一个区域,将物体的阴影计算限定在一个特定范围内,从而加速阴影的计算速度。此外,UltraShadow技术还允许程序员在一些关键的区域对阴影进行调整,从而创造出可与真实情况媲美的优秀视觉效果。Ultra Shadow还能利用Intellisample HTC技术以确保阴影边缘的
NV35刚发布时有两个版本——GeForceFX 5900和5900 Ultra,核心频率分别为400MHz和450MHz,而显存频率都是850MHz。因此显存带宽达到27.2GB/s,不仅远远超过GeForceFX 5800 Ultra的16GB/s,也比Radeon 9800Pro的21.8GB/s高出不少。
虽然在5月发布的5900系列为NVIDIA在高端产品线挽回了不少损失,但是在市场规模、利润最大的中端方面,却面临更严峻的形势,由于ATI在3月发布了RV350,也就是Radeon 9600 系列,再加上因为具有修改潜力而已经颇具人气的Radeon 9500,使其竞争力大幅度提高,而NVIDIA则只能由经典但已显老迈的TI 4200、新一代的5600 Ultra来抵挡ATI的攻势,但是早期的5600 Ultra(350/700)因为自身架构和频率的原因,难以独当一面,在一些应用中性能甚至不敌Ti4200。后期的高频版5600 Ultra(400/800)则迟到了近2个月而且产量有限,业界还传出了NVIDIA在GeForce FX 5600 Ultra的生产上遇到了困难的消息。总之,NVIDIA的一系列变故使得ATI在中端主流市场轻松的获得了领先。
显然由于市场竞争的激烈态势,GeForce FX 5700 Ultra才是这次发布的重头戏。GeForce FX 5700芯片的开发代号为NV36,目的是替代GeForce FX 5600和GeForce FX 5600 Ultra。NV36内部集成了8200万个晶体管,虽然同样为4X1架构,具有4条像素管线及每管线一个TMU单元,由于继承了NV35的Cine FX2.0体系架构和Ultra Shadow阴影加速技术,顶点处理能力、特别是浮点性能比NV31提高了200%--300%。显存方面和NV31相同,使用了两个64-BIT显存控制器支持128-BIT的显存位宽。
有鉴于在NV31核心的生产遇到的种种意外,这次nVidia 将NV36交由IBM 生产,GeForce FX 5700也是IBM与nVidia合作的第一款产品。不过GeForce FX 5900/5950仍由TSMC负责生产。和GeForce FX 5600一样,GeForce FX 5700也基于0.13微米工艺制造,但是IBM采用了低介电系数材料工艺(low-k dielectric),用来绝缘核心中的导体环路,在不增加功耗的情况进一步提升核心频率。
所以GeForce FX 5700 Ultra核心频率提高到475MHz,比FX 5600 Ultra高出75MHz。显存方面则搭配了日趋成熟DDR2的显存,工作频率900MHz,提高了性能的同时,也减少了功耗。后来,GDDR3显存的FX5700Ultra,GDDR2跟GDDR3的针脚是兼容的,所以不用重新设计PCB。由于GDDR-3的Latency比GDDR-2要高,所以将其显存工作频率升至950MHz 。