GPU架构演化史3: 1994-2000 群魔乱舞

这一章,我们讲述在固定流水线的年代产生的群魔乱舞的历史,最终3Dfx惊鸿一瞥,而nVidia也确立了霸主地位,而Intel也带着i740、i752逐渐告别了独显市场,这个年代的周边器件的成熟度和生态等商业环境都是我们值得深思的。

1996 Voodoo的艺术

3Dfx的诞生是一群聪明的人占尽了天时地利,一方面SGI irisVision这样的产品售价高达4,000美金,另一方面而整个图形渲染的流水线抽象已经被开放成OpenGL标准:

GPU架构演化史3: 1994-2000 群魔乱舞

恰逢其时,Pentium系列处理器的浮点能力相对于386,486年代也强了很多,而内存峰值带宽比486也高出了很多,于是Doom等伪3D游戏已经逐渐被开发出来,PC市场有购买专用图形加速卡的动机,而一般客户能够承受的价格在300~400美元。而担任助攻的就是内存价格的快速下降,以及EDO内存的频率提升到50MHz使得其作为显存成为可能。Ross Smith, Scott Sellers, and Gary Tarolli便于1994年获得550万美金风投创建了3dfx,到了1996年Voodoo卡就发售了:

GPU架构演化史3: 1994-2000 群魔乱舞

所以3Dfx的成功借助了当时太多的环境,以及三个创业者非常敏锐的眼光,比起SGI RealityEngine,它们巧妙的利用主CPU的性能优势实现VertexShader,然后专门利用一张卡去Offload光栅等操作降低主CPU的内存带宽压力,巧妙不巧妙?

把纹理和帧缓存从主内存Offload到显卡上,正是因为流水线和APi已经固定,所以把光栅中计算密集的线性插值,像素填充等计算复杂和I/O密集的操作全部用两块ASIC实现了,一块为纹理映射单元(TMU),另一个为帧缓存接口单元(FBI),这个时候并不需要什么可编程能力。具体的渲染流程如下:

  1. CPU负责所有的几何处理(Vertex Shader+Geometry Shader),而将产生的Primitive 2D Triangles和相应的纹理材质加载到内存中。
  2. Triangles被triangleCMD通过PCI发送到 Voodoo FBI ASIC(Frame Buffer Interface),它们被转换成扫描线请求并发送到TMU(Texture Mapping Unit),TMU可以进行四次像素查询并可以根据开发者需求实现双线性材质过滤(Bi-Linear filtering)。
  3. TMU将fragment填充好的16bits RGBA颜色和一个16bits的z值返回给FBI
  4. FBI利用z-buffer test在自己专有的RAM空间保存RGBA和z值。
  5. FBI在完成了一系列硬件雾化,混合处理等特效功能后,交由RAMDAC转换成VGA信号给显示器

而内存带宽的问题则是通过两块芯片2way、4way interleave解决的

而第二代Voodoo2则是把TMU堆成了两个,同时还划时代的支持了双卡SLI并行操作, 而nvidia的SLI也是收购3Dfx后才得到的。

这一系列划时代的3D效果,最直接的对比如下图所示:

一些更详细的内容可以参考VoodooSpec[1] , THE STORY OF THE 3DFX VOODOO1[2]

而后来,为了避免和Matrox、ATi、S3等老厂竞争,它又通过子卡的方式搞出了Voodoo Rush,结果翻车了,然后后期做的Voodoo Banshee倒是再一次证明了它的实力,而渣的第一块3D显卡也就是Creative的Voodoo Banshee。但是3Dfx在Glide3D API上的失误,留给微软和nVidia D3d的机会,然后还自己买了STB自己做卡,把合作伙伴全推向了ATI和nVidia,真是自己作死…Voodoo3自身体系结构上也没有什么特点,最终败在了革命性的GeForce 256手下。最后靠堆芯片的VSA,堆到了4颗也把自己作死了,似乎忘了当年irisVision的痛了?

当然本文主要是探讨体系架构层面上的变化,matrox G200/ATI Rage系列等这些历史的故事就略去了。

1998 nVidia TNT

nvidia TNT和Voodoo类似,把光栅单元全部集成到了卡上,伴随着AGP接口的出现,主内存可以传递更多的内容到显存,而且这条带宽是显卡独享的,同时可使用部份主存给显卡单独使用。这样我们就可以干更多的事情了,于是多重纹理单元就出现在了TNT上:

具体效果如下:

TNT的出现击败了Voodoo2,成为当时最快的3D加速卡,凭借出色的性能,ELSA、Creative等大厂也成了nVidia的伙伴,与此同时nVidia也注意到软件驱动上对于一块显卡芯片性能发挥的重要性,于是为TNT完全重新编写了新的雷管(Detonator)驱动. 而1999年发布的TNT2成功的让它锁定霸主的地位。但这个时候,业界还没有GPU这个term,因为它们大多数只是在干光栅和像素渲染的活,顶点着色还是在CPU上完成的..接下来真正GPU的大幕就打开了…

1999 GeForce256

GeForce256新增了一个名为光照变化单元(T&L Unit),实质就是把顶点处理和几何变换等功能全部Offload到了显卡上,而CPU只是简单的描述3D空间的三角形和传递纹理即可。这一次显卡芯片把SGI RealityEngine当时能做的事情都集成起来到了一个芯片上,于是nVidia正式把GPU这个term推向了市场,并且和当年的 RealityEngine一样,增加了光栅处理单元的流水线长度,添加了光照、抗锯齿、三重线性过滤, 法线贴图,3D纹理、纹理投射贴图等功能,图像渲染画质又一次获得了质的飞跃。

T&L引擎功能如下:

小结

但是其它家在路线上出现了争议,3Dfx和其他竞争者认为一个快速CPU可以解决T&L的问题,而并不需要显卡硬件支持。似乎有点现在DPU的味道,CPU足够快你Offload个屁?而且当时支持T&L的游戏特别少,硬件支持T&L毫无意义。但是nVidia又干了一件事情,既然有类似于SGI RealityEngine的完整功能了,那么搞块专业卡来卖吧,于是Quadro系列顺利登场。

而在后期的Geforce 2GTS(NV15)系列中,像素填充速率达到了每秒16亿次,同时增加了第二个TMU使得像素流水线达到了4条. 由于其纹理处理性能强大,开发者利用纹理环境参数和纹理函数,就可以作出一些数学运算。利用纹理库和寄存器组合器,开发者用依赖纹理说可以访问数据,利用寄存器组合器进行计算,这也成为最原始的GPGPU的应用场景。

最终这个疯狂的年代落幕了,3Dfx被nVidia收购,Intel离开了独显市场专攻集成显卡,Matrox则是玩起了多屏的一个非常小众的市场,S3也被VIA收购,剩下ATI和nVidia开始了新一轮的争霸。而到此为止,GPU上所有的东西都还是固定的,可编程的概念悄然升起,CUDA也是过了7年才出现。

回到当下,又是一个GPU群雄逐鹿的年代,Intel似乎继续出师不利,而国内的这些玩家能否弯道超车呢?而同样一颗新的处理器DPU被nVidia定义出来,它还会像二十年前那么幸运么?

Reference

[1]

voodoo spec: http://www.o3one.org/hwdocs/video/voodoo_graphics.pdf

[2]

THE STORY OF THE 3DFX VOODOO1: https://fabiensanglard.net/3dfx_sst1/index.html

GPU架构演化史3: 1994-2000 群魔乱舞》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:http://www.bookhoes.com/684.html