渲染吃cpu还是显卡的时候看下cpu有几个在工作,只有1个或几个满载其他都空闲

后使用快捷导航没有帐号?
查看: 3939|回复: 2
求宏碁W500的WIN7平板,处理器要AMD C60的
该用户从未签到
宏碁W500平板(带底座)
宏碁W500平板(带底座)
上海市徐汇区
本帖最后由 mitsuhide 于
17:27 编辑
对于显卡(显示卡、GPU)没几个人觉得陌生吧,但在字符时代,用户的计算机上并不存在“显卡”这个概念。但自从有了GUI图形化操作界面之后,有的仅仅是所谓的“显示芯片”,在3D Game出现在PC平台时,这一名称变为“图形芯片”,后来当nVIDIA制造出功能更强的“图形芯片”,使图形应用对CPU的依赖逐渐降低,由此诞生了“图形处理器”,nVIDIA称之为‘GPU’,ATi称之为‘VPU’。2006年以后,它们又有了新的名称,即“高并行处理器”。虽然业内习惯上对其还是沿用GPU的名称,但这已是一个全新的时代。而现在,高性能GPU开始整合于CPU内部,彼此协同的异构计算方式成为新的方向,这又带领着图形工业朝向新的领域前进。GPU的体系架构、晶体管数、管线/流处理器规模、工艺、频率、功能等等技术参数决定着GPU的性能,同时又与API标准交织在一起,其中以Microsoft DirectX系列标准API尤为重要。
接下来,我们将以时间为轴回首图形史上的架构变迁,分别是:加速卡时代、GPU时代与通用计算时代,从中我们也将了解到这个行业过去这些年的风云动荡;同时将用一个简单的统计学公式来预测一下GPU未来的性能发展。
加速卡时代:3D初生
& && & 在最初的阶段,只有显示芯片,它的功能就是将CPU运算的结果显示在CRT屏幕上,本身只是简单的功能逻辑。图形时代无疑是从PC进入3D世界之后开始的,3Dfx的Voodoo是这个时代的里程碑。
& && &在Voodoo出现之前,其实就已经有一些简单的3D游戏出现在PC之上了,但当时3D渲染工作只能由CPU来完成—所谓的3D渲染,从计算层面来讲其实就是大量的、可同时进行的浮点计算。如果要让3D渲染工作可以流畅地进行下去,就要求计算系统能够提供足够高的硬件性能。由于当时的CPU都是单线程,只能一步一步地依次进行各个计算操作,而完成所有这些计算工作就需要比较长的时间。满足3D渲染流畅度的标准要求是30fps,也就是一秒钟生成并显示出30个3D画面,即便是面对当时非常“简陋”的3D游戏,这个任务所需的浮点计算量也是CPU所无法承受的。
1.3Dfx Voodoo开创3D时代
& && & Voodoo加速卡诞生于1995年11月,它的职能就是纯粹的3D加速器,本身不具备显示输出的功能,所以我们只能将它看作一种辅助3D运算的协处理器。Voodoo加速芯片的原理很简单,就是将原本由CPU负责处理的3D渲染任务接管过来。注意,它还只是有限度的接管任务,核心在于帮助计算多边形和像素填充工作,所以这两方面的性能在后来也成为衡量图形芯片强弱的两个主要指标。
& && & Voodoo支持丰富的3D功能,它具有透视、双线性过滤、像素矫正、alpha图形融合、精确贴图、纹理描影与贴图转换在内的所有3D渲染技术,并可支持诸如16位波动RGB骨架缓存、多种贴图缓存、反混淆、Z缓冲、雾化、透明、半透明处理在内的各种视觉效果,尤其是可对雾化效果进行硬件加速,这在当时是划时代的。为了保证游戏兼容性,Voodoo直接支持包括微软Direct3D和OpenGL在内的当时所有主流API,事实证明,这种做法是相当明智。而在硬件本体上,Voodoo加速的规格也非常豪华,它搭载了4MB容量的显存,核心频率达到50/55MHz,像素填充率达到当时看来不可思议的每秒4500万,多边形生成能力则达到每秒100万个,这些规格在当时都创下了纪录。
Voodoo加速卡
& && &作为加速卡,Voodoo必须与显卡配合才能正常运作,这也意味着额外的成本提升。1996年11月,3Dfx发布了Voodoo Rush,它在Voodoo加速卡的基础上增加了2D显示功能的模块,但3D内核本身没有任何变动。到了1998年,新一代Voodoo2加速卡到来,它的性能提升十分巨大:多边形运算效能达到每秒300万个,为Voodoo的3倍;像素填充速度也提升到每秒9000万,相当于Voodoo的两倍。在同一运算周期中,Voodoo2可以为每个像素渲染多个(实际是两个)材质,而且这一功能是借助一个像素芯片和两个纹理芯片共同完成。相比之下,第一代的Voodoo只附带了一个纹理芯片,一个周期只能对像素进行单材质处理,这就意味着Voodoo2可以带来更为精细的3D效果。
Voodoo2加速卡,以支持SLI双卡运作而著名。
& && & 不过,Voodoo2最令人震撼的地方还在于它首度支持双卡并联的SLI技术,这令狂热的游戏玩家们感到疯狂。即便这种双卡加速意味着昂贵的支出,但狂热的游戏玩家依然乐于耗资600美元购置SLI双卡方案。据调查显示,当时有30%的Voodoo2用户都采用了双卡方案,这也成为3D图形史上耀眼的一幕。尽管SLI技术后来没有被3Df x持续下去,但它所开创的理念却成为图形业界灵感的源泉。若干年之后,nVIDIA推出自己的SLI技术,ATi也带来类似的CrossFire多显卡技术,这些技术归根结底,最早的理念源头便是Voodoo2的SLI。
& && & 1999年2月,3Dfx带来了Voodoo3显卡,而这个时候显卡市场可以说群雄并起,其中以NVIDIA给3Dfx带来的威胁最大。不幸的是,Voodoo 3仅仅只是Voodoo 2的改进版:它可以被看作是Banshee的2D部分加上Voodoo2的3D部分,再加上少量的新特性。Voodoo3没有追随上业界最新的技术特性,比如说32位色渲染模式已经不可或缺,但Voodoo3居然还无法提供支持,这让很多玩家感到非常失望,虽说在32位下玩游戏的用户确实不多,但是用户总是期望能得到更多、更先进的特性,即便这种特性根本用不到。3Dfx的开发者显然是务实主义者,他们的错误就在于,认为用户们也和他们一样理性和务实,这就让Voodoo3的许多规格参数都显得保守,比如除了32bit色游戏模式,Voodoo3也无法支持AGP纹理贴图。而此时NVIDIA已经拿出强悍的TNT2,引诱了大量的3D用户,也是从这里开始,3Dfx的发展开始进入下坡路。
& &&&<font color="#dfx公司大部分的VooDoo3的芯片显卡都是STB的产品。我手里的这块为小影霸voodoo3 2000,可能是OEM产品,线路板为墨绿色,电容的排列显得很整齐,板上的焊点也很清晰,显示芯片上只有一个散热片。正面有STB system inc的字样,背面写着3DFX。说明书中的数据说明:VooDoo3 2000板载16M显存(HY TC-7)、143MHz DACMAC、最大分辨率.7M/60HZ。
& && &3Dfx的最后辉煌当属Voodoo 4、Voodoo 5和Voodoo 6,以今天来看这个方案相当前卫。3Dfx首次引入VSA-100架构,VSA的全称为:Voodoo Scalable Architecture即“可升级型Voodoo架构”。这种架构可以进行更弹性的设计,最高可支持32块图形芯片并行运作。VSA-100芯片采用了0.25微米的制造工艺,集成140万个晶体管,内置350MHz的RAMDAC,运行频率为166MHz,最高支持64MB显存。VSA-100终于使3Dfx迈入了32位渲染的行列,其支持先进的T-Buffer功能(但必须有成对的芯片才能实现),以及焦点模糊(Depth of Field Blur)、柔和阴影(Soft Shadows)、柔和反射(Soft Reflections)等特效。
& && & 3Dfx首先推出单芯片版本的Voodoo4 4500,但它的性能太差,无法与nVIDIA的TNT2系列竞争。后来3Dfx推出双VSA-100芯片的Voodoo 5 ,虽然这两款产品性能出众,可惜双芯片意味着高昂的价格,让用户纷纷倒向了nVIDIA。尽管如此,3Dfx还是按自己的计划推出四芯片的Voodoo 5 6000,这个怪兽级的产品定价高达600美元。可是,最后由于设计复杂、元件短缺以及3Dfx的财政问题,Voodoo 5 6000在几经跳票之后并没有上市。
多芯片的Voodoo 5 6000,是3Dfx最后的绝响。
& && &3Dfx于2000年12月被nVIDIA收购,作为PC 3D图形的开拓者永载史册,它所创立的诸多技术影响深远:多显卡的SLI技术后来被nVIDIA使用,多芯片技术为ATI所用并在AMD时代大放异彩。回头来看,3Dfx虽已陨落,但它的技术理念却让整个图形工业都受益匪浅。3Dfx公司的Glide接口,这一随Voodoo红极一时的API也消亡。
2.NVIDIA从Riva 128到TNT2 & && & 1997年5月,NVIDIA推出著名的Riva 128,宣布正式进入3D图形市场。RIVA128是一款基于128位的2D和3D图形核心,其中3D处理单元拥有一条像素渲染管线,可进行单材质的处理,图形核心则工作在60MHz的频率上。此外,Riva 128支持4MB SDRAM和SGRAM显存,显存带宽达1.6GB/s,这些规格都属于当时的主流。而在接口选择上,当时保守的3Dfx还是基于PCI总线,但NVIDIA志在称王,坚决不走3Dfx的老路,于是冒险采用当时还未得到多少支持的AGP 1X接口。事实证明,这种看似激进的做法是后来者超越传统势力的法宝。而后来的nVIDIA也一直保持这种激进的作风,从GeForce FX 5800,到今天的Fermi,无一不是如此。
Riva 128让NVIDIA在3D市场崭露头角
& && & Riva 128的硬件性能非常强悍,其内置的硬件三角形处理引擎每秒可以进行5亿次浮点运算,生成120万个三角形,最大像素填充率则达到每秒6000万个,这些规格都明显超过了3Dfx的Voodoo加速卡。而在图形API的支持上,Riva 128对微软Direct3D提供了完整的支持,对OpenGL的支持也是非常到位,游戏兼容性颇为理想。这两个方面的要素令Riva 128在实际应用中的表现十分出色,虽然其画面品质难以同当时风靡全球的3Dfx Voodoo比肩,但在非GLIDE API游戏性能的比拼中却超过了后者。
大获成功的Riva TNT图形芯片
& && & 1998年10月,nVIDIA推出性能更强的新一代显卡,这便是著名的Riva TNT。它的名字会让人很自然就联想到炸药,但实际上TNT是TwiN Texel的缩写,意思是拥有2条像素流水线,这也使Riva TNT具有双倍的渲染引擎。而这两条像素流水线都采用32位色设计,每条流水线有1个TMU(纹理贴图单元),每个周期可并行处理两个像素,这款芯片原定采用0.25微米工艺生产,核心频率达到110MHz,在此频率下它的像素填充率可以达到每秒2亿5000万个—这个数字甚至大幅超过双卡的Voodoo 2 SLI系统。但由于当时0.25微米生产工艺并不成熟,NVIDIA只能采用0.35微米工艺进行生产,这就连累了Riva TNT,使之只能工作在90MHz频率下。即使全速运行,Riva TNT也只能达到每秒1亿8000万的像素填充率,但这仍然与Voodoo 2 SLI系统实力相当。至少在这一点上,我们能够看出Riva TNT的确性能惊人。
& && & RivaTNT的性能指标主要是内置了250MHZ的RAMDAC,并支持128位数据总线和AGP 2X模式;另外还具有24位Z缓冲、32位色渲染的能力;API方面则对DirectX 6进行了优化,并对OpenGL实现良好的支持。在2D方面则提供了对@24bit高分辨率的支持,并附带了DVD、NTSC制式和PAL制式的 TV OUT等功能,基本上各项3D指标都超过了Voodoo 2。而因为芯片结构复杂,Riva TNT的晶体管数量竟然与同时代的Pentium Ⅱ一样多,这也是图形芯片第一次在晶体管规模上赶上CPU的水平。
& && & Rive TNT的成功激发了NVIDIA加速推出新品的热情。1999年3月,NVIDIA高调发布新一代图形芯片:Riva TNT2,此时与第一代TNT的发布间隔仅仅只有半年时间,nVIDIA创造了超越摩尔定律的火箭速度。TNT2是TNT的改进版本,它采用0.25微米工艺制造,支持AGP 4X接口,128bit位宽和32MB容量的显存,这都是之后主流显卡所遵循的默认标准。从技术上讲,TNT2并不是一款革命性的图形核心,而只是过往产品的改良,但它带来的影响却非常深远:它定义了新一代显卡应有的技术规范,如128bit核心、32MB显存和AGP4X等关键的特性。虽然后来的GeForce 256拥有革命性的设计和令人眼花缭乱的新技术,但它的普及度和市场影响力却远不及TNT2。
& && &TNT2之所以成为经典,除了广泛的产品线、出色的兼容性和一流的性能外,来自驱动程序方面的助益也非常关键。当时ID Soft出品的《Quake》系列是最火爆的3D游戏之一,而《Quake》系列完全采用OpenGL API。在这方面,TNT2的优势就非常明显。当时不少《Quake》系列玩家在Voodoo 3和TNT2之间摇摆不定,但最后TNT2凭借优秀的设计,更强的3D性能,以及可在任何一种分辨率下赶上Voodoo 3的性能逐渐占了上风。加之它对OpenGL极为出色的支持能力俘获了大量玩家,原本3Dfx的死忠们也纷纷倒戈,从此奠定了nVIDIA的胜局。
& && &&&nVIDIA将TNT2系列大体上分为三种版本。第一种是“Vanta”,它是一款低价且适用在内建主板上的绘图芯片,销售范围定在OEM市场。Vanta的售价相对而已相当的便宜,每一万颗Vanta单价为19块美金。现在市场中一些M64的产品应该说也是“Vanta”的一种,虽然说Vanta采用的是TNT2的核心架构, 0.25微米制程的Vanta在工作的时钟只有采100MHz(核心)与125MHz(内存)。且为了增加价格的竞争力, 内存容量也只有8~16MB。第二种也就是标准TNT2芯片,一般工作频率订在125MHz(核心)150MHz(内存),加上TNT系列独有的(Twin Texel)双Texel传导架构。TNT2在填图速率(Fill Rate)能够达到250 Mtexel/Sec或以上。第三种就是TNT2 Ultra,它与TNT2最主要不同的地方就是他的工作时钟。TNT2 Ultra时钟是在150MHz(核心)及175MHz(内存)。
3.专注于OEM市场的ATi
& && &1996年1月,ATi推出3D Rage系列3D显卡,3D Rage的内核基于之前的Mach64 2D,只是加上了3D功能,它拥有1条像素流水线和1个顶点着色单元,能处理光源、支持MPEG-1硬件加速等,另外这枚芯片采用0.5微米工艺生产。3D Rage整体的规格中规中矩,而且它的兼容性比较差,销量很低,也没有多少人能记住它,业界认为只有随后的3D Rage Ⅱ+DVD才是ATI第一款真正的3D图形处理器。
双芯片的Rage Fury Maxx显卡
& && & 3D Rage Ⅱ+DVD基于重新设计的Mach64 GUI引擎,优化了2D性能,它可以支持硬件Z-缓冲、纹理压缩、线性过滤和纹理混合这些3D技术,像素填充率是每秒1000万,性能比前代3D Rage提高了两倍。此外,3D Rage Ⅱ+DVD较好地解决了兼容性问题,也继续保持视频方面的优势。它新增了MPEG-2(DVD)硬件动态补偿功能,在播放DVD时能够起到辅助作用,这在当时领先业界。再者,3D Rage Ⅱ也可以和ImpacTV辅助芯片配合,实现播放电视节目的能力,这也是后来ATI著名的ALL-IN-WONDER显卡的第一代。
& && & 1997年4月,ATI推出第一款具有像样3D性能的3D Rage Pro图形芯片。ATI 为这款芯片新加了三角形设置引擎;也改善了透视法修正,距离模糊和透明化效果。新增了反射高光技术和增强了图像播放功能。3D Rage Pro支持最高8MB SGRAM或16MB WRAM,这些规格在当时都属主流。而令人兴奋的是,它终于提供了和Voodoo相当的每秒4500万像素填充率,同时其VQ材质压缩功能每秒可生成120万个三角形,配合AGP总线的高带宽,这款显卡能够获得相当出色的3D加速性能;加上ATI结合了改良后的运动补偿技术,使3D Rage Pro拥有更高质量的DVD回放功能,全面的功能让ATI显卡在OEM市场大受欢迎。
& && & 1998年10月,ATi带来了他们的新一代显卡:Rage 128 GL。这款产品的指标不俗,硬件性能同Voodoo 2不相上下,对32位色的支持更是领先业者。比如将游戏的画质模式提高到32位色时,Rage 128 GL的性能下降极低,而对手们则会出现大幅度下降的情况。之后ATI的各代产品都保持这种风范,可惜当时支持32bit的游戏甚少,Rage 128GL的此项优势未得到充分展现。
& && & 1999年4月,ATi带来Rage系列的最后产品Rage 128 Pro。Rage 128 Pro将竞争对手锁定NVIDIA的TNT2系列,它拥有更高的时钟频率,支持非线性过滤,各向异性过滤,纹理压缩等技术;Rage 128 Pro也升级了三角生成引擎,三角形生产速率达到每秒800万个。综合这些改善,使得Rage 128 Pro的3D性能比Rage 128GL高了50%。同年,ATi发布一款意义重大的新品,它的代号是“Rage Fury Maxx”,也就是大名鼎鼎的“曙光女神”,ATI第一款双芯片显卡。这款产品固然没有在市场上获得太大的反响,但它在技术业界地位非凡,为日后的多显卡和多芯片发展思路奠定了基础。
4.S3、Matrox、Trident:加速卡时代的昙花一现
& && & 作为初生的市场,3D加速卡的时代可以说群雄混战,除了上述的3Dfx、NVIDIA和ATI,S3、Matrox、Trident、3Dlabs和英特尔都曾经红极一时,但这些厂商都无法跟上NVIDIA的超快产品更新节奏,最终不得不黯然退出主流市场的竞争——S3在推出几代Savage之后,被出售给VIA,它的图形技术继续在VIA芯片组中延续,而当VIA无奈结束芯片组业务之后,Savage便在嵌入领域灵魂附体。Matrox在2D显示的造诣无人可及,它的G200、G400、G550都创造了2D显示品质的传奇,并以双头显示功能吸引专业客户。进入GPU时代之后,Mat rox曾推出价格昂贵的“Parhelia”显卡,可惜这也未挽回Matrox在主流3D市场的败局。之后Matrox彻底退守金融、医疗等小众化的专业2D市场(比如显示墙)。
支持双头显示功能的Matrox G400,一度在市场上相当耀眼。
& && & Trident是2D显卡时代的一个传奇,但它却没有跟上3D的潮流;而作为专业显卡强者的3Dl abs同样命运多舛,它的Permedia系列显卡只赢得很少的一部分市场,至于后来的GPU时代完全与它无缘,3Dlabs后来被新加坡创新公司所并购。至于英特尔,曾以i740/i752著名,后来退出独立显卡市场的竞争,将图形技术运用在整合芯片组中,此举令英特尔成为最大的图形厂商,并不断蚕食NVIDIA和ATI的独立显卡的市场份额——现在,英特尔干脆将它集成在CPU内核中,此举几乎可以将独立显卡逼出入门级市场。但即便如此,英特尔在图形技术领域完全就是追随者,其技术水准难以与nVIDIA和ATi比肩。
GPU时代:NVIDIA、ATI两强对决
& && & nVIDIA与ATi(AMD)的GPU之战,远比Intel和AMD的CPU之战有意思,毕竟双方的实力差距并没有那么悬殊,经常斗得是难解难分。N/A的连年征战给我们带来无与伦比游戏画面和优秀产品的同时,也为喜欢IT技术的朋友带来了许多乐趣和谈资,只有深爱硬件技术的朋友才能有所体会。掐指一算,从GPU诞生至今双方都已推出了十余代产品,每一代产品之间的对决都令无数玩家心动不已,而其中最精彩的战役往往在微软DirectX API版本更新时出现。
& && & 1999年8月,NVIDIA发布GeForce 256图形芯片,宣告了GPU时代的降临。这是Voodoo加速卡诞生以后图形工业最伟大的革命:GeForce 256从CPU手中接管了更多的计算任务,CPU在3D渲染任务中的地位变得更加无足轻重,GPU完全奠定了3D渲染的主角地位。
& && &GPU的诞生可谓石破天惊,NVIDIA开创了一个时代,也将所有的竞争对手拉在后面——跟随NVIDIA推出GPU的只有ATI、S3和3DLabs,但最终存活并与NVIDIA分庭抗礼的只有ATi,它在后来也成为AMD的一部分,成为英特尔和NVIDIA共同的“大麻烦”。GPU概念本身富有革命性,并且在实际应用中起到惊人的效果,但整个GPU时代发展却又是比较乏味的:大量竞争对手不再跟随,NVIDIA在初期完全是一骑绝尘,完全垄断了市场,作为追随者的ATI当时看起来只是小角色,根本不可能给对手带来多大的麻烦。而GPU本身的更新换代看起来只是晶体管的堆砌游戏:谁能够在GPU中设计出更多的顶点单元和像素单元,谁就能够在性能和市场方面都占据上风。
1.1999年:GeForce开创GPU时代
& && & 在TNT2系列大获成功之后,NVIDIA于1999年8月推出它的新一代产品NV10,并以“GeForce 256”的新名字出现。GeForce 256并不是TNT2的简单升级版本,而采用一种全新的架构:256位核2心设计,将T&L功能(几何转换与光照:3D游戏中的任何一个物体都有一个坐标,当此物体运动时,它的坐标发生变化,这指的就是坐标转换;3D游戏中除了场景+物体还需要灯光,没有灯光就没有3D物体的表现,无论是实时3D游戏还是3D影像渲染,加上灯光的3D渲染是最消耗资源的。在T&L问世之前,位置转换和灯光都需要CPU来计算,CPU速度越快,游戏表现越流畅。)以硬件的形式集成在图形芯片中,由图形芯片来负责几何转换和光照操作。这些都属于3D图形任务的前半部分,以往它们都完全依赖CPU执行,而CPU浮点性能的强弱就会对整机的3D性能表现产生很大的影响。GeForce 256 将该功能整合之后,几何转换和光照操作都可以由自己独立完成,不必再依赖CPU,图形芯片便相当于一枚专事3D图形处理的处理器,这也是“GPU(Graphic Processing Unit)”的名称由来,而这部分逻辑则被称为“硬件T&L引擎”。使用了T&L引擎后,这两种效果的计算用显卡核心来计算,这样就可以把CPU从繁忙的劳动中解脱出来,让CPU做他该作的事情,比如逻辑运算、数据计算等等。换句话说,显卡用T&L渲染游戏时,即使没有高速的CPU,同样能能流畅的跑3D游戏。
& && & GeForce 256所采用的核心技术除了硬件T&L之外,还有立方环境材质贴图、顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素、256位渲染引擎等诸多先进技术。在性能大幅提升的同时,3D游戏的画面得到了质的提升。
& && & 事实上,硬件T&L引擎并不复杂,它只是一个包含256个指令的DSP(数字信号处理器),可以通过BIOS和驱动程序的升级来获得更强大的功能。这种设计让GeForce 256获得空前的成功,它的3D效能大幅度超过TNT2系列,诸如3Dfx、Matrox、ATI、Trident、3Dlabs等对手都被远远抛在后面,而游戏软件界也迅速接纳了硬件T&L的理念,并在新一代游戏中积极支持该项技术。于是,硬件T&L成为当年最热门的图形技术,nVIDIA的王者地位也就此一举奠定。而GPU的概念也就成为前后两代图形技术的分水岭,3Dfx 时代终结,nVIDIA时代开始。同时DirectX 7.0也确定了权威地位:因为他的核心技术就是支持Transform & Lighting(T&L,几何转换与光照)
& && & 唯一能跟上NVIDIA脚步的只有S3。同年,S3推出了同样具备硬件T&L引擎的Savage 2000芯片,并将这项技术命名为“S3TL”。S3TL与NVIDIA的方案在具体实现上并不相同,但两者的功能都是一样的。在宣传方面,S3对此顾虑较多,认为图形芯片集成硬件光照运算无异于抢了CPU的饭碗,且还需要一段时间才能获得游戏的支持,没必要大张旗鼓。尽管Savage 2000的实力相当强劲,结果低调的宣传让它鲜为人知:拥有8个OpenGL兼容的硬件动态光源处理能力,可生成比前代产品高出4~10倍复杂度的场景,运算能力达到同年代CPU的3倍之多。不幸的是,Savage 2000的驱动程序实在太糟糕,这让它根本无法同GeForce展开有效竞争,在推出Savage 2000+之后,S3在图形业的历程嘎然而止,被VIA收购后基本无所作为。
2.2000年:GeForce 2与ATI Radeon
& && & GeForce 256并没有在市场上流行多久,因为NVIDIA在6个月后就推出了它的下一代产品:GeForce 2。GeForce 2衍生出大量的产品:针对低端市场的GeForce 2 MX系列,针对中高端的GeForce 2 GTS、GeForce 2 Pro和后来的GeForce 2 Ti,以及拥有顶级性能的GeForce 2 Ultra等;同时也包括针对笔记本电脑的GeForce 2 Go系列。
2000年,GeForce 2成就了NVIDIA霸主地位。
GeForce 256就已经确立了当今GPU的整体架构雏形,我们可以看到它拥有专门的坐标转换与光源引擎,还有装配引擎、渲染管线、后期处理模块等等,这些功能单元基本都被沿用至今。相比GeForce 256,GeForce 2系列更为成熟先进:GeForce 2采用0.18微米工艺生产,而GeForce 256仍基于TNT2 Pro的0.22微米工艺,发热量很大。先进工艺让GeForce 2热量锐减的同时,性能上也比GeForce 256提高了25%左右的幅度。同时,准确的细分策略也为GeForce 2系列攻城掠地立下大功。标准版GeForce 2 GTS针对主流市场,它具有4条像素渲染流水线,每条包括两个纹理单元,二者结合成为一个强大的渲染引擎;其核心频率为200MHz,像素填充率和纹理填充率分别达到800Mpixels/s 或1.6Gtexels/s。针对低端市场的GeForce 2 MX只有2条渲染流水线,实际性能相当于GeForce 2 GTS的一半,核心频率也降为175MHz。尽管如此,在功能特性方面它与GeForce 2 GTS没有什么不同,相对出色的性能和平易近人的价格让GeForce 2 MX获得近乎辉煌的成功。
做工精湛的Radeon VIVO标志着ATI也进入到GPU时代。
& && & 2000年6月,nVIDIA对GeForce 2产品线进行全面升级。性能更出色的GeForce 2 Pro代替GeForce 2 GTS成为主流,新增250MHz频率的GeForce 2 Ultra进一步巩固旗舰地位;另外,nVIDIA也首次推出针对专业市场的Quadro 2和Quadro MXR,推出针对移动应用的GeForce 2 Go,奠定了NVIDIA的全方位优势。
这个时候,能与nVIDIA竞争的只有ATi了。在DX7大势所趋的局面下,2000年7月ATi也发布了首款DX7显卡(支持硬件T&L引擎的Radeon芯片),其命名都与NVIDIA惊人的一致——Radeon 256,由此掀开了NVIDIA与ATI、GeForce与Radeon争霸的局面。Radeon带有相当多的新特性,如Charisma Engine、Pixel Tapestry、Video Immersion、Hyper Z压缩技术等等,尽管3D性能仍然逊于GeForce 2,但两者已经相当接近,且Radeon在视频回放效果方面表现卓越,加上原厂做工让Radeon保持出色的2D画质,对NVIDIA产生了一定的威胁。此外Radeon 256虽然只有两条渲染管线,但每条管线拥有多达3个纹理单元,而GeForce 256每条管线只有1个纹理单元,GeForce 2 GTS才改进为2个。不过,这种威胁并没有在市场上体现出来:遗憾的是Radeon 256的第3个贴图单元直到它退市的时候也没有任何程序能够支持它,同时令人诟病的驱动也令用户大为恼火。再加上ATI没有采用开放芯片授权的做法,芯片和显卡都由自己独立完成,产品价格昂贵;而NVIDIA自身只从事GPU芯片设计,显卡业务完全由数量众多的板卡合作厂商完成,这样它就拥有一支庞大的同盟军—单枪匹马的ATI不足以同NVIDIA体系对抗,直到后来ATI改变策略后情况才逐渐好转。
3.2001年:GeForce 3与Radeon 8500之战
& && & 时光的书页翻到2001年2月,NVIDIA推出架构大改良的GeForce 3,再度获得领先技术优势。相比前两代产品,GeForce 3在架构上有了很大改良,它最引人注目的就是新增的“nfiniteFX”引擎—nfiniteFX由可编程的顶点渲染单元(Vertex Shaders)和像素渲染单元(Pixel Shader)联合构成,静态的硬件T&L被它取代。NVIDIA声称,nfiniteFX是继硬件T&L之后的又一项重大改进,可编程的特性允许控制指令千变万化进行组合,游戏开发者可以根据自己的意愿来获得更出色的效果;同时GeForce 3也实现了对微软DirectX 8 API的支持,抢占未来游戏的制高点(DirectX 8.0的到来标志着DirectX的权威地位终于建成,因为它首次引入了ShaderModel的概念引发了一场显卡革命,ShaderModel就相当于是GPU的图形渲染指令集。其中像素渲染引擎(Pixel Shader)与顶点渲染引擎(Vertex Shader)都是ShaderModel 1.0的一部分,此后每逢DirectX有重大版本更新时,ShaderModel也会相应的升级版本,技术特性都会大大增强。而首次引入的VS和PS概念,反映在特效上就是动态光影效果。同硬件T&L仅仅实现的固定光影转换相比,VS和PS单元的灵活性更大,它使GPU真正成为了可编程的处理器。这意味着程序员可通过它们实现3D场景构建的难度大大降低。通过VS和PS的渲染,可以很容易的宁造出真实的水面动态波纹光影效果,相信经历了DirectX 7到DirectX 8显卡换代的用户一定对3DMark 2001SE中的Nature场景记忆犹新—首次在虚拟场景中看到如此真实的水面效果。)。其次,GeForce 3对内存控制器进行全面改进,引入全新的“交错式内存控制器”(NVIDIA称之为“光速显存架构”),有效改善了内存带宽的使用效率,这对其性能也起到很明显的提升作用。再者,GeForce 3还引入一系列新的技术特性,如Z轴隐面剔除、多重取样反锯齿等。在这些新技术推动下,GeForce 3表现出极其可观的性能提升,将ATI的Radeon远远甩在后头。
上图就是GeForce 3的核心架构图,可以看出,由于DX8渲染模式的改变,GeForce 3相对于DX7的GeForce 2/256有了天翻地覆的变化,一半以上的模块需要重新设计(绿色部分)。
GeForce 3的顶点管线设计& && & 硬件规格方面,GeForce 3依然只有4条渲染管线,每条管线内置2个纹理单元,这与上代的GeForce 2没有区别。但是GeForce 3的核心晶体管数竟然是GeForce 2的两倍以上,额外的晶体管大都用在了顶点管线部分,虽然它只有一个顶点着色单元。这个顶点着色单元其实就是一个4D SIMD(单指令多数据流)处理器,可以计算最多16项数据的顶点,这在当时来说运算能力已经非常富裕了。不过,主流的游戏还是基于DX7开发,因此GeForce 3的VS单元很多时候都派不上用场,由此导致GeForce 3在DX7游戏当中领先GeForce 2 Ti的优势并不大,毕竟它们的像素渲染管线和纹理单元数目是相同的,频率也没有提升太多。
GeForce 3 Ti 500带来了许多先进的技术特性,但它的市场寿命颇为短暂。
& && &不过,标准版GeForce 3显卡并没有在市面上怎么露面,因为NVIDIA在下半年就接着推出GeForce 3 Ti 500和GeForce 3 Ti 300取而代之;中端方面,也对GeForce 2系列再度包装,推出GeForce 2 Ti,低端市场则将GeForce 2 MX细分为MX 400、MX 200和MX 100型号以满足更广泛的用户群体。
Radeon 8500性能卓越,ATI借此一举突破困局。
ATi做出了对未来影响深远的英明决定:开放显卡授权,让第三方板卡厂商可以制造基于ATI GPU芯片的3D显卡。nVIDIA对此极为紧张,迅速对合作伙伴进行严厉的控制,显卡大厂大都站到NVIDIA一边,只有那些无足轻重的二三流显卡品牌响应ATi。幸好,出色的3D性能加上视频回放方面的传统优势,让Radeon 8500和Radeon 7500获得许多消费者的支持,加上ATI之前推出的Radeon LE、Radeon VE等低端产品又有效带动了低端市场,图形市场原本由NVIDIA一家独大的铁板格局开始松动。
4.2002年:Radeon 9700对决GeForce 4
& && & 2002年2月,GeForce 4发布。这次,NVIDIA将高端产品分为GeForce 4 Ti 4600、 GeForce 4 Ti 4400 和GeForce 4 Ti 4200,低端产品则分为GeForce 4 MX 460、GeForce 4 MX 440和GeForce 4 MX 420。相比GeForce 3,GeForce 4有了不小的改进,如采用支持双顶点渲染单元的第二代nfiniteFX引擎、效率更佳的第二代光速显存架构、可产生平滑阴影效果的Shadow Buffer、VPE(Video Processing Engine)影像处理引擎等。不过这种变化更多属改良性质,远不如从GeForce 2到GeForce 3的转折来得彻底。所幸GeForce 4的性能相当不错,至少GeForce 4 Ti 4600以明显优势击败了ATI Radeon 8500。
& && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && &&&
& && && && && && && && && && && && && && && && && & GeForce 4 Ti 4600,为当时的3D性能之王
& && & 不幸的是,Radeon 8500并不是GeForce 4 Ti的真正对手,当NVIDIA沉浸于GeForce 4 Ti大获全胜的DX8时代时,ATI在DX9标准正式确立之前就提前发布了代号为R300的显卡,打得NVIDIA措手不及。这款产品来得如此突然,以至于ATI发布之时甚至没有提供相关技术PPT/PDF。也就是在GeForce 4发布仅五个月之后的2002年7月ATi拿出震撼性的Radeon 9700 Pro(核心代号R300),这比预定计划整整提前了半年。Radeon 9700 Pro率先提供对DirectX 9.0规格的支持,整合8条像素流水线,并拥有诸如SMOOTHVISION 2.0(多重采样)、Hyper Z Ⅲ、FULLSTREAM(完全流媒体)、10位色输出等诸多先进功能,晶体管规模达到1.1亿个。在各项目评测中,Radeon 9700 Pro都大幅度超越GeForce 4 Ti 4600,一举成为2002年最强劲的显卡。另外,针对中端和低端市场,ATI也及时推出Radeon 9000和Radeon 9000 Pro芯片,从高端到低端形成Radeon 9700 Pro、Radeon 9000、Radeon 9000 Pro、Radeon 8500和Radeon 7500等完整的产品线。市场热情空前高涨,一些显卡大厂陆续摆脱NVIDIA的控制投入到ATI的怀抱,ATI展现出咄咄逼人的发展势头,NVIDIA的霸主地位受到强力挑战。
Radeon 9700 Pro架构示意图。& && & 由于DX9相比DX8并没有改变3D渲染流程,仅仅是强化了ShaderModel指令集,因此R300的架构相比R200改进并不大,主要的变化是规模的扩充与外围控制模块的加强。比如:首次使用256bit显存控制器、类似CPU的FCBGA封装、更先进的纹理压缩技术以及后期处理单元。当然,R300的Shader单元经过了重新设计,定址、色彩和纹理单元都支持浮点运算精度,这是它能够完美运行DX9程序的关键。R300核心拥有8条像素渲染管线及4个顶点着色单元,每条像素管线中只有1个纹理单元。至此ATI的像素与纹理的比例从1:3到1:2再到1:1,在DX9C时代将会进一步拉大至3:1,也就是风靡一时的3:1架构。
R300的顶点和像素着色单元结构
Radeon 9700 Pro让ATI首度超越NVIDIA& && & 也是在这一年,图形市场出现不少有意思的变化:沉寂多时的Matrox在5月14日高调发布规格前卫的Parhelia-512 GPU,它也是业界第一款采用512位核心的GPU产品,并携带诸如10亿色彩、三头显示等许多新技术登台。遗憾的是,Matrox并没有因此翻身,Parhelia-512的3D性能明显落后于NVIDIA和ATI的产品,且高昂的价格令人望而止步,Matrox由此转向行业市场,退出消费领域的竞争。
Matrox Parhelia 512曾是人们心目中的梦幻产品,但被夸张的高定价彻底葬送。& && &此外,SiS则拿出Xabre 600 GPU,意图重返主流图形市场。Xabre 600支持DirectX 8.1、AGP 8X等规格,并率先采用0.13微米工艺制造。SiS雄心勃勃希望能借此在低端市场大展拳脚,可未想到Xabre 600的性能居然还不如GeForce 4 MX 460,毫无竞争力可言。再说消费者更热衷于占主导地位的N系或A系显卡,Xabre 600发布之后长时间无人问津,SiS不得不继续在市场边缘上徘徊。
有必要着重讲一下的DX9.0
& && & 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图形图象质量在数学上的精度障碍,它的每条渲染流水线都升级为128位浮点颜色,让游戏程序设计师们更容易更轻松的创造出更漂亮的效果,让程序员编程更容易。
DirectX9真正关键的特性是64位RGBA色彩(每种颜色信道16位)和128位浮点精度(每种颜色信道32位浮点),颜色精度的巨大增加将带来让人震惊的视觉效果和图像质量。
5.2003年:Radeon 9800击败GeForce FX 5800
& && & 2002年11月,NVIDIA发布代号为NV30的GeForce FX 5800 Ultra,这款产品被NVIDIA视作夺回市场的全部希望。若单论技术特性,GeForce FX 5800 Ultra绝对是首屈一指,它采用了大量的前卫设计,如业界最先进的0.13微米工艺制造,并使用了最高频率的GDDR2显存,俨然以王者地位自居,但是这一次NVIDIA没能跟上微软的步伐,不仅在时间上晚于ATI,而且在DX9技术方面也未能超越。同时NV30的架构存在较大的缺陷,NVIDIA艰难的完成了从DX8到DX9的过渡,但结果很不理想。这次NVIDIA遭遇了大的麻烦。
& && & 首先,GeForce FX 5800 Ultra采用第二代DDR显存,尽管它的频率高达1GHz,却只有区区128bit位宽,显存整体带宽不足,难以将GPU的性能完全发挥。在实际测试中,GeForce FX 5800 Ultra的性能仅与Radeon 9700 Pro持平或小幅胜出。要知道,此时距Radeon 9700 Pro的发布已经半年之久了。更要命的是,500MHz频率、1.25亿个晶体管和1GHz DDRⅡ显存让GeForce FX 5800 Ultra功耗巨大,散热系统居然发出高达70分贝的超高噪音……NVIDIA对GeForce FX 5800 Ultra作了大张旗鼓的高调宣传,市场的回应却是如潮的恶评,最终GeForce FX 5800 Ultra不得不黯然收兵。所幸针对主流的GeForce FX 5600和针对低端的GeForce FX 5200还有一定的规格优势,勉强保住了这两个领地。
& && & 从宏观上说,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有很多相似之处。
& && & 正是由于NVIDIA没能适应DX9所带来ShaderModel指令的诸多改进,采用DX8+DX9混合式的架构,才导致NV30存在很大缺陷,在运行DX9游戏时效率很低。另外冒险采用先进工艺、不成熟的GDDR2显存、128bit位宽这些都极大的限制了NV30的性能,即便在DX8游戏中都无法胜过R300。
GeForce FX 5800 Ultra性能平平、噪音超高,堪称NVIDIA史上最失败的产品。
& && & 2003年3月,ATI针锋相对推出Radeon 9800 Pro。尽管它只是在前代产品基础上作了些改良,但性能已轻松超越GeForce FX 5800 Ultra——这也许是ATI赢得最容易的一次。另外,ATI也针对主流和低端市场推出Radeon 9600、Radeon 9200两大系列,与NVIDIA的产品线划分如出一辙……
& && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && & Radeon 9800 Pro再度让ATI赢得主动
& && & 接下来,NVIDIA在2003年5月拿出GeForce FX 5900 Ultra替代失败的GeForce FX 5800 Ultra。GeForce FX 5900 Ultra充分吸取了教训,没有再盲目追求高频率。核心和显存频率由GeForce FX 5800 Ultra的500MHz和1GHz降低到450MHz和850MHz,以此保证有足够的产能并降低成本;其次,GeForce FX 5900 Ultra舍弃了昂贵、发热量巨大且不实用的DDRⅡ显存,继续使用成熟的DDR产品,尽管频率稍有降低,但它的位宽恢复为256位,带宽显著超越对手。功耗方面,GeForce FX 5900 Ultra也有了明显的改善,尽管还需要体积庞大的散热器,但它的工作噪音已经降低到大家都可接受的程度。至于3D性能,GeForce FX 5900 Ultra与Radeon 9800 Pro处在相同的等级,这一战为NVIDIA挽回了颜面。
& && &到2003年底,ATI已经赢得各个显卡厂商的广泛支持,NVIDIA完全丧失了垄断地位,而表现强势的ATI最终在2004年取得半壁江山。于是,图形市场由NVIDIA一家独大最终演变为两强对垒的局面。
6.2004年:GeForce 6与Radeon X800的缠斗
& && & 2004年4月, NVIDIA以强烈的翻身意愿发布传说已久的NV40—它被正式命名为GeForce 6800 Ultra,与之同系列的还有标准版GeForce 6800、针对主流市场的GeForce 6600系列和针对低端的GeForce 6200系列。GeForce 6800 Ultra被设计得十分夸张:它拥有史无前例的16条像素渲染流水线和6条顶点流水线(合称为“CineFX 3.0引擎”),支持Shader Model3. 0规格,整合强大的视频处理器单元,其晶体管规模高达2亿2200万。此外,GeForce 6系列还拥有许多新颖的新技术,所有这一切都只有一个目标:获得压倒性的性能优势。
& && &NV40最强大之处就在像素单元架构部分。NV40拥有多达16条像素渲染管线暂且不谈,其每一个PSU的结构都值得探讨,NVIDIA将其称为Superscalar(超标量)的设计。普通的像素渲染管线只提供一组着色器单元,每个周期最多只能执行四组运算,而NV40的超标量架构则内含第二组着色器单元,让每个周期的运算量增加一倍。
NV40的像素渲染管线结构
GeForce 6800 Ultra,令NVIDIA一举扭转之前的不利局面& && &果然,这一次GeForce 6800 Ultra不辱使命,ATI被打了个措手不及,不得不一再延后R420核心的推出时间。功耗控制方面,GeForce 6800 Ultra同样表现出色,尽管标称最高功耗达到150W,但实际工作中远小于这个数字,散热器运行安静。在用户关注的成本问题上,GeForce 6800 Ultra同样表现出色,NVIDIA与IBM合作,采用电路冗余技术,有效提高了GeForce 6800 Ultra的成品率,将制造成本控制在理想的范围内。
& && && && && && && && && && && && && && && &ATI Radeon X800实力不凡,但依旧无法与对手比肩
& && & 而仅在两个月后,NVIDIA接着发布了代号为NV45,采用PCI Express x16图形接口的GeForce 6800 Ultra。除了接口变动外,它带来的最重要特性就是可支持“SLI”并行显卡技术。籍由两块显卡并行运作,3D效能获得几乎翻倍的高幅成长,这个消息几乎让游戏界疯狂。而这项技术不仅适用于GeForce 6800 Ultra,还适用于所有采用PCI Express x16接口的专业、高端及主流显卡。加上NVIDIA以nForce 4 SLI芯片组构成完整的平台,SLI概念推广得热火朝天。也许只有很少的一部分人有机会用到SLI,但它无疑左右着消费者的购买取向,有效增强了NVIDIA产品的吸引力。
& && & ATI对抗GeForce 6系列的就是Radeon X800、X600和X300系列产品线,它们均于2004年5月发布。其中,最高级的Radeon X800 XT Platinum Edition也拥有16条像素渲染流水线,晶体管数量为1.6亿个,硬件规格上与NV40完全相同,但在一些规格上Radeon X800系列落后于GeForce 6800 Ultra(如仅支持DX9b,不支持Shader Model 3.0无法开启HDR丧失了很多卖点,让用户大失所望),而且在DX9b游戏中的性能差距也不小,业界的普遍看法是ATI的产品略处于下风。同年12月,ATI接着发布改良型的Radeon X850,但小幅度的性能提升已经无碍于大局。
& && &当NVIDIA带来SLI之后,ATI也针锋相对地带来自己的CrossFi re混合交火技术,配合自身的Radeon Xpress 200 CrossFire芯片组,搭建一套多显卡交火平台。CrossFire同样实力非凡,但受到芯片组不够成熟的拖累,大多数游戏玩家都更青睐NVIDIA的SLI系统。
值得重点关注的DX9.0c
& && & DX9也是一次革命性的改进,但由于没有代表性的关键技术,以至于被广大用户所忽视,其实ShaderModel从1.0升级到2.0给图像渲染品质带来了巨大的提升。DX9的第三个版本DX9C则更进一步,将ShaderModel从2.0升级至3.0,ShaderModel 3.0除了继续扩展指令长度之外,还提升了指令执行能力,它开始支持动态分支操作,像素程序开始支持分支操作(包括循环、if/else等),支持函数调用。因此DX9C和SM3.0标准的推出,可以说是DirectX发展历程中的重要转折点。
SM3.0除了取消指令数限制和加入位移贴图等新特性之外,更多的特性都是在解决游戏的执行效率和品质上下功夫,SM3.0诞生之后,人们对待游戏的态度也开始从过去单纯地追求速度,转变到游戏画质和运行速度两者兼顾。因此SM3.0对游戏产业的影响可谓深远。
& && & 以上诸多改进相信很多人都不关心也不想知道,绝大多数人记住的只有一个,那就是只有DX9C显卡才支持HDR技术,因为HDR所带来华丽的光影效果给所有人都留下了深刻的印象,那种从暗淡无光到流光溢彩的美好回忆,可以说是前无古人后无来者的!
& && & HDR的全称是High Dynamic Range,即高动态范围,是一种色彩存储方式,在游戏用于存储渲染和光照数据。HDR渲染可以用4句话来概括:1.亮的地方很亮;2.暗的地方很暗;3.亮暗部的细节非常非常明显;4.所有光照为实时计算生成,可模拟人眼视网膜动态改变明暗细节。
& && &在DX9C之前,HDR已经得到了广泛应用,一般有FP16 HDR(半精度浮点型)和INT32 HDR(整数型),但效果都不如人意,FP16的动态范围不够大,而IN32的效率很低,因此这些HDR格式并未带来震撼效果。而FP32 HDR(32bit浮点格式)的诞生则大大拓展了明暗度扩展空间,使得游戏的光影效果有了质的提升,当年的《细胞分裂》、《FarCry》、《3DMark06》等一系列开启HDR后的画面让人惊讶不已!
7.年:GeForce 7对阵Radeon X1000
& && & 2005年6月,新一轮的图形大战开始打响,NVIDIA率先带来了代号为G70的GeForce 7800 GTX。在基本架构上,GeForce 7800 GTX仍然承袭于GeForce 6(NV40)系列,但它拥有大量的技术改进,其中最为人瞩目的当属渲染流水线设计。前面我们提过,顶点渲染管线(Vertex Shader)与像素渲染管线(Pixel Shader)是决定显卡性能的关键性因素,由于这两个渲染管线的设计都被微软DirectX API所标准化,NVIDIA和ATI只能通过增加其数量来快速提升性能。NV40拥有6条顶点渲染管线和16条像素渲染管线,而GeForce 7800 GTX拥有8条顶点渲染管线和多达24条像素渲染管线,且各渲染单元内部的运算单元都获得大幅强化,从而实现性能的翻番,这也一举奠定了GeForce 7800 GTX的王者地位。NVIDIA将GeForce 7800 GTX的顶点渲染与像素渲染管线合称为“CineFX 4.0引擎”。CineFX 4.0同时实现对Vertex Shader 3.0和Pixel Shader 3.0规格的支持,这两者都是微软DirectX 9.0c API中所定义。
SLI模式下的GeForce 7800 GTX
& && &&&GeForce 7的视频播放能力也获得进一步的加强,所整合的PureVideo引擎获得进一步的升级。它除了可支持MPEG-1、MPEG-2和HDTV高清晰影像解码外,还能够对MPEG-4(DiVX)、WMV9(标准分辨率和高清晰分辨率)等视频进行硬件编码和解码。同时它还对场交错自适应消除、高品质缩放、伽马纠正、噪声降低、WMV9/H.264运动补偿和色块消除等功能提供最底层的硬件支持,使得计算机在执行这些任务时不需要耗费多少CPU资源,而视频画面的品质也可得到明显的提升。
GeForce 7800 GTX的晶体管规模达到惊人的3亿9百万,超过当时任何一款x86处理器。而在制造工艺选择上,NVIDIA这次采用相对落后但成熟的0.11微米技术,从而保证了良品率。
& && &整个GeForce 7产品线看起来都相当完美,不过ATI的这一代GPU同样非常优秀,二者打了个平手。在GeForce 7800 GTX之后,NVIDIA又推出改良版的GeForce 7900系列,其性能也获得长足的进步。
Radeon X1000的环形内存总线架构,让512bit位宽成为可能
& && &&&ATI在同年10月发布自己的Radeon X1000 GPU,开始了DirectX 9.0c时代的征程。作为NVIDIA GeForce 7系列的强大对手,Radeon X1000不仅在着色器等方面有了明显提升,而且实现了对Shader Model 3.0的完整支持,有效改变长久以来在Shader Model指标方面的落后情况。其中,高端的Radeon X1800拥有8个顶点着色器和16个像素着色器。大家应该会注意到一个问题:NVIDIA GeForce 7800 GTX虽然也是拥有8个顶点着色器,但它的像素着色器数量达到24个。在GPU设计标准化的今天,着色器的数量直接决定GPU的性能,可ATI巧妙地通过提高芯片工作频率来弥补这一缺陷。Radeon X1800的核心频率高达625MHz,比GeForce 7800 GTX的430MHz高出45%。其次,Radeon X1800动用1.5GHz频率的超高速显存,在显存带宽指标上拥有明显的优势。通过这样的处理,Radeon X1800在性能方面的表现就不会逊色于对手多少。Radeon X1000架构上的一个重要创新就是引入环形显存总线来代替之前的交错型总线,8×32位的配置方式加上采用高频显存,令Radeon X1000在显存性能方面获得一定的优势。在制造工艺上,ATI采用激进的90纳米Low-K工艺,这项工艺固然更先进但也让ATI吃了苦头,导致产品发布一再延迟,不过幸好仅仅只比NVIDIA落后几个月的时间。
R580核心3倍于R520的像素渲染单元
但谁都没有料到ATI还预留了一手,原来R520这种架构的实力远不止16条像素渲染管线这么简单,ATI完全颠覆了传统“管线”的概念,R580核心紧随其后,将像素渲染单元提升到48个之多,整整是R520的3倍!而顶点渲染单元和纹理单元以及GPU其它所有模块都没有做任何改动。从R520到R580的这种改变当时令所有人都很费解,因为包括G70和R420在内的以往所有GPU都是管线式架构,就是像素渲染单元内部包含了纹理单元,一般像素和纹理的比例是1:2或者1:1。而R520首次将像素单元和纹理单元拆分开来,成为独立的设计,所有的像素单元都可以互相共享所有纹理单元资源,R520的像素和纹理比例依然是1:1,而R580的比例则瞬间提升至3:1,相信资历较老的玩家一定记得ATI当年大肆鼓吹“三比一架构”。
3:1架构的来历
这样设计是因为ATI发现了游戏的发展趋势,像素渲染的比重越来越高,而纹理贴图的增长比较缓慢,相信大家还记得当年ATI的DX7显卡,其一条管线中包括了3个纹理单元,以前是1:3后来是1:2接着变成1:1,现在被ATI一举提升至3:1。虽然当时很多人都不好理解,但从现在的发展来看,像素与纹理的比例越拉越大,DX10时代大概是3:1,DX11时代则变成了5:1甚至更高,当然这是后话了!
R520核心(X1800XT)的像素与纹理都是16个,但R580核心在纹理单元维持16个不变的情况下,把像素单元扩充了3倍达到了48个之多。ATI研发工程师发现新一代游戏中使用像素着色单元的频率越来越高,各种光影特效(尤其HDR)吃掉了像素着色单元的所有资源,而纹理单元的负载并不高,继续维持像素与纹理1:1的设计就是浪费资源,于是ATI根据3D游戏引擎的发展趋势做出了改变,并把R580这种不对等的架构称之为3:1黄金架构,管线的概念至此消失。
何谓GPU的管线:在R580之前,GPU的像素单元与纹理单元还有光栅单元是绑定在一起的,数量一样多,整个渲染过程就是流水线作业,因此像素与纹理加起来称为一条管线。
GPU工作流程:
显卡的渲染流程是通过顶点单元构建模型骨架,纹理单元处理纹理贴图,像素单元处理光影特效,光栅单元负责最终的像素输出。
像素(算数)与纹理的比例逐年提高
2006年9月,在X1900XTX发布半年之后,ATI与斯坦福大学相关科研人员合作,开发了首款使用GPU浮点运算能力做非图形渲染的软件——Folding @ Home第一代GPU运算客户端。Folding @ Home是一个研究蛋白质折叠、误折、聚合及由此引起的相关疾病的分布式计算工程。最开始F@H仅支持CPU,后来加入了对PS3游戏机的支持,但同样是使用内置的CELL处理器做运算。F@H因ATI的加入为GPU计算翻开了新的一页,当然F@H加入了对NVIDIA DX10 GPU的支持那是后话。
& && & 什么是通用计算?(之后将会有一篇《GPU不仅仅是显示—通用计算崛起篇》的专题介绍)
& && &当时的GPU计算被称为GPGPU(General Purpose GPU),传统的图形处理器可以被用来做通用目的计算项目。所谓通用计算的大体流程就是:待处理的数据—〉转换成图形数据—〉GPU处理—〉处理后的图形数据—〉转换成所需数据。其实通用计算就是把数据转换为GPU能够“看懂”的图形数据,实际上是作为虚拟硬件层与GPU通讯,由于需要前后两次编译的过程,因此想要利用GPU强大的浮点运算能力,需要很强大的编译器,程序员的开发难度可想而知,CPU的运算量也比较大。
& && & 除了蛋白质折叠分布式计算外,当年ATI还开发了AVIVO Video Converter这款使用GPU加速视频转码的小工具,虽然效果一般,但也算是开了个好头。
& && & 虽然GPU通用计算的实现难度很大,但至少GPU实现了非图形计算的目的,而且其性能确实要比当时的CPU快十几倍。小有所成的ATI被胜利冲昏了头脑,他们认为自己研发出了最先进的、最有前瞻性的GPU架构,还找到了让GPU进行通用计算的捷径、还有了AMD这座靠山……最终促使AMD-ATI做出了保守的决定——下代GPU继续沿用R580的架构,不做深层次的改动。
& && & 除了具有前瞻性的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推出双G92核心的7950GX2来对抗,虽然7950GX2单卡超越了X1950XTX,但双卡的话则因效率问题依然是A卡占优。
2006年8月,AMD以54亿美元的代价并购ATI,从此ATI成为AMD公司的图形部门,这也标志着一个新时代的开始。
& && & 微软的DirectX 9.0C是一代经典的图形API,至今依然有很多游戏无视DX10/DX11,坚守DX9C平台,以至于HDR+AA的问题被遗留至今依然没能得到完美解决。NV40是因为发布较早没能解决这一难题,G70则是扩充像素和顶点的产物,也没能解决。ATI在X800时代未能抢得先机,因此在X1000架构当中花了很多心思,争取做最完美的DX9C显卡,他们确实做到了这一点,无论架构和性能都有优势。但由于晶体管规模太大,功耗表现不如人意,因此在市场方面X1000与GF7相比并无优势。
& && & 微软的DirectX 9.0C是一代神奇的图形API,自2004年首款DX9c显卡GeForce 6800 Ultra问世以来,至今已有将近8年时间,之后虽然微软发布了DX10、DX10.1、DX11、还有现在的DX11.1等多个新版本,但DX9C游戏依然是绝对主流,DX10以后的游戏全部加起来也不过几十款而已!
& && & 因次,当年的DX9C显卡之战,很大程度上决定了此后很多年的显卡研发策略。从最开始X800不支持DX9C对抗6800失利,到X1800支持DX9C却性能不济,再到X1900登上顶峰,还有半路杀出来XBOX360这个程咬金,ATI被AMD收购前的经历犹如过山车般惊险刺激!
统一渲染架构与通用计算的降临
& && & 以往的DirectX游戏无论多么优秀,始终都会有OpenGL引擎和游戏站出来发起挑战,而且其画面还相当不错。但DX9C之后,就只有ID Software还在负隅顽抗了,到了DX10时代,再也没有任何一款OpenGL能与DX游戏相抗衡,微软终于一统江湖!
& && & 当微软DirectX 10发布之后,GPU迎来了史上第一次重大变革,而这次变革的推动者不再是nVIDIA或ATi,而是微软公司。微软公司认为,传统的分离设计过于僵化,无法让所有的游戏都能够以最高效率运行。这一点应该不难理解,因为任何一个3D渲染画面,其顶点指令与像素指令的比例都是不相同的,但GPU中顶点单元与像素单元的比例却是固定的,这就会导致某些时候顶点单元不够用,像素单元大量闲置,某些时候又反过来,硬件利用效率低下。而游戏开发者为了获得最好的运行性能,也不得不小心翼翼地调整两种渲染指令的比例,微软认为这种情况限制了图形技术的进一步发展。
统一渲染管线具有无以伦比的通用性
& && & 为此,微软在设计Xbox360游戏机的时候,就提出统一渲染架构的概念,所谓统一渲染,即GPU中不再有单独的顶端渲染单元和像素渲染单元,而是由一个通用的渲染单元同时完成顶点和像素渲染任务。为了实现这一点,图形指令必须先经过一个通用的解码器、将顶点和像素指令翻译成统一渲染单元可直接执行的渲染微指令,而统一渲染单元其实就是一个高性能的浮点和矢量计算逻辑,它具有通用和可编程属性。相比DirectX 9之前的分离设计,统一渲染架构具有硬件利用效率高以及编程灵活的优点,让3D游戏开发者和GPU设计者都获得解放。ATI在获得Xbox 360合约的时候,便迅速展开了设计,它所拿出的Xenos GPU芯片便首度采用统一渲染架构。
AMD为Xbox 360 设计的Xenos GPU芯片采用了统一渲染架构
Xenos的核心架构图
& && & 微软XBOX360的成功,给GPU供应商ATI发出了一个信号,那就是今后N年内的游戏都将基于XBOX360的硬件而开发。当时ATI与Xenos同时研发的一颗GPU代号为R580,俩者拥有相似的架构,而R580在当年也成为DX9c显卡的王者,这就让ATI更加坚定了维持现有架构不变的决心。
& && & 对于这套设计,nVIDIA起初是比较抗拒,它认为传统的分离设计在硬件方面更加高效,但最后看到大势所趋、并且也意识到统一渲染架构所具有的扩展弹性,在G80时代也实现了统一渲染架构。事实证明,nVIDIA才是此套架构最大的受益者。
& && & 统一渲染架构固然是微软为提升硬件效率所提出,但它进一步提升了GPU内部运算单元的可编程性,让GPU运行高密集度的通用计算任务就成为可能,这意味着GPU可以打破3D渲染的局限,迈向更为广阔的天地。
划时代的革新DX10
1、统一渲染架构
& && & 相对于其他方面的技术革新,微软在Shader Model 4.0中引入的统一着色架构才是DX10最大的看点。我们都知道,微软在DirectX 9中引入的了2.0/2.X/3.0三个版本的Vertex Shader(顶点着色引擎)以及Pixel Shader(像素着色引擎)。其中支持2.0版的着色引擎是DirectX 9的GPU的最低标准,而当前主流的显卡已经都硬件支持加入了拥有更多高级处理功能的3.0版本着色引擎。不过,即便是DirectX9.0c,对于功能相仿的Vertex Shader、Pixel Shader来说,目前图形芯片厂商仍需要在GPU中划分两个区域来存放Vertex Shader阵列和Pixel Shader贴图流水线。这无疑是一种资源冗余,而且这也加重GPU的设计难度及成本。当Direct X10把渲染流程更细分为Vertex Shader、Geometry Shader及Pixel Shader,这个情况将会更为明显。统一渲染架构是一项极具创新意义的作法,把这两者整合在一起。要知道,在很多时候如果我们处理的一个场景注意是以Pixel Shader计算为主,Vertex Shader计算仅占一小部分的时候,如果采用分离Shader设计的显示核心,就可能存在Vertex Shader计算单元空闲,但Pixel Shader单元过渡计算的现象。同样的也可能存在Pixel Shader数据比较少,但Vertex Shader计算数据过多的问题。这就往往造成了一方面着色单元闲置,另一方着色单元资源紧缺的情况。
分离架构典型渲染过程
& && & 上图右边模拟了两种比较典型的游戏画面,左边则是VS和PS单元的工作状态,绿色代表运行,而灰色代表空闲。先来看看上半部分的情况,游戏的画面是一个几何构造复杂的场景,这时候GPU需要处理大量的几何顶点数据,而像素处理相对较少,这时候传统GPU就会出现VS单元满负荷运行,而PS单元大量空闲的情况;下半部分恰恰相反,对于水面的渲染没有过多的几何图形处理,而对着色渲染提出了很高的要求,于是GPU的PS单元又出现了满负荷的状况,VS单元则进入比较空闲的状态。
unified shader单元的渲染过程
& && &上面的示意图更能清晰的说明问题。在上一幅传统的渲染方式中,因为游戏画面的渲染内容不同造成的PS、VS单元负载不同已经不复存在,无论几何图形过于复杂、或者像素渲染过于复杂,GPU都能有效的合理分配处理单元,有效的分配硬件资源。
传统分离架构和统一架构的渲染对比,统一渲染架构能更有效地利用显卡资源
  比如在《上古卷轴4:湮没》中,7900GTX在+HDR的环境下,FPS仅为14~50帧左右。这是因为独立渲染的草丛或者树叶是由庞大数量的多边形构成,对GPU的顶点渲染提出了严酷的要求,相对来说并不需要太多像素操作,如此一来大规模的像素渲染被闲置而顶点模块处于不堪重负状态。而统一渲染架构则可以帮我们解决硬件资源上的限制----你能够不受限制地使用纹理资源,并可以使用任意长度的着色指令,如果能够将闲置的像素单元用来处理顶点,那么游戏速度就不会如此可怜了!此外,统一渲染架构将令GPU的角色由单纯为Game Rendering提升至Game Computing的理念,Unified Shading引擎设计更适合异类运算工作(Heterogeneous Computing),例如Physics运算、影像编码运算等,让显卡的应用范畴大幅提升。
