D-Sub:喜感的命名缘何悲剧的人生?DVI第四者插足谁的邯郸一梦?有做小四的资本,却终究抵不过野心家……;革命拉开显卡接口混乱之治的序章,HDMI 和 DisplayPort 终将一战!上次我们从接口说起,阐述了显卡发展史上影响力最大的几种接口之间的渊源纠葛,小小一个接口主导的是全球显卡、显示设备庞大的市场,其中自然少不了尔虞我诈。(文章链接)而今天我们将惊心动魄的历程再度回放,看看过去的十年,显卡核心架构为谁而变、显卡发展史的幕后谁主沉浮,而Direct API 又在扮演什么样的角色!

  19世纪中叶,达尔文创立了科学的生物进化学说,以自然选择为核心的达尔文进化论,第一次对整个生物界的发生、发展,作出了唯物的、规律性的解释,推翻了特创论等唯心主义形而上学在生物学中的统治地位,使生物学发生了一场变革。

  他认为,生物之间存在着生存斗争,适应者生存下来,不适者则被淘汰,这就是自然的选择。生物正是通过遗传、变异和自然选择,从低级到高级,从简单到复杂,种类由少到多地进化着、发展着。以上三点,就是我们常听到的“物竞天择,适者生存”,现在基因学诞生之生,为此提供了重要的证据,事实上,物竞天择,竞的是“基因”。

  以达尔文进化论为基础的间断平衡论认为,进化以跳跃的方式快速形成;新种一旦形成就处于保守或进化停滞状态,直到下一次物种形成事件发生……

  显示芯片领域同样的竞争也在延续。从GPU诞生至今双方都已推出了十多代产品,每一代产品之间的对决都令无数玩家心动不已,而NVIDIA和ATI每一代产品谁更强大似乎有某种规律可循,DirectX之于GPU架构就象环境之于物种。其中最精彩的战役往往就在微软DirectX API版本更新时出现。

  在我们的地球上,曾经有很多生物种类出现后又消失了,这是一个生物演化史中的必然阶段。

  有一天,恐龙们还在地球乐园中无忧无虑地尽情吃喝,突然天空中出现了一道刺眼的白光,一颗直径10公里相当于一座中等城市般大的巨石从天而降。那是一颗小行星,它以每秒40公里的速度一头撞进大海,在海底撞出一个巨大的深坑,海水被迅速气化,蒸气向高空喷射达数万米,随即掀起的海啸高达5公里,并以极快的速度扩散,冲天大水横扫着陆地上的一切,汹涌的巨浪席卷地球表面后会合于撞击点的背面一端,在那里巨大的海水力量引发了德干高原强烈的火山喷发,同时使地球板块的运动方向发生了改变。

  那是一场多么可怕的灾难啊。陨石撞击地球产生了铺天盖地灰尘,极地雪融化,植物毁灭了,火山灰也充满天空。一时间暗无天日,气温骤降,大雨滂沱,山洪暴发,泥石流将恐龙卷走并埋葬起来。在以后的数月乃至数年里,天空依然尘烟翻滚,乌云密布,地球因终年不见阳光而进入低温中,苍茫大地一时间沉寂无声。生物史上的一个时代就这样结束了。

  如果说3DFX显卡就象当时统治地球的恐龙,那Windows 95无疑就是白垩纪撞击地球的小行星了,它的发布真正让个人计算机热席卷全球,全新的图形界面让整个业界兴奋不已,全球软硬件厂商都不得不向其靠拢。正是这样环境的巨大改变,集成在windows下的DirectX才有资格与OpenGL/Glide分庭抗礼,而最终结果是曾经不可一世的3Dfx帝国土崩瓦解,NVIDIA和ATI适者生存。

  在DirectX 5.0以前,显卡和游戏都以支持OpenGL和Glide(3DFX的专用API)为荣,DirectX只是在市场的一隅苟且偷生,基于DOS系统的Windows还不够强大,而微软的影响力还远远没到左右游戏开发商和芯片厂商的地步。

  沉船侧畔千帆过,病树前头万木春。科学家认为如果没有6500万年前的大撞击导致恐龙灭绝,作为哺乳动物的人类难以发展成为地球的主宰。

  一灭一生,一个循环,如果没有3DFX帝国的轰然倒塌,同样也没有目前虚拟现实技术的华丽转生,而从那时起,两大阵营的殊死较量才刚刚开始……

  冰川时期是指地球表面覆盖有大规模冰川的地质时期,又称为冰川时期。两次冰期之间为一相对温暖时期,称为间冰期。地球历史上曾发生过多次冰期,最近一次是第四纪冰期。

  冰期时期最重要的标志是全球性大幅度气温变冷,在中、高纬(包括极地)及高山区广泛形成大面积的冰盖和山岳冰川。由于水分由海洋向冰盖区转移,大陆冰盖不断扩大增厚,引起海平面大幅度下降。所以,冰期盛行时的气候表现为干冷。冰盖的存在和海陆形势变化,气候带也相应移动,大气环流和洋流都发生变化,这均直接影响动植物生长、演化和分布。

  如果说windows的发布对于3Dfx的影响类似于小行星撞地球对于恐龙的影响,那DirectX 7.0的发布则宣告了显卡间冰期的到来,在这样的环境变迁之下,显卡产业走上了欣欣向荣的发展和辉煌之路。

  DirectX 7.0堪称一次革命性的改进,其最大的特色就是支持Transform & Lighting,中文名称——“坐标转换和光源”。

  3D游戏中的任何一个物体都有一个坐标,当此物体运动时,它的坐标发生变化,这指的就是坐标转换;3D游戏中除了场景+物体还需要灯光,没有灯光就没有3D物体的表现,无论是实时3D游戏还是3D影像渲染,加上灯光的3D渲染是最消耗资源的。

  虽然OpenGL中已有相关技术,但此前从未在民用级硬件中出现。而在T&L问世之前,位置转换和光照效果都需要CPU来计算,CPU速度越快,游戏表现越流畅。使用了T&L功能后,这两种效果的计算用显卡核心来计算。

  也许这样说大家还不是很明白,举个例子,DX7以前的显卡并不能算是真正意义上的显卡,至少功能不全,而支持DX7的显卡就可以自行计算位置转换和光照效果,从而把CPU从繁忙的劳动中解脱出来,让CPU做他该作的事情,比如逻辑运算、数据计算等等。

  改进的效果显而易见,在CPU不堪重负的时代,DX7显卡用T&L渲染游戏时,即使没有高速的CPU,同样能能流畅的跑3D游戏。显卡对于PC的重要性上升到一个新的高度,所以很多人认为,DirectX 7.0是API发展史上的一个里程碑。

  DirectX 7.0架构首次让CPU走下了神坛,让大家知道原来PC中可以有第二颗运算处理器——GPU。

  T&L优秀的特性成为当时业界关注的焦点,这样的环境孕育出了全球首颗GPU,支持DX7与T&L的——NVIDIA GeForce 256,可以说它是一款划时代的产品,为了突出它先进的技术特性,NVIDIA将GeForce 256的显示核心称为GPU(Graphic Processing Unit,图形处理器)。

  GeForce 256所采用的核心技术除了硬件T&L之外,还有立方环境材质贴图、顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素、256位渲染引擎等诸多先进技术。在性能大幅提升的同时,3D游戏的画面得到了质的提升。

  此后发布的GeForce 2 GTS就是GeForce 256的提速版本,架构、规格和技术没有多少改变。因此可以说GeForce 256就已经确立了当今GPU的整体架构雏形,我们可以看到它拥有专门的坐标转换与光源引擎,还有装配引擎、渲染管线、后期处理模块等等,这些功能单元基本都被沿用至今。

  Radeon 256同样支持硬件T&L、环境贴图和凹凸贴图,还支持Hyper及和DOT3压缩技术,Radeon 256只有两条渲染管线个纹理单元,而GeForce 256每条管线一个纹理单元,GeForce 2 GTS才改进为2个。但遗憾的是Radeon 256的第3个贴图单元直到它退市的时候也没有任何程序能够支持它,同时令人诟病的驱动也令用户大为恼火。

  Radeon 256及其衍生的Radeon VE/LE/SE等都是优秀的产品,技术与架构不输给GeForce系列,功能甚至还更丰富,但糟糕的软硬件支持度导致它无法同GeForce相抗衡,口碑和市场都不如人意。

  GeForce 256与Radeon 256的基本架构是相同的,不同的是管线设计,GeForce 256拥有更多4条管线条管线个纹理单元,而且工作频率很高,因此在理论性能上占优势。

  在当时来说,游戏大量使用了各种纹理贴图,因此对纹理单元提出了很高的要求,所以NVIDIA在GeForce 2 GTS当中改进为单管线双纹理。NVIDIA管线、ATI管线的架构都维持了很多年,直到DX9时代才有了较大的变化。

  DirectX 8.0 的每个组件都包括了重要的新特性,它们极大地增强了 DirectX 的功能。图形、音频和网络三个组件被彻底重写。DirectInput 包括了新的配置功能、操作映射和更好的国际化支持。DirectShow 第一次作为 DirectX 的一部分出现在运行时和 SDK 中。

  现在看来,DirectX 8.0架构重要性可以和DirectX 7.0相提并论,T&L的引入第一次将显卡从一个单纯的打印机变成了有主动操作功能的图形处理器,而DirectX 8.0 shader的引入则将运算能力这个无限可能的大门放置在了显卡面前,透过运算能力,人们终于可以准确并且实时的操作纹理上像素的色彩,并最终透过正确的色彩表达正确的效果了。

  面向图形计算,让GPU逐渐找到了自己的方向,那就是给予用户更真更快地视觉体验,但是GPU架构也遇到一些问题亟待解决。首要问题就是,要实现更加复杂多变的图形效果,不能仅仅依赖三角形生成和固定光影转换,虽然当时游戏画面的提高基本上都是通过大量的多边形、更复杂的贴图来实现的。

  但后期的发展中,顶点和像素运算的需求量猛增。每个顶点都包含许多信息,比顶点上的纹理信息,散光和映射光源下表现的颜色,所以在生成多边形的时候带上这些附加运算,就可以带来更多的效果,但这也更加考验顶点和像素计算能力。

  与DX7引入硬件T&L仅仅实现的固定光影转换相比,VS和PS单元的灵活性更大,它使GPU真正成为了可编程的处理器,时至今日DX11时代ShaderModel都在不停地更新,以便渲染出更逼真更完美的画面。这意味着程序员可通过它们实现3D场景构建的难度大大降低,但在当时来说可编程性还是很弱,GPU的这一特性还是太超前了。

  DirectX 8.0当中的Pixel Shader和Vertex Shader的引入,使得GPU在硬件逻辑上真正支持像素和顶点的可编程,反映在特效上就是动态光影效果,当时波光粼粼的水面都是第一次展现在玩家面前。

  在DirectX 8.0推出之后,环境变化太快,物种进化有点跟不上了,当时的DX8显卡都定位太高,NVIDIA和ATI双方都没有推出过低端DX8显卡,而支持DX7的上一代显卡依然占据着市场的主导,直到DX9诞生之后,昔日高端的DX8显卡屈尊降贵,这是后话……

  在DX8之前,无论NVIDIA还是ATI,都在强调显卡前端及后端输出。而Shader理念提出之后,双方逐渐将竞争重点放在了显卡的渲染核心部分——像素渲染管线和顶点渲染管线,无论是GeForce 3 Ti还是Radeon 8500都内置的规格和频率更强的PS和VS单元。当然也对显卡的后端ROP(光栅化引擎,负责完成像素的输出)也做了相应的改进,各种各样的多重采样AA模式和材质过滤技术逐步得以实现。

  上图就是GeForce 3的核心架构图,可以看出,由于DX8渲染模式的改变,GeForce 3相对于DX7的GeForce 2/256有了天翻地覆的变化,一半以上的模块需要重新设计(绿色部分)。

  硬件规格方面,GeForce 3依然只有4条渲染管线个纹理单元,这与上代的GeForce 2没有区别。但是GeForce 3的核心晶体管数竟然是GeForce 2的两倍以上,额外的晶体管大都用在了顶点管线部分,虽然它只有一个顶点着色单元。这个顶点着色单元其实就是一个4D SIMD(单指令多数据流)处理器,可以计算最多16项数据的顶点,这在当时来说运算能力已经非常富裕了。

  不过,主流的游戏还是基于DX7开发,因此GeForce 3的VS单元很多时候都派不上用场,由此导致GeForce 3在DX7游戏当中领先GeForce 2 Ti的优势并不大,毕竟它们的像素渲染管线和纹理单元数目是相同的,频率也没有提升太多。

  DX8方面ATI再次落后于NVIDIA,但后发制人也有好处,ATI直接采用了微软更新的DX8.1 API,因此在硬件特性方面要更胜一筹。不过DX8.1的改进极为有限,只是改进了大纹理水波纹的效能,未能得到整个业界的重视。

  Radeon 8500与DX7版的Radeon系列相比,架构上也产生了翻天覆地的变化,除了加入顶点引擎外,更多尚处于实验性的技术都被置于其中,而且2D输出部分的功能更为丰富,可以说在技术和功能方面完全超越了GeForce 3 Ti。

  规格方面,Radeon 8500拥有4条像素渲染管线,这与GeForce 3是相同的,但是8500拥有2个顶点着色单元,而GeForce 3只有1个,这就使得8500的理论性能更占优势。纹理单元方面ATI放弃了管线的设计,采用了与NVIDIA相同的1:2设计,因为第3个纹理单元在多数游戏中都毫无用处,这样双方的纹理单元数量也完全相同。

  整体来看双方都是重新设计的优秀架构,考虑到众多的特色功能和技术,Radeon 8500的确要优于GeForce 3 Ti。这是在3DFX灭亡之后,第一次有一家公司对NVIDIA造成如此大的压力,所以NVIDIA发布了更高频率的GeForce 3 Ti 500才勉强夺回性能之王的宝座。当然NVIDIA成熟稳定的驱动和长期积累的用户口碑以帮助GeForce 3 Ti力压Radeon 8500系列。

  后期NVIDIA推出更多管线 Ti自然拥有更强的DX8性能,但考虑到ATI方面没有与之相对应的产品,就不做对比了,因为ATI已经直接进入了DX9时代。

  2002年底,微软发布DirectX 9.0,如果从技术规格上看,DX9似乎没有DX7和DX8那种让人眼前一亮的革命性技术,它只是将ShaderModel版本从1.0升级到2.0而已。其实不然,此次ShaderModel指令集的改进让图形渲染画质提高到了新的水平。

  首先,PixelShader 2.0具备完全可编程架构,能对纹理效果即时演算、动态纹理贴图,还不占用显存,理论上对材质贴图的分辨率的精度提高无限多;另外PS1.4只能支持28个硬件指令,同时操作6个材质,而PS2.0却可以支持160个硬件指令,同时操作16个材质数量,新的高精度浮点数据规格可以使用多重纹理贴图,可操作的指令数可以任意长,电影级别的显示效果轻而易举的实现。

  其次,VertexShader 2.0通过增加顶点指令的灵活性,显著的提高了老版本的顶点性能,新的控制指令,可以用通用的程序代替以前专用的单独着色程序,效率提高许多倍;增加循环操作指令,减少工作时间,提高处理效率;扩展着色指令个数,从128个提升到256个。

  另外,增加对浮点数据的处理功能,以前只能对整数进行处理,这样提高渲染精度,使最终处理的色彩格式达到电影级别。突破了以前限制PC图形图象质量在数学上的精度障碍,它的每条渲染流水线位浮点颜色,让游戏程序设计师们更容易更轻松的创造出更漂亮的效果,让程序员编程更容易。

  当NVIDIA沉浸于GeForce 4 Ti大获全胜的DX8时代时,ATI在DX9标准正式确立之前就提前发布了Radeon 9700显卡,打得NVIDIA措手不及。这款产品来得如此突然,以至于ATI发布之时甚至没有提供相关技术PPT/PDF。

  由于DX9相比DX8并没有改变3D渲染流程,仅仅是强化了ShaderModel指令集,因此R300的架构相比R200改进并不大,主要的变化是规模的扩充与外围控制模块的加强。比如:首次使用256bit显存控制器、类似CPU的FCBGA封装、更先进的纹理压缩技术以及后期处理单元。

  当然,R300的Shader单元经过了重新设计,定址、色彩和纹理单元都支持浮点运算精度,这是它能够完美运行DX9程序的关键。R300核心拥有8条像素渲染管线个顶点着色单元,每条像素管线个纹理单元。至此ATI的像素与纹理的比例从1:3到1:2再到1:1,在DX9C时代将会进一步拉大至3:1,也就是风靡一时的3:1架构,当然这是后话了。

  NV30核心采用了业界最先进的0.13微米工艺制造,并使用了最高频率的GDDR2显存,而且发布时间较晚,理应占尽优势才对。但是这一次NVIDIA没能跟上微软的步伐,不仅在时间上晚于ATI,而且在DX9技术方面也未能超越。NV30的架构存在较大的缺陷,NVIDIA艰难的完成了从DX8到DX9的过渡,但结果很不理想。

  从宏观上说,NV30的整体架构更像是一个DX7(固定功能TRUE T&L单元)、DX8(FX12combiner整数处理单元)、DX9(浮点像素单元)的混合体。而在DX9的应用中,不能出现非浮点精度的运算,所以前两者是不起作用的,造成了NV30晶体管资源的浪费,同时也影响了性能。

  NV30的PiexlShader单元没有Co-issue(标量指令+矢量指令并行处理)能力,而在DX9中,单周期3D+1D是最常见指令处理方式,即在很多情况下RGB+A是需要非绑定执行的,这时候NV30就无法并行执行,指令吞吐量大大降低。其次,NV30没有miniALU单元,也限制了NV30的浮点运算能力(在NV35中DX8整数单元被替换为miniALU)。

  另外,NV30在寄存器设计(数量及调用方式)、指令存储方式(读写至显存)等方面也有缺陷。NV30的寄存器数量较少,不能满足实际程序的需要。而且,用微软的HLSL语言所编写的pixel shader2.0代码可以说NV30的“天敌”,这些shader代码会使用大量的临时寄存器,并且将材质指令打包成块,但是NV30所采用的显存是DDR-SDRAM,不具备块操作能力。同时,NV30材质数据的读取效率低下,导致核心的Cache命中率有所下降,对显存带宽的消耗进一步加大。

  由于NV30是VILW(超长指令,可同时包含标量和SIMD指令)设计类型的处理器,对显卡驱动的Shader编译器效率有较高的要求。排列顺序恰当的shader代码可以大幅度提升核心的处理能力。在早期的一些游戏中,这种优化还是起到了一定的作用。但对于后期Shader运算任务更为繁重的游戏则效果不大。

  最终,虽然NV30与上代的NV25相比架构变化很大,但性能方面全面落后与对手的R300。不过NV30的架构还是有一定的前瞻性,ATI的R600在Shader设计方面与NV30有很多相似之处。

  现在再来看看,相信没人会认为DX9的改进有限了。正是由于NVIDIA没能适应DX9所带来ShaderModel指令的诸多改进,采用DX8+DX9混合式的架构,才导致NV30存在很大缺陷,在运行DX9游戏时效率很低。另外冒险采用先进工艺、不成熟的GDDR2显存、128bit位宽这些都极大的限制了NV30的性能,即便在DX8游戏中都无法胜过R300。

  而ATI则占据天时地利人和等一切优势,完全按照DX9标准而设计,甚至在DX9标准确立之前就早早的发布了DX9显卡,这不免让人怀疑微软的动机和做法,显然他不希望NVIDIA成为第二个Intel。

  从多重材质到T&L,从Shader programe到Unified Shader,在DirectX的影响下,图形API走向了光栅化过程,实时演算图像效果得以完善,有效的平衡了图形运算和虚拟现实的两者之间供需矛盾。

  整个DirectX发展命运的节点一个是DirectX 7中T&L的引入,一个是DirectX 8中shader的引入。T&L的引入第一次将显卡从一个单纯的打印机变成了有主动操作功能的图形处理器,而shader的引入则将运算能力这个无限可能的大门放置在了显卡面前,透过运算能力,人们终于可以比较准确并且实时的操作纹理上像素的色彩,虽然在当时已经是达到了桌面图形效果的极限,但是这些色彩离真实还相去甚远。这两个划时代的API都无法与DirectX 9.0C进行比较,因为直到DirectX 9.0C,光栅化的众多特效才得以最终实现。

  但是这样就完美了么?不是的。每次DirectX从应用程序那里接收到一条命令,它就需要先对这条命令进行分析和处理,再向图形硬件发送相对应的硬件命令。由于这个分析和处理的过程是在CPU上完成的,这就意味着每一条3D绘图命令都会带来CPU的负载。这种负载给3D图象带来两个负面影响:限制了画面中可以同时绘制的物体数量;限制了可以在一个场景中使用的独立的特效的数量。这就使得游戏画面中的细节数量受到了很大的限制。而使图像具有真实感的重要因素,偏偏是细节量。

  虽然DX9C号称可以显然仅仅能够实现所有特效是远远不够的,随着图形技术和硬件规格的快速发展,看似完美的DX9C很多矛盾逐渐显露,程序员开始抱怨拮据的资源和不兼容的接口,更为让人无法接受的是,更高阶的特效实现往往需要成千上万行的代码,很多实例已经趋于无法完成的危险边缘。

  这是DirectX历史上唯一一次半代更新就引起渲染大波的版本,DirectX 9.0c,大名鼎鼎的HDR技术诞生。

  以上诸多改进相信很多人都不关心也不想知道,绝大多数人记住的只有一个,那就是只有DX9C显卡才支持HDR技术,因为HDR所带来华丽的光影效果给所有人都留下了深刻的印象,那种从暗淡无光到流光溢彩的美好回忆,可以说是前无古人后无来者的!

  HDR的全称是High Dynamic Range,即高动态范围,是一种色彩存储方式,在游戏用于存储渲染和光照数据。HDR渲染可以用4句线.亮暗部的细节非常非常明显;4.所有光照为实时计算生成,可模拟人眼视网膜动态改变明暗细节。

  在DX9C之前,HDR已经得到了广泛应用,一般有FP16 HDR(半精度浮点型)和INT32 HDR(整数型),但效果都不如人意,FP16的动态范围不够大,而IN32的效率很低,因此这些HDR格式并未带来震撼效果。而FP32 HDR(32bit浮点格式)的诞生则大大拓展了明暗度扩展空间,使得游戏的光影效果有了质的提升,当年的《细胞分裂》、《FarCry》、《3DMark06》等一系列游戏开启HDR后的画面让人惊讶不已!

  在经历了GeForce FX系列惨痛的失败后,NVIDIA痛定思痛,要挽回在高端产品上的失利局面,仅靠架构已完全定型的NV3x系列作一定程度的增补显然是很难实现的。NVIDIA将更大的希望押宝在了新一代产品之上,它吸取了上一代产品的教训,重新设计的架构和完整支持DX9C标准,让这款显卡以全新的形象展现在用户面前。甚至有分析家评论GeForce 6800和GeForce FX简直不是一家公司设计的产品,其架构变化之大可见一斑!

  NV3X最大的弊端就是像素渲染单元效能低下,而NV40最强大之处就在像素单元架构部分。NV40拥有多达16条像素渲染管线暂且不谈,其每一个PSU的结构都值得探讨,NVIDIA将其称为Superscalar(超标量)的设计。普通的像素渲染管线只提供一组着色器单元,每个周期最多只能执行四组运算,而NV40的超标量架构则内含第二组着色器单元,让每个周期的运算量增加一倍。

  正因为如此,对手ATI的X800系列虽然在硬件规格上与NV40完全相同,但在DX9b游戏中的性能差距依然不小,这就是超标量架构的优势。当然固步自封的ATI在X800时代依然仅支持DX9b,无法开启HDR,丧失了很多卖点,让用户大失所望。

  6800的成功让NVIDIA风光无限,整个GeForce 6家族在各个价位都力压对手的X800家族,而且完美的架构使得NVIDIA可以轻易的扩充规模,发布了拥有多达24条像素渲染管线C显卡——GeForce 7800系列(其架构基本没变,只做了些许优化,这里就不多做介绍了)。

  X800的对手是6800系列,但它既没有性能优势,也不支持DX9C/HDR,这使得ATI经历了9700/9800系列短暂的辉煌之后再次陷入被动局面。于是,ATI开始研发下一代GPU,改良架构,准备重夺王位。但事与愿违,R520核心的X1800XT虽然使用了全新的架构,完美支持DX9C,但依然没能击败已经发布半年之久的7800GTX,因为X1800XT依然只有16条像素渲染管线条,差距如此之大,根本无法用新架构的效率及高频率来弥补。

  当时谁都没有料到ATI还预留了一手,原来R520这种架构的实力远不止16条像素渲染管线这么简单,ATI完全颠覆了传统“管线核心紧随其后,将像素渲染单元提升只48个之多,整整是R520的3倍!而顶点渲染单元和纹理单元以及GPU其它所有模块都没有做任何改动。

  从R520到R580的这种改变当时令所有人都很费解,因为包括G70和R420在内的以往所有GPU都是管线式架构,就是像素渲染单元内部包含了纹理单元,一般像素和纹理的比例是1:2或者1:1。而R520首次将像素单元和纹理单元拆分开来,成为独立的设计,所有的像素单元都可以互相共享所有纹理单元资源,R520的像素和纹理比例依然是1:1,而R580的比例则瞬间提升至3:1,相信资历较老的玩家一定记得ATI当年大肆鼓吹“三比一架构”。

  这样设计是因为ATI发现了游戏的发展趋势,像素渲染的比重越来越高,而纹理贴图的增长比较缓慢,相信大家还记得当年ATI的DX7显卡,其一条管线,现在被ATI一举提升至3:1。虽然当时很多人都不好理解,但从现在的发展来看,像素与纹理的比例越拉越大,DX10时代大概是3:1,DX11时代则变成了5:1甚至更高!

  除了具有前瞻性的3:1架构外,X1000架构还有另一大绝招就是HDR+AA技术。大家知道6800系列连续两年都是市面上唯一的DX9C显卡,当时所有的DX9C游戏都是基于NVIDIA的架构而开发,当使用N卡开启HDR特效时(准确的说是FP32格式),会占据原本属于MSAA的缓冲区,导致HDR和AA无法共存。HDR是DX9C的代表技术,能大大提升画面效果,而AA消除锯齿也能大幅改善画质,这两项关键特效无法同时开启让玩家们很郁闷。

  ATI的DX9C产品比NV晚了一代,ATI意识到了DX9C的这一缺陷之后,在其架构设计之初就考虑到了HDR和AA共存的问题,因此特别设计了专用的缓冲区,可以通过游戏或者驱动重新指定MSAA的缓存位置,从而同时开启HDR+AA。遗憾的是修改游戏或驱动兼容性并不好,支持的游戏也不多,虽然这确实是一个很大的卖点,ATI锐意进取的精神也值得尊重,但最终效果还是不如人意。

  另外,X1000也改进了像素着色单元的内部结构,每个像素单元都拥有两个算术逻辑单元和一个分支执行单元,其中ALU1只能执行加法(ADD)计算,ALU2能执行包括加法、乘法(MUL)、乘加(MADD)各类运算,两个ALU最高可以执行两条指令(3D+1D)。为了控制如此庞大的像素单元,ATI还针对SM3.0的特性改进了动态流控制功能,大大改进了SIMD架构的动态分支性能,让像素着色效能得到提升。

  功夫不负有心人,全新架构并且拥有多达48像素单元的X1900XTX,性能比X1800XT获得了大幅提升,完胜对手的7900GTX,而且越新的游戏优势越明显。强大的X1900XTX迫使NVIDIA推出双G71核心的7950GX2来对抗,虽然7950GX2单卡超越了X1950XTX,但双卡的话则因效率问题依然是A卡占优。

  DX9C是一代经典API,至今依然有很多游戏无视DX10/DX11,坚守DX9C平台,以至于HDR+AA的问题被遗留至今依然没能得到完美解决。NV40是因为发布较早没能解决这一难题,G70则是扩充像素和顶点的产物,也没能解决。

  ATI在X800时代未能抢得先机,因此在X1000架构当中花了很多心思,争取做最完美的DX9C显卡,他们确实做到了这一点,无论架构和性能都有优势。但由于晶体管规模太大,功耗表现不如人意,因此在市场方面X1000与GF7相比并无优势。

  高效快捷的利用硬件实现才是更加现实的任务。在敏锐的感觉到这一点之后,微软将下一代DX API的核心任务定位为进一步解放编程。

  在DirectX 10中,通过常量缓冲器、纹理阵列、动态shader执行分支等特性,将Instancing技术从这些局限中解放了出来。模型的实例没必要使用同一张纹理贴图;它们可以通过自己本身的纹理来从纹理阵列中取出各自的纹理;它们甚至可以有不同的特效——程序员可以写一个包含很多特效的“超级”shader,然后为每个模型实例运用这个shader程序的不同执行分支部分,从而给不同的模型赋以不同的材质特效。甚至连为每个模型实例使用骨骼蒙皮动画这种需要大量变换矩阵操作的问题,在16×4096常量寄存器的强大攻势下都可以迎刃而解。

  “克隆人”的时代已经结束了^_^ 通过DirectX 10的高级特性,Instancing将允许每个模型实例拥有它的个性:纹理贴图,pixel和vertex shader,以及动作动画。每个实例都将会有它自己的生命。

  Microsoft发布的DirectX 10代表了自从可编程Shader出现以来在3D API方面的最巨大的进步。通过一番脱胎换骨般的重建,DirectX 10展现出一系列非常醒目的新特性,包括高度优化的运行时,强大的Geometry Shader,纹理数组等等;这些特性将引领PC实时三维图形进入一个全新的世界。但是如此众多的改变对图形硬件厂商提出了前所未有的挑战,同时对游戏厂商亦是如此。

  之前适合处理DX9C游戏的GPU架构已经无法满足的要求了,NVIDIA和ATI在这个时候没有任何的规则可以依靠,也没有成功的先例可以借鉴,完全是摸石头过河。就在这样的背景下,诞生了第一代统一架构,NVIDA的G80和ATI的R600。

  另一方面,DirectX 10为游戏开发者提供了很多新的特性,采用这些特性可以用来开发大量的次世代图形效果。一些游戏厂商开始积极参与其中,CE2这样优秀的引擎脱颖而出,但由于这是基于强大、灵活的可编程特性基础上的,开发难度也是可想而知。实际上,更多的厂商决定保守的在原有引擎基础上稳扎稳打,慢慢升级,代表UE3。

  最后的结果想必大家已然明了,虽然G80相比上一代有了质的的提升,但是在发布初期,根本无法满足Crysis这样大量采用DX10技术的先进游戏。而相对于NVIDIA,ATI的R600更是一败涂地,连之前的DX9C游戏效率都乏善可称。

  以往的DirectX游戏无论多么优秀,始终都会有OpenGL引擎和游戏站出来发起挑战,而且其画面还相当不错。但DX9C之后,就只有ID Software还在负隅顽抗了,到了DX10时代,再也没有任何一款OpenGL能与DX游戏相抗衡,微软终于一统江湖!

  无论从哪个方面来看,GeForce 8800与DX9时代的Radeon 9700都非常相似,微软的新一代API尚未正式发布,而新显卡居然开卖了大半年,虽然没有新游戏的支持,但在老游戏下的性能依然非常完美。因此每一代成功的显卡最关键的还不是API,还是核心架构。DX10是API的又一次革命,而G80则是GPU架构的一次伟大革命:

  如果说R580像素与纹理3:1的比例让人很费解的线的流处理器设计则让用户们一头雾水:从G71的24条像素管线个流处理器,哪来的这么多?

  传统的Shader不管是像素还是顶点,其实都是SIMD(单指令多数据流)结构,就是个4D矢量处理器,可以一次性的改变像素的RGBA数据或者顶点的XYZW数据。而G80的流处理器则是1D标量处理器,它一次只能计算像素和顶点4个数据中的1个,如此说来效率岂不是很低?

  当然不是,因为随着游戏的发展,GPU所要处理的指令已经不是4D这种常规数据流了,进入DX10时代后Z缓冲区(1D)或纹理存取(2D)等非4D指令所占比重越来越多,此时传统的Shader单元在执行此类指令时的效率会降至1/2甚至1/4,即便有Co-issue技术的支持效率改进也十分有限。

  而G80 1D标量流处理器执行各种类型指令时的效率都能达到100%,这也就是NVIDIA对于GPU架构大换血的主要目的。G80的这种架构被称为MIMD(多指令多数据流),其特色就是执行效率非常高,但也不是没有缺点,理论运算能力偏低、晶体管消耗较大,当然由于对手产品实力不行,这些缺点在很长一段时间内都没有被发现。

  而且NVIDIA的1D标量流处理器还可以异步工作在超高频率之下,一般是GPU核心频率的两倍,由此大幅提升了渲染能力。这一技术ATI至今都未能实现。

  我们来仔细看看R600的流处理器架构:Branch Execution Unit(分歧执行单元)就是指令发射和控制器,它获得指令包后将会安排至它管辖下5个ALU,进行流控制和条件运算。General Purpose Registers(通用寄存器)存储输入数据、临时数值和输出数据,并不存放指令。

  由于内部的5个1D ALU共享同一个指令发射端口,因此宏观上R600应该算是SIMD(单指令多数据流)的5D矢量架构。但是R600内部的这5个ALU与传统GPU的ALU有所不同,它们是各自独立能够处理任意组合的1D/2D/3D/4D/5D指令,完美支持Co-issue(矢量指令和标量指令并行执行),因此微观上可以将其称为5D Superscalar超标量架构。

  通过上图就可以清楚的看到,单指令多数据流的超标量架构可以执行任意组合形式的混合指令,在一个Stream Processing Units内部的5个ALU可以在单时钟周期内进行5次MAD(Multiply-Add,乘加)运算,其中比较“胖”的ALU除了MAD之外还能执行一些函数(SIN、COS、LOG、EXP等)运算,在特殊条件下提高运算效率!

  现在我们就知道R600确实拥有64x5=320个流处理器。R600的流处理器之所以能比G80多好几倍就是得益于SIMD架构,可以用较少的晶体管堆积出庞大规模的流处理器。但是在指令执行效率方面,SIMD架构非常依赖于将离散指令重新打包组合的算法和效率,正所谓有得必有失。

  通过前面的分析我们可以初步得出这样的结论:G80的MIMD标量架构需要占用额外的晶体管数,在流处理器数量和理论运算能力方面比较吃亏,但却能保证超高的执行效率;而R600的SIMD超标量架构可以用较少的晶体管数获得很多的流处理器数量和理论运算能力,但执行效率方面却不如人意。

  G80的架构显然要比R600改进更为彻底,所以打从一开始G80/G92就遥遥领先与R600/RV670,其后续产品GT200一如既往的保持领先优势,但幅度没有G80那么大了,因为R600的架构的特性就是通过数量弥补效率的不足。

  DX9C和DX10听起来非常完美,但也有明显的缺点,就是系统资源开销很大,运算效率比较低,所以DX11的重点就落在了改进渲染效能方面。DX11除了将ShaderModel从4.0升级至5.0外,还有两项最重要的改进就是Tessellation和DirectCompute,其中DirectCompute的指令集主要来源于ShaderModel 5.0。

  当然还有多线程渲染、增强的纹理压缩格式等其它若干改进,在我们之前的HD5800和GTX480评测中已经做过详细介绍了,因此就不再赘叙。

  Tessellation被译为镶嵌,就是一种能让GPU在模型内部自动插入新的顶点,从而让几何图形变得无比复杂细腻的技术,它可以在很少的性能损失下换取明显的画质提升。DX11游戏在画面上的改进主要来自于曲面细分技术,而且曲面细分还能带来很多意想不到的特效!

  为了配合Tessellation技术,微软还专门设计了两种全新的Shader着色器,Hull和Domain,以便更精确的控制镶嵌位置,并置换位移贴图。这就与DX9/DX10时代的Tessellation有着本质区别,无法照抄照搬。

  DirectCompute则是微软的GPU计算API,可以让GPU处理一些非图形类指令,获得远超CPU的性能。

  不过目前DirectCompute主要还是用在图形渲染后处理器方面,可以产生非常逼真的景深、透明效果。限于篇幅我们不再赘述DX11的技术细节,在《决战性能之巅!NV双芯旗舰GTX590评测》一文中有详细论述,有兴趣的朋友不妨参阅。

  在经历了DX10时代R600的失利之后,ATI对于微软新一代API十分重视,第一时间对于DX10.1提供了支持,可惜DX10.1相对于DX10改进有限,并不像DX9C那样带来震撼的HDR技术,因此未能得到足够的重视。但ATI积极向上的精神让它在DX11时代抢得先机。

  但令人奇怪的是,ATI并没有因为DX11而改变架构,而是几乎原封未动的照搬了上代RV770核心,除了显存位宽维持256bit不变之外,Cypress的其它所有规格都正好是RV770的两倍,而且在流处理器部分可以看作是双核心的设计,几乎就是并排放置了两颗RV770核心。

  在流处理器部分,RV870相对于RV770改进有限,只是加入了DX11新增的位操作类指令,并优化了Sum of Absolute Differences(SAD,误差绝对值求和)算法。基本上,除了新增DX11支持和扩充规模外,Cypress与RV770在架构方面没有本质区别。

  HD5000系列的主要优势就是功耗控制比较出色,另外功能方面Eyefinity多屏显示以及次世代音频源码输出都很有特色,架构方面确实没有多少亮点。

  HD5800这一领先,又是半年,这次NVIDIA的阵脚并没有像NV30那样被打乱,而是按部就班的按照既定的设计目标推出全新架构的一代产品,而不是像ATI那样在上代产品基础上改改就发布新品,因为DX11是全新的API,必须为DX11新的特性做相应的优化,才能获得最出色的DX11效能。

  GF100核心是既G80和R600之后,近4年来GPU架构改进最大的一次,主要体现在以下四个方面:

  1. GPU核心处理部分被划分为4个区块(GPC),每个区块内部囊括了所有主要的图形处理单元。它代表了顶点、几何、光栅、纹理以及像素处理资源的均衡集合。除了ROP功能以外,GPC可以被看作是一个自给自足的GPU,所以说GF100就是一颗四核心的GPU。

  2. 每个GPC都拥有一个独立的Raster Engine(光栅化引擎),负责边缘设置、光栅器消隐以及Z轴压缩功能。可大幅提升GPU在高分辨率下的性能。

  3. 每组SM都拥有一个独立的PolyMorph Engine(多形体引擎),负责GPU的几何图形转换以及Tessellation曲面细分功能,彻底消除GPU的几何性能不足的瓶颈,从而大幅提升DX11性能。

  4. GPU的一二级缓存都经过了重新设计,架构上更类似于Intel的多核CPU,改进流处理器和纹理单元的性能,进一步提升MIMD架构的效能。

  和上代的GT200相比,GF100的所有模块几乎都经过了重新的设计,就连CUDA核心(流处理器)内部的ALU运算单元都针对新的浮点运算格式以及函数做了改进与优化,而不仅仅是兼容SM5.0指令集而已。相反ATI的Cypress核心与上代的RV770相比几乎所有模块都未做任何改进。

  经过我们此前的评测来看,GTX480/470在DX10游戏中领先HD5870/5850的幅度并不大,20-30%左右的优势都在意料之中。但在DX11游戏和应用中性能优势十分显著,尤其是Tessellation性能遥遥领先于HD5870甚至双核心的HD5970。DX11特效使用的越多,GTX480/470的优势就越明显。问题显然出在GPU架构方面,GF100是一颗完全针对DX11设计的、采用的全新架构的GPU,而Cypress核心只不过是上代DX10架构外加SM5.0指令集而已,只能说支持DX11但具体的效能不容乐观。

  通过以上分析可以看出,由于HD5800的架构与HD4800完全相同,只是流处理器规模翻倍而已,因此它确实拥有出色的DX10/10.1性能,但DX11的性能却很一般。因为DX11是一款全新的API,并不是针对DX10的小修小补,很多特性不是兼容SM5.0指令集就能做得到的。

  ATI虽然通过抢先发布DX11显卡赚得了满堂彩,但却没能经得住时间的考验,未能重现DX9时代R300的辉煌。因为时代变了,当年的R300是全新的架构,完美支持DX9,而NV30架构存在很多缺陷。而现在正好相反,Cypress完全是新瓶装旧酒,而GF100则是线测试中都得到了证实。

  回顾DirectX的发展史,就会发现虽然微软一直在左右着两大显示巨头的发展,但这只是外因而不是内因,真正决定胜败的关键还是在GPU体系架构方面,这才是双方设计实力的体现。

  纵观NVIDIA和ATI近几年的交锋:DX7 NV占优,DX8前期ATI占优后期NV反超,DX9 ATI优势明显,DX9C前期NV大获全胜后期被反超,DX10 NV一路遥遥领先,DX11 ATI抢得先机但又被NV反超——似乎毫无规律可循,实则不然,且听笔者慢慢道来:

  从DX7、DX8、DX9、DX9C、DX10,每逢DirectX有重大版本更新时(主要是ShaderModel指令集),GPU架构都会做大幅度的调整,甚至是抛弃老架构重新设计一套新的架构,NVIDIA和ATI双方无一例外!而且新的架构总是能够取得胜利,因为全新的架构完全针对新的API设计,能够彻底发挥出新技术和特性的优势,确保发挥出预期的效果。

  比如DX7 DX8时代,双方都是全新的架构,产品的性能其实相差不多,DX8的Radeon 8500甚至超越了GeForce 3,GeForce 4的优势是建立在ATI已经放弃DX8提前进入DX9时代的基础上;DX9时代全新架构的R300大获全胜,NV30的混合架构效率极差一败涂地;DX9C时代NV40重返王座,其后续产品G70/G71因为没有更换架构,在ATI全新的R580面前失去了以往的辉煌;DX10时代G80/G92革命性的架构一路遥遥领先,R600的架构脱胎于R580,表现不甚理想,曾一度遭到怀疑,但随着800SP RV770诞生后,其出色的表现证明了ATI当初的设计思路其实并没有错,但始终没有得到翻身的机会。

  小进化研究种以下的进化改变,包括:①小进化的因素和机制,研究遗传突变、自然选择、随机现象(如遗传漂变)等因素如何引起群体的遗传组成的改变等。②种形成,研究新种的形成方式和过程,研究小进化因素如何导致同种的群体之间的隔离的形成和发展,研究种内分化和由亚种、半种到完全的种的发展过程等。

  大进化研究种以上的分类单元在地质时间尺度上的进化改变,其对象主要是化石,最小研究单位是种。主要研究内容包括:①种及种以上分类单元的起源和大进化的因素。②进化型式,在时间向度上进化的线系的变化和形态。③进化速度,形态改变的速度和分类单元的产生或绝灭速度,种的寿命等。④进化的方向和趋势。⑤绝灭的规律、原因及其与进化趋势、速度的关系等。 小进化与大进化在物种这一层次上相互衔接,事实上小进化与大进化都研究物种形成。

  和生物的间断平衡进化类似,如果DirectX版本停滞不前的话,GPU架构更不会更换,比如DX9C时代的GF6和GF7,DX10时代的GF8/GF9/GT200和RV670/RV770。DirectX的半代更新,比如DX7.1、DX8.1、DX9.0b、DX10.1这些版本(DX9C不算,因为其ShaderModel从2.0升至3.0),双方都不会更改GPU架构,只是在上代产品基础上小修小补,通过扩充指令集的方式兼容新API即可。尤其是DX10.1这个版本,由于改进太少,双方竟然将G80/R600这一套架构用了5年之久!

  以上结论看起来很有意思,但是唯独DX11是个例外:ATI对RV770(还是R600架构)小修小补制造出了DX11显卡,这样的做法确实让人感到意外,但也不难理解,ATI信奉“先行者胜”的理念,认为只要抢先发布DX11显卡就能取得成功。

  现在看来,ATI冒险的选择是明智的。这是由两个原因造成的。我们可以理解为ATI舍弃了地利而顺应了天时、人和。

  抢先、缩短研发前导时间对于显卡行业,甚至整个半导体行业来说都是胜利的铁则。

  天时不如地利地利不如人和,追寻显卡发展的轨迹,三大条件就如同达摩克利斯剑,虽然不能看到它的存在,但却从来没有消失。而只要缺少一环,后果不堪设想,3Dfx就是失去地利而死的经典案例。

  ATI首先完美充当了市场的快速反应者,当大家都对DX10显卡糟糕的性能表现失望不已之时,DX11发布了,ATI推出的HD5000系列虽然本身架构并不科学,依然斩获了市场大量份额这个是意料之中,但NVIDIA之后千辛万苦推出的Fermi为何也没能击溃HD5000呢? 找到行业竞争的本质,回过头来看看现在两大阵营的纠结对峙,我们不难就理解了。

  说是HD5000先入为主,或者Fermi功耗掣肘,都是一些微不足道的表面现象,真正原因是Fermi虽然在API上更加贴近DirectX 11,但是却在决定性因素:人和上,没能扩大战果。原因在《DX11谁主沉浮?3DMark华丽背后的隐患》一文中已经有了详细的论述,这里简单总结就是:

  家用机平台的踯躅不前让显卡赖以生存的游戏行业畸形发展。面对大量涌现的新DX9.0C游戏大作,空有线的N卡英雄无用武之地。事实上显卡生存的环境正在朝多元化发展,游戏行业和API的不同步,工艺进步的未知性导致了环境的复杂化。现阶段按照以前发展的思维千方百计贴近API,堆积晶体管并不一定能取得优势,因为适者生存而不是强者生存。

  但两家伟大的公司接下来的表现让我不禁怀疑当局者迷,他们依然在重复着乏味低级的口水战,N说A胸无大志,满足小修小补难成气候。A说N好高骛远,眼高于顶走路必然摔跤……输了不知道为何输算是人生的悲剧,赢了不知道为啥赢更是杯具中的杯具。市场的过度竞争更是让两大阵营开始不择手段,用简单的产品定位来打击对手自我YY一下就好,但一些产品经过简单修改甚至只是刷新Bios便虚标代号上市就不太理智了。这种做法对于企业自身无异于饮鸩止渴,获得了短期的市场效益,损失的却是辛苦经营来之不易的企业形象,客观上也是进一步扰乱了显卡市场,在这一点上代表高科技的芯片老大们是不是应该向传统行业的成功者们学习学习?

  能否在竞争白热化的红海中找到快速发展的蓝海,关键在于决策者能否抓住行业发展的本质。但兵无常势,水无常形,人不可能踏入同一条河流,复制任何人成功的经验显然都难以克隆成功本身,那出路又在何方?

  追随API也好、优化主流游戏也好做市场的快速反应者也罢,显卡芯片厂商做这些事情天经地义,但千万不要把手段和目的混为一谈,如果搞不清楚为什么要去追随API,为什么要去优化游戏的本质,必然在企业发展的道路上迷失方向……缺乏竞争的行业是僵化低效的行业,而只盯着一个对手搞竞争同样会让企业活力丧失殆尽。下一代游戏平台已不再遥远,强大的第三方势力早已虎视眈眈,留给老朋友们的时间都不多了,任何危机从形成到爆发都是一个量变引发质变的过程,而谁会成为下一个出局者取决于谁犯的错误更加致命!

评论关闭

分享到:

开户电话:13211831112│www.8881368.com

我的微信号:138 0000 0000 (左侧二维码扫一扫)欢迎添加!

日本客轮撞上浮标已滞留原地长达16小时 船身右舷螺旋桨出现部分损伤 北晚新视觉