2、虚拟显存技术
  众所周知,在286/386时代,人们为了利用更多的内存,发明了虚拟寻址技术,今天,这项技术被用到显存身上,将如同当年般震撼,彻底地把显存的利用带到了全新的层次。以往,GPU采用直接内存调用法则,无论是纹理、顶点、多边形、光影,都需要占用显存空间,这些数据的运算量越大,占据的空间也越多。为了避免每次都需要重新计算,人们想到了MIP-MAP纹理映射的方法。当时,纹理贴图的尺寸很小、3D场景亦没有这么复杂,MIP-MAP能够显著地减少GPU计算量和显存的占用。然而,随着3D游戏复杂性的增加,仅靠显存已经无法存储这些数据,不得不开发出AGP总线,利用部分内存作为AGP显存,来暂时存储纹理和顶点数据、补充显存容量的不足。但别说以前的AGP 8X,即使是今天带宽更大的PCI Express X16,亦远远不能与显存带宽相比。更为严重的问题是,为了同步处理,GPU会降低显存的工作速度,使之与显卡显存顺利传输,所以一旦动用显存,系统速度会大为下降。从这方面看,在游戏中提升纹理调节的时候,必须注意自己的显存容量,比如你要玩FarCry、战地1942等游戏,没有256MB显存,就别想把画质设置到最高,否则会大大地影响游戏速度。
  因此,微软根据虚拟内存管理方法将在DirectX 10中引入虚拟显存技术。它可以很好的解决以上所提到的问题,所有的纹理、着色等都分成“小块”数据即使在低速总线上也能流畅传输。例如,一个4KB大小的页面相当于一个32×32×32bit大小的纹理贴图,这样大小的纹理贴图已经可以满足需要,这样在需要纹理渲染时系统就不需要传输太多&页面&就可以完成相应的工作,而做到这一切几乎不会损失性能。
  而且将虚拟显存技术与着色引擎搭配也是一个很具创新性的想法。在显存中,着色器指令是被当作一个抽象的数据块进行处理的,系统并不理会“数据块”能否装得进GPU的指令流水线,一旦着色器被载入,它就会在每个顶点以及象素上操作、直至卸载。因此要想完成更长的着色器指令就需要增加GPU的指令执行管数或利用自动多路形式将指令划分成若干个可管理的小块。由于GPU的指令执行管数在设计之时就固定好,如果要增加执行管数无疑需要重新设计及增加晶体管数,显然第一种方法并不太实用。因此第二种方法较为实用,而这也与我们所提到的虚拟显存系统实际是一样的。为了适应着色器指令的执行应用,虚拟显存被划分为许多相对独立的页面。假定图形处理单元当中设置的指令执行管道可以执行整个页面所包含的指令,那么我们的着色器操作就可以建立起一套流水线式的运作机制,加载一个页面,然后运行,停止下来之后再加载一个新的页面,然后运行,如此反覆指导全部包含指令的页面被加载到处理器当中,此间,执行管道的作用与处理器的L1 Cache相当类似,而整个运作流程和处理器的可以说是一致的。
通过虚拟显存技术,着色指令的长度将可以不受指令执行管数的限制,存储系统可以存放的图象纹理可以更多,寻址的方式变得轻松简单,于是我们的DirectX10技术就实现了可用资源“不受限制”的强大功能。当然了,资源的“不受限制”还是受到硬件实际可用资源的限制。指令太长的话,GPU就需要多次加载指令页面,这样也会造成性能大幅度下降;如果纹理数据太多,需要用到系统内存、甚至是硬盘空间进行存储的话,那么整个图形子系统的性能也会下降。针对这个问题,微软为资源限制定了两个门限:只要不超过第一个限定,系统都能够工作;而超过第二个限定时,系统就不能够正常工作(在640×480分辨率下,fps值不足10)。其实,此前已经有厂商使用了虚拟显存技术,3Dlab的专业级显卡野猫WildCat VP就能调度16GB虚拟显存,16GB哦,在主流显存不过256MB的时代,这是多么震奋人心的事情。很明显当你能完全使用全部16GB时,相信系统瓶颈问题已经不在此了。
3、整数指令集
  除了统一渲染架构和虚拟显存,DX10还有不少改进之处,其中最重要的莫过于整数指令集。也许你会觉得奇怪,整数指令集不是所有计算的基础吗?对于CPU而言,这是没错的,但别忘记了,当然为何引入浮点处理器和多媒体指令集,原因是图形运算需要大量的浮点指令。浮点是不精确数据类型,当寻值数据与纹理数据不符合的时候,可以采用近似值和多个数据计算的内插值来代替,对图形最终画面没有影响,此类速度也比整数要快。因此,GPU的基础恰好与CPU相反,是以浮点指令为主的。目前,着色器所处理的所有东西都需要依靠浮点运算所完成(除了静态分支预测试运算之外)。
  在大多数的图像处理上来说,这种处理方式是没有问题的。但进行动态分支预测或非内插式内存搜索时(比如对顶点缓存器进行定位索引时),这种浮点运算处理方式就存在很大的问题。而DX10中引入整数运算将有许多好处,比如进行动态/静态分支预测、顶点缓存定位、通用内存寻址方面,浮点是无法进行精确计算的。
4、直接存取像素着色帧缓存
  现在的渲染模式,主要是实时渲染,每种渲染工作都是实时完成的,中间无法打断,如果我们想为图像增加数字分级、色彩校正或颜色调节等工作,只能重新进行一次计算,对整体工作造成了延时。事实上,当你读取渲染中图象的纹理数据,大多数的GPU和驱动程序都可以工作。但这属于非法操作(没有经过定义),这样的操作随时可能被中断,而开发人员通常不会使用这项功能。
  DX9时代的解决方案有二,第一种是使用两个独立的纹理,一个纹理用于正常工作,另一个备用纹理应付那些附加的计算,此方案的最大问题是必须占用两倍显存空间;第二种是在Pixel Shader中通过模拟混合函数的实现以上功能。ATi已经在他们的GPU芯片中加入了类似的做法,他们通过顶点着色引擎来模拟原有的固定顶点处理函数。这样就意味着GPU设计厂商需要在着色引擎上增加额外的晶体管来实现以上的功能。
  DX10则转向了新思路:使用了像素描影器直接存取帧缓存的方式来部分代替以前的实时渲染,某些情况下,我们可以随时中断渲染,加入我们想要的效果,再继续运算,不对整个渲染过程造成影响,使渲染变得更为灵活和可控。但并不意味着在DirectX10中进行实时渲染模式就毫无问题,并且厂商可能放弃了对这种技术的支持。那样这项技术很可能以一种备选方案出现,如此一来,程序员可能会忽略这项技术的存在而继续沿用老方法。
5、增强型图形镶嵌技术
  在DX8时代,为了提高曲线画面的真实度,显卡厂商增引入了高阶曲面技术,如:nVidia的RT-Patch和ATi的N-Patch。从本质上看,它们把曲线处理带入了一种新纪元,看看现有的真实世界,并不总是以方方正正的多边形存在的,很多地方都由曲面来构建,才使真实的物体种类更为多样,很难想像我们有一个四方头的时候是怎样的恐怖。然而,每次的技术进化总是有一定阻碍,高阶曲面在当时未能完善,甚至导致了画面产生变形。因此不少开发商都这种技术失去了兴趣,而图形芯片厂商最终也放弃对这项技术的硬件支持。直到DirectX 9引入适应图形镶嵌以及置换贴图技术,这两项技术再次被人们所关注。高阶曲面镶嵌以及置换贴图这两项技术虽然在NVIDIA的GF6/7系列、ATI的X1000系列图形芯片中得到支持,但当前DirectX技术在支持高阶曲面上仍存在一定问题。
  虽然高阶曲面未能正式流行,而为它的自适应图形镶嵌和置换贴图两项独特的技术却引起了人们的兴趣。自适应图形镶嵌可以按照我们的要求,进行不同的纹理镶嵌,以便取得更佳的视觉效果,将使3D世界进一步拟真化,可是,它们遇到的最大问题,依然是高阶曲面的运算,如何使用最小的运算又不导致画面破损和变形,是DX10极须解决的问题。DX10的硬件将支持各种通用高阶曲面计算:Catmull-Rom曲面、贝赛尔曲线、B-Splines曲线、圆锥曲线,证明高阶曲面回归的时代已经到来,只是要我们去认真地进行优化而己,当然这些也需要图形芯片进行硬件支持。
6、Physics(物理加速)技术
  物理计算是下一代游戏体验当中的关键部分,它将增加游戏的真实感、沉浸感和带来更加有趣的体验。
1. :NVIDIA GeForce 8击溃Radeon HD 2000
& && & 2006年11月,nVIDIA高调推出GeForce 8800 GTX和GeForce 8800 GTS图形处理器,拉开了GeForce 8(开发代号G80)时代的序幕。而nVIDIA也在新一轮的竞争中将AMD-ATi拉下一个季度,后者的R600要等到日方能推向市场。
& && & 作为nVIDIA第一代统一渲染架构GPU,G80的硬件规格相当强悍:它拥有128个可执行3D渲染任务及其他可编程指令的流处理器(Stream Processors),内置24个ROP单元,最高支持384位,86.4GB/s带宽的GDDR3显存,晶体管集成度高达6.8亿个,是前一代GeForce 7900的两倍多。G80也因此成为当时集成度最高的半导体芯片,而这些指标也让G80拥有极其优秀的性能。
& && & G80的高集成度意味着成本高昂,NVIDIA为了保证G80能拥有足够高的生产良品率,仅采用台积电90纳米工艺进行制造,它的功耗高达145瓦,显卡长度也因为供电模块的需要达到32厘米。另外为了解决散热需要,G80系列显卡都需要被一块体积硕大的散热器所覆盖,但NVIDIA将风扇噪音控制在很低的水平,即便在高负载状态下也能保证安静运行。
NVIDIA G80芯片集成了6.8亿个晶体管
& && & 在内部设计上,G80的128个流处理器被分为8个渲染集群,每个集群都是由16个流处理器(内部再平均分成两组)、4个纹理地址单元以及一个L1缓存构成,这样G80就总共拥有128个流处理器和32个纹理地址单元。流处理器是最基本的计算单元,所有的图形渲染指令(包括顶点、像素和几何指令)都是由流处理器运算并输出。输出的结果会由一个交换器分配给6组ROP光栅处理单元进行处理,每个光栅单元又包含4个ROP,于是G80就拥有24个ROP处理单元。每一组ROP单元都对应一个L2缓存,它与渲染集群中的L1缓存以及显存相连—增加缓存的另一个好处就是可以为通用计算做好了准备。
& && & 也是在G80时代,NVIDIA发布了意义重大的CUDA 1.0开发平台。CUDA是一个集成的开发环境,它包括开发语言、编译器以及API。借助CUDA,程序员可以编写出能够为GPU所运行的计算程序。由于GPU拥有并行计算的巨大优势,大量的科学工作者都开始将应用迁移到NVIDIA的CUDA平台,GPU通用加速实现了从理论到现实的第一步,也为NVIDIA开辟了新一片的蓝海。此外,NVIDIA也在这个时候推出基于G80的Tesla高性能计算设备,专门供应超级计算市场。数年以后,Tesla也成功地成为该领域的新标准,超级计算业界普遍都将CPU+GPU的组合作为第一方案,而其中的GPU几乎都是NVIDIA的Tesla产品。
G80架构简介
1.革命性的MIMD架构
NVIDIA的科学家对图形指令结构进行了深入研究,它们发现标量数据流所占比例正在逐年提升,如果渲染单元还是坚持SIMD设计会让效率下降。为此NVIDIA在G80中做出大胆变革:流处理器不再针对矢量设计,而是统统改成了标量ALU单元,这种架构叫做MIMD(Multiple Instruction Multiple Data,多指令多数据流)
G80核心架构,每个流处理器就是一个标量ALU
在Geforce8800 GPU的unified shader架构里面,Streaming Processors(SPs) 是最为核心的单位,Geforce8800GTX拥有128个streaming processor,运行在1350Mhz的频率下。每个streaming processor均能处理vertex、pixel、geometry等操作,是一个通用的浮点处理器。 这些浮点处理器都可以随时有计划的编排分组成不同的工作量。
  geomery shading是DirectX10的新特性,streaming processors可以处理几何运算,大大减轻了CPU在几何运算的负载。GPU分派器和控制逻辑可以动态的指派streaming processpors进行vertex、pixel、geometry等操作,因为他们是通用的。显然unified shader设计可以建立更加平衡的shader工作机制,但是传统的pipeline定义不再适用,在未来,可能其他特性的预算也可以通过unified streaming processor去完成。我们看看geomery shader的情况。
2.Geometry shader
& && && & Input Assembler(IA)从顶点缓冲区上的输入流中接收顶点数据,并且把数据项转换为规范的格式。vertex shader通常用来把顶点从模型空间变换到平面空间,vertex shader读取一个顶点,输出一个顶点。Pixel Shader读取单一pixel属性,输出包含颜色和Z信息的的片断。而geometry shader是DirectX10提出的,把同一区域的所有顶点作为输入,产生新的顶点或者区域。此外steam output把geometry shader输出的顶点信息复制为4个连续的输出缓冲子集。理论上来说,steam output的输出能力Input Assembler的输入能力相匹配。
& && &&&Shader就是一段可以改变像素、顶点和几何学特征的小程序。Vertex Shader是专门处理多边形顶点的。那么Geometry shader就是专门用来处理场景中的几何图形。在过去Vertex Shader每一次运行只能处理一个顶点的数据,并且每次只能输出一个顶点的结果。在整个游戏场景中,绘制的几何图形的任务量非常庞大,如果仅仅依靠Vertex Shader单一来完成,效率会极其低下。
& && & 现在DX10的设计师们在顶点与像素的处理过程中又加入了Geometry shader几何着色器。它可以根据顶点的信息来批量处理几何图形,对Vertex附近的数据进行函数处理,快速创造出新的多边形。通过steam out将这些结果传递给其他Shader或buffer,将CPU从复杂庞大的几何运算中解放出来。大爆炸,粒子效果,瀑布流水等复杂又关联的场景都可以用Geometry shader很逼真的表现出来。
3.Steam Processing架构的运作
& && && &对geometry shader有了一定认识以后,我们现在具体看看Steam Processing架构的运作。
& && &&&Geoforc8800 GPU通过一定数量的SP去完成shader操作,相邻的SP可以十分方便的分组发挥并行操作的威力,在Geforce8800 GPU架构中,每16个SP分为一组。
& && & 不同属性基础的数据流在整合了专门高速指令解和执行逻辑的SP和一些类似的操作中执行,内建的Cache快速的存储SP的输出,而这些Cache又可以作为input被其他的SP读取。SIMD操作非常高效地在已被分组的SP集合里面执行。
& && && &上图可以看到streaming processors和联立的texture Flitering(TF)和texture addressing(TA)。显然内建的L1/L2 Cache确保了平衡的设计,这是一个典型的Geforce8800 GPU unified shader设计。128个streaming processors并行构成了8800GTX的shader架构。每个SP都是通用的、不相关的和标量地,可以同时进行MAD和MUL操作,支持IEEE 754精度的浮点。
4.Texture和math-相互没有关联的多线程操作
& && &&&Texture寻址、过滤和fetching都会耗尽相当多GPU的核心时钟。如果在架构需要在一个数学操作之前进行Texture的操作,例如是16x各向异性过滤,系统的延时将会大大增加。Geforce8800 GPU作出重大的改进,在进行相当的独立算术运算的时候,“隐藏”了Texture fetch的延迟。
 在Geforce7系列的GPU中,Texture寻址计算是采用隔行扫描进行的,这种设计在遇到texture fetch的时候就会遇到瓶颈。Geforce8800 GPU可以完全独立的进行texture操作和shader算术运算。
 & &&&在Geforce8800架构开发的初期,NVIDIA工程师分析了数百种包含越来越多的标量计算的shader程序以后发现,一些混合了矢量和标量的指令,特别是一些比较长的shader很难有效的在矢量的架构中处理操作。标量计算在矢量的流水线中编译非常困难。
& && &NVIDIA和ATI的都可以处理两个指令,在R580中,ATI采用的3+1架构可以处理一个2x2的矢量指令和由1x3矢量指令和1x1标量指令的混合,在Geforce6/7中,可以操作2+2和3+1的双指令操作。但是这些跟Geforce8800 GPU的标量设计那么高效。NVIDIA的工程师作出评估,128个标量处理器的标量架构拥有两倍性能于32个复合的矢量处理器架构
5.Early-Z技术
 & & 当代的GPU都会采用Z-buffer去记录哪些像素是可见,而哪些像素是被遮挡而不可见。一个3D Frame最终要转换成为2D图像才能表示在屏幕上面,来自GPU连续的顶点流(vertices)会构建这个frame,从这个顶点流获取相应的2D坐标去生成多边形。多边形的连续产生会覆盖原来的区域,因而Z-buffer的信息就是告诉ROP, 哪些像素是可见哪些是不可见的。提前进行的Early-Z对比可以节省大量资源,因为同一个区域被多个多边形覆盖的次数轻而易举地达到原来的四倍甚至更高。
  目前甚少方法可以利用Z-buffer信息去挑选或者排出被遮挡像素的渲染,Z-Cull就是这样的一个方法。Z-comparision通常会发生在ROP的后期。问题就产生,意味着pixel要通过完整的ROP管线才能被发现是否可见。一些复杂的包含数千步骤的shader程序,即使是被遮挡的pixel也全部通过流水线,这显然浪费了GPU的性能。Early-Z移去不可见像素在它们进入流水线之前,这样显然会提高性能,NVIDIA认为这个操作提升22%附近的性能。
6.G80的填充率计算:
& && &&&数据很方便的在不同的SP之间的output和input之间移动,例如vertex data处理完以后,output可以作为input发送到Geometry Theard。
每个在8800GTX运行的SP都运行在1.35Ghz,并能同时执行一个MAD和MUL的标量操作,因而8800GTX就用有520 gigaflops的shader处理能力,不过这并不是8800GTX的全部实力,因为指令发送100%适用于矢量操作, 而标量和矢量混合的shader程序编码比特定的组合指令发送更有效率(3+1或者2+2)
& && &&&texture过滤单元和SP互不相关的传送64 pixel每个时钟,这等于每个时钟完成32 pixel的寻址或者是32 pixels 2x各向异性过滤,或者是每时钟32pixels的双线过滤。
& && & 基本上,PF16双向材质过滤可以实现每时钟32pixel来操作,如果是FP2:1的各向异性过滤也可以每时钟16pixels来完成。texture单元运行在575Mhz的时钟频率,这也就是8800GTX的核心时钟频率。
& && & 在575Mhz的运行频率上面,双线过滤或者是2:1的各向异性过滤的填充率达到575Mhzx32=18.4billion texels/s的水准,2:1的各向异性过滤相当于两个双向过滤取样一起整体输出到一个像素,因而8800GTX拥有36.8billion texels/s的双向过滤的填充率。
7.G80的ROP(Raster Operation partitions)
& && && &8800GTX拥有6组ROP(Raster Operation partitions),每组可以处理4个像素,因而一共可以每时钟可以处理24个包含颜色和Z信息的像素。如果是Z-only处理,则可以实现每时钟192个单像素的处理。如果是4x multisampled antialiasing打开,则可以完成48个Z-only操作。
& && &&&G80的ROP支持超级采样和多点采样和Adaptive的这三种antialiasing的模式, 因而G80是首个在单GPU环境下实现8x、 8xQ、16x和16xQ等antialiasing模式的GPU。NVIDIA引入了CSAA,Coverage Sampling Antialisaing-新的全屏抗锯齿选项,同时包含coverage取样和geometry取样。CSAA有新的选项分别是8x、8xQ、16x和16xQ, 全面提升了全屏抗锯齿的等级。得益于G80强大的性能,在某些游戏开启16x高质量的AA模式以后,速度并不会大幅降低,系统花销可以维持在4x AA的级别。
Lumenex Engine带来顶级画面质量
& && &&&G80的ROPs支持FP16和FP32的混合,无论是FP16还是FP32都能够进行multisampled的antialiasing,因而从G80开始,NVIDIA的GPU首次实现HDR+AA的模式。8个支持DirectX10的MRTs(Multiple Render Targets)引用在G80,可以进行色彩和Z操作。DirectX10支持两种新格式的HDR、第一种格式是R11G11B10,特别的为存储texture的浮点格式优化,另外一种这是每个颜色通道占用9bit,RGB各占9bit,专门为render target而设计。
& && & 每组ROP拥有64bit的显存接口界面,完全支持DDR1、DDR2、DDR3、GDDR3和GDDR4显存,因而8800GTX一共拥有384bit的显存接口界面,也就是我们所说的384bit的显存位宽,8800GTX一共拥有784M的本地显存,运行在900Mhz时钟频率的GDDR3显存一共提供86.4GB/S的恐怖显存带宽。
来个对比图:
& && & AMD在这一轮的竞逐中明显滞后,直到2007年5月才发布代号为R600的Radeon HD2900XT及产品家族。这款产品采用AMD的第二代统一渲染架构,拥有多达320个流处理器,芯片核心频率也达到740MHz。不过统一渲染架构赋予图形厂商很大的自由,AMD与NVIDIA双方都可以自由设计统一渲染单元,产品的差异化大增,彼此的流处理器也存在很大的区别,所以Radeon HD 2900XT的流处理器虽然数量很多,但性能并没有特别亮眼。此外,Radeon HD 2900XT还集合了ATI被收购之前的所有图形技术之大成,包括快速动态分支、流计算功能、超线程分派机制等等,环形内存总线技术也升级到第二代,这令Radeon HD 2900XT得以支持512bit显存位宽,也创下新的纪录。
低性能、高功耗的Radeon HD 2900 XT,重复了当年NVIDIA GeForce FX 5800 Ultra的命运
& && & Radeon HD 2900XT破纪录的地方还在于,它的晶体管总量达到史无前例的7亿个,几乎比上一代的Radeon 1950 Pro高出一倍,同时也略高于NVIDIA GeForce 8800 Ultra。当然,显卡的功耗也达到创纪录的215瓦,这些强悍的规格让它看起来是一款不折不扣的图形怪兽。然而,最终的现实却相当残酷——RadeonHD 2900XT的性能仅相当于NVIDIA 面向中端的GeForce 8800 GTS,让业界大跌眼镜,AMD也不得不将Radeon HD 2900XT定位为注重性价比的高端产品,以此维持其竞争力,而这样的市场定位在后来也被一直延续。
那我们就来看看这个悲剧的HD2900XT(走向不归路—超长指令集的弊端)
R520-&R580的成功,多达48个着色单元功不可没,这让ATI对庞大的ALU运算单元深信不疑。ATI认为只要继续扩充着色单元,就能满足新一代DX10及Shader Model 3.0的要求。
1.着色单元的结构:& && & 在图形处理中,最常见的像素都是由RGB(红黄蓝)三种颜色构成的,加上它们共有的信息说明(Alpha),总共是4个通道。而顶点数据一般是由XYZW四个坐标构成,这样也是4个通道。在3D图形进行渲染时,其实就是改变RGBA四个通道或者XYZW四个坐标的数值。为了一次}

我要回帖

更多关于 3dmax渲染cpu使用率低 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信