求我们的mp3和16bit区别战争mp3

1、可对自己下载过的资源进行评價

2、评价有效期:两个自然月内(假如这份资料是您3月下载的,那么3月和4月都能评价这份资料)

3、不能对同一份资源进行重复评价

4、学科网将对评价内容进行审核对于评价内容审核不通过次数过多的用户,将会剥夺其评价权

5、审核不予通过的评价情况如下(包含但不限于以下内容):

(1) 评价心得文字与下载的资源无关;

(2) 剽窃、无意义、违法、涉黄、违反道德的评价;

(3) 拷贝自己或者他人评价內容超过80%以上(以字数为准);

(4) 使用标点符号过多的;评价内容没有任何参考价值、被5名以上网友举报或者违反法律、法规的。


}

  一次又一次的跳票让整个業界对于的Fermi捏了一把冷汗;比对手晚整整半年,GF100吊足了玩家的胃口也在考验他们的耐心;历史上因难产而失利的NV30和R600依然历历在目NVIDIA遭受了湔所未有的压力。

  与自身架构存在问题的NV30和R600不同GF100难产的主要原因是台积电工艺不够纯熟,当然这也与NVIDIA采用大核心策略有关系30亿晶體管可不是个小数目,整整比对手多出了50%设计和制造难度之大可想而知。

  与简单扩充规模加入DX11支持的RV870不同GF100采用了全新的图形架构,是近五年来架构改进最大的一次NVIDIA针对客户和用户的需求,大幅加强了对GPU并行计算和DX11图形计算的优化支持用NVIDIA的话说这是迄今为止最完媄的GPU。

  那么GF100核心到底有何革命性的改进首款高端显卡GTX480/470的具体表现如何?能否击败对手的HD甚至发烧玩家们苦苦等待半年之久是否值嘚?一切的一切都将在本文中揭晓!

第一章 让游戏运行效率更高!DirectX 11全面解析

  图形API每逢世代交替都是有人欢喜有人忧:DX9让9700成为经典让5800跌入低谷;DX9C让6800风光无限,让X800暗淡无光;DX10成就了8800的霸主地位让HD2900一败涂地;DX11则让HD5800抢得先机。

  正因为如此在经历了R600的惨败之后,开始信奉“先入为主”的理念(AMD的口号是“先行者胜”)对于微软新的图形API十分热衷,不但第一时间对过渡性的DX10.1提供支持而且以迅雷不及掩聑之势发布了全线DX11显卡。

  但ATI只是在上代产品基础上加入了新的ShaderModel指令集而已对于GPU图形架构的改进十分有限甚至原封未动。NVIDIA并不认同这種做法他们认为在革命性的图形API到来之际,必须对GPU架构做相应的调整以适应未来新技术与新指令的需要,提高GPU渲染效率

  那么我們首先必须了解,DirectX 11 API究竟带来了什么对GPU提出了什么新的要求?

    在过去的十几年时间里DirectX已经稳步成为微软Windows平台上进行游戏开发首选API。每一玳DirectX都带来对新的图形硬件特性的支持每次版本变更都能帮助游戏开发者们迈出惊人的一步。就拿近几年来说DX9、DX9C、DX10及相关显卡的发布都帶来了令人惊讶的游戏画面,给与玩家无与伦比的游戏体验

  尤其是DX10发布后,以Crysis为代表的FPS游戏画面达到了巅峰显卡实时渲染出来的囚物及风景效果足以媲美照片、CG动画甚至是电影,让人叹为观止!

首款DX10游戏《失落星球》DX9对比DX10牺牲一半速度,画面改进有限

  但DX10也不昰完美无暇的其缺陷也很明显,那就是运行效率比较低当游戏开启DX10模式后,性能下降幅度非常夸张以至于第一代DX10显卡GeForce 8800和2900都无法在特效全开的情况下流畅运行当时的任何一款DX10游戏!

  以三年前发布的DX10代表作Crysis来说,其画面堪称完美但时至今日依然没有任何一款单核心顯卡能在VeryHigh模式下流畅它!即便是顶级的双核心显卡运行起来也很吃力,是因为GPU的发展速度太慢吗不是的,两年时间显卡的性能已经提高叻3-4倍GPU的发展脚步并没有放缓,问题归根到底还是DX10运行效率较差所致

  下面就先来回顾一下DX10的主要特性:

  统一渲染架构让GPU运算单え的利用率更高,但新加入的几何着色器却加重了流处理器的负担超级复杂的画面场景也给流处理器造成了更大的压力。因此在这几年內纵使GPU的流处理器数量大增2-3倍、频率也稳步提升,但依然不够用

  DX10带来了众多绚丽无比的新特效,“滥用”各种特效导致GPU不堪重负而GPU自身的发展受到诸多因素的制约,如果制造工艺跟不上的话运算能力很难取得突破因此,必须通过不断改进架构运算效率来进一步提升3D图形性能在DX10之后,微软也开始将重心集中在如何提升算法和效率上面而不是一味的加入新特效或提高模型复杂度。

  此后微软發布了DX10.1 API对DX10进行了小修小补,DX10.1主要更新内容有:

  DX10.1的更新内容虽然不少但相比DX10没有什么革命性的改进,大部分内容都是提高GPU的资源利鼡率、将一些可选标准列为必须其实不少项目DX10显卡通过修改驱动就能实现。因此DX10.1没能得到游戏开发商足够多的重视并没有像当年的DX9C那樣迅速成为主流。

  ATI从HD3000系列开始也就是第二代DX10显卡中,就全面提供了对DX10.1 API的支持而NVIDIA则认为DX10.1没有带来任何新的特效,DX10显卡也可以用不同嘚渲染模式达到相同的效果因此迟迟没有加入支持。

  直到以《潜行者:晴空》和《鹰击长空》为代表的几款游戏大作支持DX10.1并且使鼡新的指令集大幅提升游戏运行效率之后(主要是改进了“透明抗锯齿”和“屏幕空间环境光遮蔽”的性能),NVIDIA意识到了DX10.1的重要性在去姩下半年发布的/220/210等低端显卡中加入了DX10.1的支持。

  DX10.1虽然画面方面改进有限但运行速度确实加快了

  实际上,DX10.1只不过是微软的一个试水石其目的非常明确,那就是尽可能的提高DX10的渲染效能达到节约GPU资源的目的,而DX11正是基于这种设计理念而来的

第一章/第三节 全新的DirectX 11诞苼,为高效率游戏而生

  从游戏画面逼真度来看短期内恐怕没有哪款游戏能够达到Crysis的高度,但是这款依靠暴力模型、着色技术和诸多特效堆积而成的游戏对显卡的要求之高令人叹为观止,至今都没有哪颗GPU敢打包票说能在最高特效下面流畅运行也就是说CryEngine 3是丝毫没有考慮现有GPU的性能而开发的一款超级引擎。

  以高效率著称的虚幻引擎缔造者Tim Sweeney称想要把现有游戏模型复杂度提高数十倍是很容易的事情(仳如CG模型和影视渲染),但同样的你也需要数十倍与现有主机机能的显卡才能流畅运行比如三路甚至四路顶级系统,而这种系统的市场占有率连1%都不到独孤求败的Crysis还卖不过快餐式的系列、Cryengine至今无法染指游戏机领域就是这个道理。

  所以架空硬件的引擎是不可取的,唯有充分利用有限的GPU资源通过各种辅助技术最大化画面表现力,才是图形技术公司和游戏开发商首当其冲要解决的内容

  因此,在DX10發布四年、成为主流之后业界将期望都寄托在了DX11身上,虽然DX11并没有带来全新的特效但却通过各种手段提升了GPU的渲染效率,当GPU有了富裕嘚运算资源之后游戏开发商就可以大胆的去使用更多的特效和技术,如此一来DX11游戏很容易就能从画面到速度全面超越DX10游戏!

  DX11的五大關键特性也有主次之分其中Tessellation和DirectCompute 11堪称革命性的技术,前者可以大幅提升游戏画质、后者可以大大提高游戏效率因此笔者将其单列一章专門做详细介绍。那么首先我们来看看另外的三大关键特性

  Shader(译为渲染或着色)是一段能够针对3D对象进行操作、并被GPU所执行的程序,ShaderModel嘚含义就是“优化渲染引擎模式”我们可以把它理解成是GPU的渲染指令集。历代DirectX每逢重大版本升级时最主要的更新内容就包括在了ShaderModel之中:

  高版本的ShaderModel是一个包括了所有低版本特性的超集对一些指令集加以扩充改进的同时,还加入了一些新的技术现在我们就来看看DX11 SM5.0都有哪些新特性:

  由于统一渲染架构的特性,Shader Moder 5.0是完全针对流处理器而设定的所有类型的着色器,如:像素、顶点、几何、计算、Hull和Domain(位於Tessellator前后)都将从新指令集中获益

  其中,覆盖采样及Gather4纹理拾取两项指令是从在DX10.1基础上发展而来的SM5.0要比SM4.1更加智能和灵活,它可以针对特定颜色分别采样、还能自动识别可做阴影映射的值精度和效率都进一步提高。

  由于DX10.1与DX10在指令方面的相似性现有的DX10.1游戏可以很容噫的通过更新程序代码升级支持DX11,从而获得更好的运行效率比如《BattleForge》和《STALKER》这两款DX10.1游戏率先对DX11提供了支持。

  如果一个软件能够对多核心多线程处理器进行优化的话那么在使用双核或四核处理器时,其运行效率将会提升2-4倍遗憾的是如今的游戏都无法支持多核处理。

  通过大量的游戏性能测试来看GPU占绝对主导,而CPU只是考验单核效能通过对CPU极限超频可以让游戏性能提高不少,但使用四核或者带HT技術的“八核”处理器几乎不会有任何性能提升在多核成为大势所趋的情况下大量CPU资源被白白浪费,瓶颈可能依然卡在CPU上面

  DX11当中新增的多线程处理技术,则是专门针对多核应用而生的它通过引入“延迟执行”的指令将一个渲染进程拆分为多个线程,并根据处理器核惢/线程数设定延迟执行内容的数目多线程的涵义是非常广的,每一帧画面可以被分为几个图层每个图层又可以分为N个区块,所有的这些都可以被并行调度到延迟执行的线程之中

    这是一项很聪明的技术,标记为“立即执行”的线程与传统的渲染没有区别而标记为“延遲执行”的线程则可以在后台将图形生成所必须的资源做预先的存取,比如纹理拾取、像素生成、常数缓冲等操作都可以多线程并行处理通过多核CPU富裕的资源来减少程序等待时间,从而使得渲染不再受到CPU的瓶颈制约

  多线程技术是非常灵活的,它既可以在游戏中通过程序代码来控制也可以通过DirectX自动分配,还能够通过驱动程序进行优化即便是驱动没有针对多核进行优化,DX11运行库也会通过模拟的方式提供新的功能也就是说所有DX11游戏都将或多或少的从多核多线程CPU中获益。

  多线程技术的引入对于双卡甚至多卡互联系统更为重要以往多颗GPU在DirectX中只能模拟成一个虚拟GPU,所有的GPU必须共享指令缓冲区并接受CPU调度渲染线程的拆分与合并指令延迟都很大,GPU越多则效率越低!而茬DX11当中如果用多核CPU搭配多路SLI系统的话,每颗CPU都可以单独控制一颗GPU的渲染线程在均分CPU负担的同时,提高了GPU资源利用率从而大幅提升游戲性能。

  NVIDIA称GTX480 SLI在DX11游戏中的性能几乎达到了单卡的两倍,而不再是以往的1.8倍左右这其中DX11多线程技术功不可没,当然也需要驱动程序的夶力优化支持

    其实多线程技术也能应用在DX9/DX10甚至是OpenGL上面,但由于API及函数指令的限制开启多线程会产生很多重复的指令,导致性能提升有限甚至不升反降因此微软并不建议在旧API模式开启多线程模式,除非程序员做过严格的测试与优化
第一章/第六节 两种新的纹理压缩格式

  丰富的纹理细节对于最终图像的质量尤为重要,目前的游戏也都在朝着超大规模、超精细的纹理细节方向发展但是,大规模的纹理非常占用显存以及带宽而纹理压缩就是为了解决这个问题,将大规模的纹理以一种优化的算法进行压缩试想,如果图象的纹理都不进荇压缩的话那么2GB的显存容量恐怕都不够用。

  但是目前纹理压缩技术并不支持HDR(高动态范围)图像,这也是开启HDR很占用显存的一个很大嘚原因为了解决这个问题,DirectX 11加入了两种新的压缩算法——BC6H和BC7其中,BC6H是专门针对HDR图像设计的压缩算法压缩比为6:1;而BC7是专门给高品质RGB[A]紋理设计的压缩算法,压缩比为3:1

  上图展示的是图像通过BC6H压缩模式进行压缩的前后效果对比图。其中左边的图像为原始图像中间嘚是在压缩过程中损失的一些细节,而右边的就是压缩后的图像可以看出,从画质上来看几乎没有损失(肉眼看不出)但是却可以大幅度降低显存的占用。

  这幅图展示的是BC7针对LDR纹理的压缩与传统的BC3纹理压缩对比可以看出传统的BC3纹理压缩损失了大量的纹理细节,压縮之后的效果也很不好而采用BC7算法压缩后的纹理,丢失的细节很少效果也非常好,这就是改进纹理压缩的魅力

第二章 DX11中最有价值的技术:Tessellon的妙用

  认为,DX11当中最有价值的技术就是Tessellation因为其它所有的技术用DX10指令集都可以实现,只不过速度慢一些而已唯独Tessellation无可替代,咜以较小的性能损失大幅改善了画面将程序员多年来的梦想变为现实,因此好评如潮

  但是,Tessellation是一项由竞争对手ATI所倡导经过多年嘚改进与完善而来的技术,那么在Tessellation被纳入DX11范畴之后NVIDIA会不会比ATI做得更好呢?

第二章/第一节 Tessellation是ATI原创的技术但孤掌难鸣

  Tessellation一词相信大家并鈈陌生,早在DX9C时代微软XBOX360游戏主机中由ATI设计的Xeno显示芯片就支持;从DX10时代到DX10.1时代,ATI HD00系列显卡全都整合了一个叫做Tessellator的模块虽然当时没有任何遊戏能够支持该技术,但ATI通过几个演示Demo展现了Tessellation技术的魅力

  事实上,在更早的DX8时代ATI就已经和微软联手开发了TruForm(N-Patch)技术,也就是Tessellation的前身并被纳入DX8.1的范畴。但由于该技术有一些不可控制的BUG因此被DX9和DX10无情的抛弃了。

  Tessellation之所以未成气候就是因为此前的技术还不够完善,另外处理能力不足也是一大因素因此ATI即便有微软的鼎力相助,也未能将该技术发扬光大到了DX10时代,ATI虽然在全线GPU当中整合了Tessellator模块无奈孤掌难鸣,并没有得到游戏开发商的支持

  直到DX11时代,GPU自身的性能有了长足的进步硬件上真正具备了细分曲面的实力,再加上微軟重新改写API渲染流程专为Tessellation开辟了新的着色器,这才让Tessellation技术得以重见天日

  Tessellation这个英文单词直译为“镶嵌”,也就是在顶点与顶点之间洎动嵌入新的顶点Tessellation经常被意译为“细分曲面”,因为在自动插入大量新的顶点之后模型的曲面会被分得非常细腻,看上去更加平滑致密下面这张图形象的反映出Tessellation技术的原理和所实现的效果:

  通过上面这张示意图,我们就可以更容易理解Tessellation技术是怎么回事了它是一種能够在图形芯片内部自动创造顶点,使模型细化从而获得更好画面效果的技术。Tessellation能自动创造出数百倍与原始模型的顶点这些不是虚擬的顶点,而是实实在在的顶点效果是等同于建模的时候直接设计出来的。

  Tessellation技术是完全可编程的它提供了多种插值顶点位置的方法来创造各种曲面:
1. N-Patch曲面,就是和当年TruForm技术一样根据基础三角形顶点的法线决定曲面;
2. 贝塞尔曲面,根据贝塞尔曲线的公式计算顶点的位置;
3. B-Spline、NURBs、NUBs曲线(这三种曲线均为CAD领域常用曲线在Maya中均有相应工具可以生成)

  Tessellation技术最初主要被用以“细分曲面”,随着该技术被纳叺DX11范畴得到大范围推广之后,插值顶点的算法也越来越多因此用途也越来越广,产生了很多非常有创意的应用在本章后面几节当中筆者会为大家做更详细的介绍。

  Tessellation技术还经常与Displacement Maps(贴图置换)技术搭配使用从而将平面纹理贴图改造成为具有立体感的几何图形,大夶增强3D模型或场景的真实性

  除了大幅提升模型细节和画质外,Tessellation最吸引程序员的地方就是:他们无需手动设计上百万个三角形的复杂模型只需简单勾绘一个轮廓,剩下的就可以交给Tessellation技术自动镶嵌大大提高开发效率;而且简单的模型在GPU处理时也能大幅节约显存开销,哃时大幅提升渲染速度!

  前面笔者提到过ATI的HD2000以上级别显卡其实都具备Tessellation的功能,但它们却无法与DX11中的Tessellation技术相兼容这是因为微软并没囿原封未动的将R600的Tessellation技术抄到DX11之中,而是对其进行了优化使之能与渲染流程完美的结合在一起,可以更高效率的细分出更多的多边形和曲媔

  与DX9C/DX10时代孤零零的Tessellator模块不同,在DX11当中微软加入了两种全新着色器来全力配合Tessellator的工作,分别位于镶嵌器的前后

  其中Hull Shader(外壳着銫器)用来控制自动生成顶点的数量和算法,也就是Tessellator的细分级别然后交给Tesselator进行镶嵌处理,最后由Domain Shader(域着色器)按照程序要求生成所需曲媔并自动进行法线平移、置换贴图,产生新的模型

  与DX9/10中的Tessellation技术相比,DX11新增的两种着色器都受统一渲染架构支配因此处理能力非瑺富裕,DX11版Tessellation不仅效率更高、而且细分级别更丰富但是,更高的细分等级对Tessellator模块本身的处理能力提出了苛刻要求这需要芯片厂商在设计の初就考虑周全,在本文架构解析部分笔者会详细分析ATI和NVIDIA两者的设计思路。

  下面我们就通过大量生动的实际案例,来感受Tessellation技术的魅力来说明游戏厂商和芯片厂商为什么如此重视这项技术。

第二章/第四节 Tessellation的妙用:虚假贴图终结者

  首款DX11测试程序——Heaven Benchmark中几乎所有嘚场景都是由Tessellation技术动态生成的,其中最有代表性的场景就是地图中央的飞龙但最具震撼力的是周围凹凸不平的砖墙、石阶和瓦片:

  開启Tessellation后,翼龙身体上的“斑点”变成了“尖刺”虽然只是一座雕像而已,但怪物明显变威猛了许多身体各部位包括尖刺的平滑过渡都┿分自然,让人找不出任何模型设计的缺点看来Tessellation自动插入顶点并细分曲面在实际应用中相当智能。

  在这幅图中大家注意观察左侧嘚墙壁(以及凸出石块的阴影)、右侧的台阶和下方的鹅卵石路,关闭Tessellation时石块间的缝隙使用传统的视差映射贴图技术渲染而成,也有一萣的立体效果但不够明显,而且缝隙间不存在真正的阴影视角拉的很近的话,立体效果就会消失因为那只是欺骗人眼的贴图而已。

  而Tessellation技术生成的是实实在在的顶点和曲面所有的岩石、台阶和石块都是独立存在,而不再是平面上的虚拟贴图而已一经对比,视觉反差十分强烈!

  传统的屋顶瓦片就是“纸糊”的类似与生活中用于糊墙的“砖纹、木纹”墙纸,远看还行近看一点立体感都没有連小都骗不了。经过Tessellation技术处理后凹凸不平、错落有致的瓦片震撼登场!

  在以往的游戏中,多是以高精度的纹理贴图来欺骗玩家的眼聙使得周围环境看上去更真实一点。只有以《孤岛危机》、《狂野西部》、《潜行者》为代表的次世代游戏才使用了“虚拟位移贴图”戓“视察映射贴图”这种高级特效生成有一定立体感的砖墙或缝隙。

  而Tessellation技术的出现则终结了一切虚假贴图,达到了完全真实的凹凸效果让游戏朝着虚拟现实方向迈进了一大步!

  随风飘扬的衣物和旗帜一直都是3D渲染的难题,此前想要达到逼真的布料效果必须使用物理加速技术。虽然物理引擎可以达到和谐自然的动态效果但衣物本身的细节还不够丰富,原因是游戏不可能将一块小小的布料做嘚太过复杂这样会消耗太多的资源,得不偿失

  有了Tessellation技术之后,可以一定程度上代替物理引擎不仅可以大幅加强布料本身的细节、实现动态逼真的效果、而且消耗资源很少,可谓是一举三得

  在DX11代表作《科林麦克雷:尘埃2》中,就大量使用了Tessellation技术虽然细分级別并不高,但其魅力已经显露无疑

  在线框模式下我们可以看到,原本由屈指可数的曲线勾勒出来的旗帜已经被细分得密密麻麻,此时旗帜的运动细节变得更加丰富在外力作用下可以产生更逼真的摆动效果。

第二章/第五节 Tessellation的妙用:波澜壮阔的水面

  《尘埃2》中除了旗帜之外,还有一个很有创意的应用就是用Tessellation构建动态水面:

  《尘埃2》是专为ATI显卡优化的游戏,其中虽然大量使用了Tessellation技术但都昰轻量级的。看完下面这款NVIDIA的演示Demo之后大家将会对Tessellation技术刮目相看:

  这款Demo的名称叫做Island11,在后文中Demo解析部分将会有更多精美截图供大镓赏析。

第二章/第六节 Tessellation的妙用:不可思议的长发

    不管墙壁、旗帜还是水面Tessellation都是被用来“细分曲面”,因此无需太多介绍大家都很容易理解其工作原理那么看了下面的截图之后,不知道您会做何感想

  这是款NVIDIA专为GF100开发的演示Demo,名字叫做Hair在后文中将会详细介绍这款Demo,通过更多的截图分析其工作原理

  通过实例分析介绍可以发现,Tessellation技术所实现的功能并没有局限在“细分曲面”的范围内随着DX11逐渐走姠普及,开发商和程序员基于新的API开发游戏时更多有创意的应用将会呈现在大家面前,目前的这些SDK和DEMO都只是起到抛砖引玉的作用

Compute,而茬正式版本中又改名为DirectCompute一字之差何苦呢?显然微软为了将GPU通用计算和主要是3D应用的DirectX区别开,进一步凸出DirectCompute的重要性并与OpenCL分庭抗力由此足以见得微软对GPU通用计算的重视程度。

    DirectCompute主要针对GPU计算但由此可以衍生出一些在图形渲染方面的特殊应用,因此笔者将其单列一章对一些重要技术进行详细介绍。

    提起GPU通用计算自然会让人想到的CUDA、的Stream以及开放式的OpenCL标准,再加上微软推出的DirectCompute四种技术标准令人眼花缭乱,怹们之间的竞争与从属关系也比较模糊

1. OpenCL类似于OpenGL,是由整个业界共同制定的开放式标准能够对硬件底层直接进行操作,相对来说比较灵活也很强大,但开发难度较高;

2. DirectCompute类似于DirectX是由微软主导的通用计算API,与Windows集成并偏向于消费领域在易用性和兼容性方面做得更出色一些;

3. CUDA和Stream更像是图形架构或并行计算架构,NVIDIA和ATI对自己的GPU架构自然最了解因此会提供相应的驱动、开发包甚至是现成的应用程序,通过半开放嘚形式授权给程序员使用

  其中ATI最先提出GPGPU的概念,和AVIVO是当年的代表作但在被收购后GPGPU理念搁浅;此后NVIDIA后来者居上,首次将CUDA平台推向市場在这方面投入了很大的精力,四处寻求合作伙伴的支持并希望CUDA能够成为通用计算的标准开发平台。

  在NVIDIA大力推广CUDA之初由于OpenCL和DirectCompute标准尚未定型,NVIDIA不得不自己开发一套SDK来为程序员服务这套基于C语言的开发平台为半开放式标准(类似与Java的授权形式),只能用于NVIDIA自家GPUAMD始終认为CUDA是封闭式标准,不会有多少前途AMD自家的Stream平台虽然是完全开放的,但由于资源有限对程序员帮助不大,因此未能得到大量使用

  于是在2008由苹果牵头,以苹果OpenCL草案为基础联合业界各大企业共同完成了标准制定工作。随后Khronos Group成立相关工作组工作组的26个成员来自各荇各业,且都是各自领域的领导者具体包括、Activision

  OpenCL标准一经成立,IT三巨头Intel、NVIDIA和AMD都争先恐后的加入支持AMD由于自家Stream推广不利、支持OpenCL并不意外;Intel潜心研发的Larrbee GPU一大卖点就是强大的计算能力,支持OpenCL有百利而无一害;NVIDIA虽然在大力推广CUDA开发平台但无奈势单力薄,小有所成但前途未卜OpenCL虽然与CUDA C语言有交集但并不冲突,是相辅相成的互补关系NVIDIA自然也大力支持。

  OpenCL组织中唯独微软不在其列微软有自己的如意算盘。经過多年的发展DirectX凭借快速更新换代策略、相对轻松的开发与移植方式,在与OpenGL的交战中已全面占据上风OpenGL的传统强项——专业绘图领域也在被DirectX不断的蚕食。因此微软打算用相同的策略来对抗尚未站住根基的OpenCL于是DirectCompute诞生了。

  虽说DirectCompute标准才刚刚问世但目前已经有了三个版本,咜与微软的DirectX版本是一一对应的(10.0、10.1、11.0)毕竟DirectCompute目前还只是DirectX的一个子集,羽翼未丰之前难以自立门户

  新一代windows7操作系统已经内置了DX11及DirectCompute,對GPU通用计算提供原生支持Win7对GPU的要求放得很宽,只要支持DX10即可当然DX10.1更好DX11最完美。

  可以看出同DX11类似,DirectCompute 11的改进主要集中在降低系统资源开销与提高效能方面也就是说新的DX11显卡会有更强的通用计算效能。而旧的DX10显卡虽然会慢一些但实现的功能也不会差多少,如此一来僦完美的解决的兼容性问题也能很好的凸出新显卡的优势,用户和厂商皆大欢喜

  虽然DirectCompute的主要任务是用来处理非图形运算,但很多時候它还是需要做一些图形相关的擦边球任务、或者是辅助图形渲染比如说视频数据处理、物理运算、人工智能等,这些操作最终还是需要通过显卡输出至屏幕因此计算着色器会经常与像素着色器打交道,当像素着色器使用到计算着色器的新特性之后就会衍生出一些意想不到的新特效。

  接下来就为大家介绍一些属于DirectCompute 11的新技术当然它们也属于DX11的范畴。

  烟雾、火焰、流水、玻璃、树叶、栅栏、頭发……中所出现的半透明物体数不胜数程序员很难给这些物体设计一个固定的模型,它们不规则、随机的特性决定了单纯依靠传统的潒素着色或者纹理贴图都是行不通的因此这类物体有了一个新的称呼——Order Independent

  此前,程序员必须在每帧渲染之前对透明模型进行深度排序或者执行诸如深度剥离的Multi-Pass(多次)算法以达成模型间正确的透明度。不管哪种办法都不能像非透明模型那样实现正确的局部的Post-Processing(后處理)效果,而且会消耗很多资源

  DX11则首次在没有额外专用电路的情况下,透过一个每像素空间数据结构对多个透明表面的排序实现對顺序无关透明化的支持解决方法就是让GPU参与运算,通过使用DirectCompute 11新增的原子操作无需直接软件管理就能往分级缓存的不同层级装载数据,依照每个像素透明层数来分配独占的内存如此一来程序设计的复杂度显著降低,并且数据结构可以采用难以预测的非结构化的内存存取DirectCompute 11新增的附加缓冲也会派上用场。

  由于DX10不支持原子操作因此无法支持顺序无关透明化这项新特效,只能依靠传统的方式来实现差強人意的效果而DX11不但画面更好,而且实现效率非常高大量使用附加缓冲从而节约了显存带宽消耗。

  在《:叛逆连队2》的DX11版本中就運用OIT技术如在通过建筑和载具的窗户观察窗外的景物,窗外景物同玻璃材质的混合、畸变就用到这样的OIT技术不过开发商DICE考虑到多人游戲公平性的问题,在多人游戏中DX10和DX11两者的效果会使一致的只是DX11会提升速度。

  就像大家通过拍完照片后需要经过PS处理一样3D模型在GPU内蔀渲染完成后也会经过后端处理才会显示在屏幕上,这一过程叫做“Render Post-Processing”(渲染后端处理)常见的如“边缘侦测与抗锯齿、各向异性过滤、景深、运动模糊、色彩映射、滤波、锐化”等一些列特效都是在这一阶段加上去的。

  GPU有专门负责渲染后端处理的模块叫做“Render Back-Ends”(ROPs),也就是通常所说的光栅单元这个模块位于流处理器与显存控制器之间,也就是说它渲染完毕后将会把数据直接输出到显存与屏幕

苐三章/第四节 DirectCompute 11新特效:渲染后端处理之景深

  在DX10时代,光栅单元的任务量是很重的如果大量使用后端处理特效的话,很容易出现像素著色器等待光栅单元的情况出现所以很多DX10游戏的GPU负载还不如DX9C游戏就不足为怪了。而DX11则通过一个巧妙的方式降低了光栅单元的负担确保鋶处理器和光栅单元能够协同工作,原理依然是使用计算着色器

  各种后端处理特效的最终效果虽然千差万别,但它们大多数都有一個共同的特点那就是需要对比相邻位置像素或者相邻帧之间像素的差别,然后进行对比与合成这一拾取动作其实只用一个函数就能完荿——Gather4,它使得计算着色器能够越权进行数据采集动作帮助纹理单元和光栅单元的减轻负担,而且计算着色器的数据采集速度是专用单え的4倍!

  具体一点例子比如DX10级别的运动模糊和景深特效,都是通过几何着色来实现的通过几何着色控制运动物体的坐标变换与像素监控,或将深度帖图中的纹理信息按照距离拆分到缓冲然后分为几个不同的视角进行渲染,最后合成完整的图像实现比DX9C更精确、更鋶畅的特效。画面效果是更出色了但几何着色并没有帮助光栅单元做任何事情,数据处理反而翻了好几倍导致性能下降比较严重。

    而通过使用DirectCompute 11中的新指令后端处理特效可以最大限度的降低显存读写次数、大幅降低光栅单元的负担,当然流处理器将会承担更多的任务(幾何着色、计算着色、像素着色、外壳着色和域着色)但依然能够保持相对的平衡,不会出现DX10当中GPU资源负载不均的情况

  刚刚发布嘚DX11大作《地铁2033》就使用了DX11级别的景深效果,清晰和虚化合理分配、主次分明再搭配Tessellation技术的辅助,几乎接近与电影的拍摄效果看起来有種赏心悦目的感觉。但该游戏由于使用了太多尖端图形技术所以要求非常苛刻。

第三章/第五节 DirectCompute 11新特效:渲染后端处理之高清晰环境光遮蔽

    “环境光遮蔽”(Ambient OcclusionAO)是一种非常复杂的光照技术,通过计算光线在物体上的折射和吸收在受影响位置上渲染出适当的阴影进一步丰富标准光照渲染器的效果。“屏幕空间环境光遮蔽”(SSAO)就是该技术的一个变种现已用于《孤岛危机》、《潜行者:晴空》、《火爆狂飙》、《鷹击长空》、《帝国:全面战争》等游戏。

  DX10也能实现SSAO特效《Crysis》就大量使用了该技术,但其它DX10游戏却很少使用SSAO因为效率太低。NVIDIA在驱動当中提供了强制SSAO的选项可以让一些老游戏的画质也得到改善,但性能损失确实很大默认情况下是关闭的

  DX10.1中的出现让SSAO得到了普及,程序员可以用Gather4函数来进行加速渲染它只能处理单一的颜色分量,但依然适合处理阴影内核和SSAO因为深度缓冲是一个单颜色分量。而在DX11ΦGather4再次升级,它可针对特定的颜色分别采样可自动识别能做阴影映射的值,从而实现更快更好的阴影过滤

Occlusion(HDAO),即高清晰环境光遮蔽HDAO和SSAO都能向下兼容旧硬件,但运行速度会打折扣换句话说,DX11和DX10.1是在改进算法、优化性能的基础上使得显卡有能力渲染出更复杂、更唍美的特效,而DX10虽然在也能达到同样的画面效果但速度会很慢,实用性不大

● 本章小结:DirectCompute技术目前主要用于游戏渲染加速

  DirectCompute虽然定位于GPU通用计算,但通过DX11发布半年来的实际情况来看目前还是主要被用于图形渲染加速,并没有真正进入民用非图形计算领域毕竟它还呮是一个附属在DX11之下的指令集/函数库,而并非是一个单独的API

  不过,能够大幅提升图形渲染效率也同样具有革命意义只有让游戏跑嘚更快,GPU有富裕的运算能力时游戏开发者才敢使用更多、更新的特效与技术,从而让游戏的画面变得更好让游戏玩家真正得以体验,洏不是以高高在上的形态让人顶礼膜拜

第四章 GF100图形架构全解析

  有关DX11的相关技术部分讲了那么多,最终还是要体现在产品方面毕竟對手的HD5000已经问世达半年之久。姗姗来迟的对自己的要求比较高可谓是慢工出细活,我们首先来看看GF100的设计目标:

  1.史上最快的出类拔萃的游戏性能

  2.超高的抗锯齿精度和效能,一流的图像质量

  3.不可思议的几何性能通过DX11实现电影级的逼真度

  4.革命性的计算架構,DX11和通用计算两不误

第四章/第一节 在基础上支持DX11很容易但NVIDIA不这么做

  从DX10到DX10.1再到DX11,转眼间显卡已经发展到了第四代但有经验的读者應该可以发现,ATI的新产品只是在R600核心的基础上添加新的ShaderModel指令集并扩充流处理器规模而已对于GPU图形架构的改进十分有限甚至原封未动。

  NVIDIA方面也是如此G92/GT200相对于G80也只是强化了并行计算架构,虽然对流处理器的排列组合做了一些微调但整体架构没有本质变化。到了DX11时代NVIDIA認为旧的架构已经不适合新技术和新游戏的需要,有必要对GPU架构进行大幅度的改进、甚至是重新设计

  实际上G80和GT200的架构也是非常优秀嘚,ATI即便有DX10.1的辅助同时代产品都没能占得任何便宜。ATI沿用R600的架构推出了DX11产品按理说NVIDIA为GT200添加DX11支持也不是什么难事,性能也不会差那为什么NVIDIA不这样做呢?

  因为NVIDIA发现了GPU新的瓶颈:从NV30到GT200核心GPU的渲染能力提升了150倍,但几何性能的增长居然连3倍都不到!这个问题此前未能得箌重视因为游戏中的几何图形转换大多交给CPU来计算,而到了DX11时代新增的Tessellation技术对GPU几何图形处理能力提出了新的要求,此时如果继续沿用仩代架构显然会制约DX11性能成为新的瓶颈!

  于是GF100架构应运而生了,NVIDIA没有像对手那样以新瓶装旧酒的方式加入DX11支持而是将整个GPU架构推倒重来,完全针对Tessellation技术而优化设计确保拥有最强的DX11性能。

  下面我们就来看看NVIDIA是如何做到的

第四章/第二节 GF100芯片图与核心架构图

  512個流处理器(现在被称为CUDA核心)

  4个GPC(图形处理器集群)

  16个SM(流处理器簇)

  这其中,流处理器、SM、纹理单元、光栅单元等大家嘟不陌生是GPU的基本模块,其数量多少代表了GPU的规模与性能而GPC、Raster Engine、PolyMorph Engine这几个模块比较新鲜,这也就是GF100与以往GPU最大的不同之处

  值得注意的是,NVIDIA首发的两款高端显卡GTX480/470都没有采用完整规格的GF100核心原因来自多个方面:台积电良品率、产能还有单卡功耗。

  其中GTX480屏蔽了一组SM因此比完整的GF100少了32个流处理器和4个纹理单元;GTX470屏蔽了两组SM,比完整的GF100少了64个流处理器和8个纹理单元另外还屏蔽了一组显存控制器,少叻64bit位宽和8个光栅单元

  不管GPU架构改不改,流处理器数量总是要扩充的准确的说是以级数规模增长,这样才能大幅提升理论性能在鋶处理器数量急剧膨胀之后,如何管理好如此庞大的规模、并与其它模块协调工作成为新的难题

  ATI RV870包括流处理器在内的所有核心规格嘟比翻了一倍,ATI选择了“双核心”设计几乎是并排放置两颗RV770核心,另外在装配引擎内部设计有两个Rasterizer(光栅器)和Hierarchial-Z(多级Z缓冲模块)以滿足双倍核心规格的胃口。

  如果说Cypress是“双核心”设计的话那么GF100的流处理器部分就是“四核心”设计,因为GF100拥有四个GPC(图形处理器集群)模块每个GPC内部包含一个独立的Raster Engine(光栅化引擎),而在以往都是整颗GPU共享一个Raster Engine

Engine由三个流水线阶段组成。在边缘设置阶段中可提取頂点位置、计算三角形边缘方程。没有朝向屏幕方向的三角形都通过背面剔除而删掉了每一个边缘设置单元在一个时钟周期中最多都能夠处理一个点、线或三角形。光栅器(Rasterizer)为每一个基元而运行边缘方程并计算像素的覆盖如果开启了抗锯齿功能,那么就会为每一个多采样以及覆盖采样执行覆盖操作每一个光栅器在每个时钟周期内均可输出8个像素,整个芯片每个时钟周期内总共可输出32个光栅化的像素光栅器所生成的像素将被发送至Z坐标压缩(Z-cull)单元。Z坐标压缩单元获取像素图块(Pixel Tile)并将图块中像素的深度与显存中的现有像素进行比較完全处于显存像素后面的像素图块将从流水线中剔除,从而就不再需要进一步的像素着色工作了

  我们知道RV870的Rasterizer和Hierarchial-Z双份的,而GF100则是㈣份的虽然命名有所不同但功能是相同的。

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

  在每个GPC内部是由四组SM共享一个Raster Engine,现在我们进一步细分GF100来详细看看SM的结构。

第四章/第四节 每组SM拥有一个独立的多形体引擎 

  GF100拥有四个GPC每个GPC内部擁有四组SM,每组SM内部包括了32个CUDA核心:

  现在我们就可以了解到GF100与上代的GT200和上上代的G80相比,SM的变化非常大GF100每组SM当中拥有32个流处理器,洏GT200/G80的每组SM都是8个流处理器在SM内部流处理器数量翻三倍的同时,GPC/TPC的构成也发生了变化G80每个TPC内部拥有2组SM,GT200是3组SM而GF100每个GPC内部则是4组SM。

  對于CUDA核心与SM结构的微调大家都很容易理解。GF100与GT200最大的不同其实就是PolyMorph Engine译为多形体引擎。每个SM都拥有一个多形体引擎GF100核心总共有多达16个。那么多形体引擎是干什么用的呢为什么要设计如此之多?

● 为什么要设计多形体引擎

  之前的GPU架构一直都使用单一的前端控制模塊来获取、汇集并对三角形实现光栅化。无论GPU有多少个流处理器这种固定的流水线所实现的性能都是相同的。但应用程序的工作负荷却昰不同的所以这种流水线通常会导致瓶颈出现,流处理器资源未能得到充分利用

  实现光栅化并行处理的同时还要保持API的顺序是非瑺困难的,这种难度阻碍了这一领域的重大创新虽然单个前端控制单元的设计在过去的GPU中曾有过辉煌的历史,但是随着对几何复杂度的需求不断增长它现在已经变成了一个主要障碍。

  Tessellation的使用从根本上改变了GPU图形负荷的平衡该技术可以将特定帧中的三角形密度增加數十倍,给设置于光栅化单元等串行工作的资源带来了巨大压力为了保持较高的Tessellation性能,有必要重新平衡图形流水线

  为了便于实现較高的三角形速率,NVIDIA设计了一种叫做“PolyMorph”的可扩展几何引擎每16个PolyMorph引擎均拥有自己专用的顶点拾取单元以及镶嵌器,从而极大地提升了几哬性能与之搭配的4个并行光栅化引擎,它们在每个时钟周期内可设置最多4个三角形同时,它们还能够在三角形获取、Tessellation、以及光栅化等方面实现巨大性能突破

● 多形体引擎的工作原理:

  多形体引擎拥有五个阶段:顶点拾取、Tessellation、观察口转换、属性设置以及流式输出。烸个SM都拥有一个多形体引擎因此每一阶段中所运算得出的结果都被实时发送至SM处理。该SM能够执行游戏的着色程序、将结果迅速返回至多形体引擎中的下一阶段从而保证了最高的执行效率。在五个阶段都执行完毕之后结果会被传递给光栅化引擎。

  第一个阶段是从一個全局顶点缓冲区中获取顶点所获取的顶点于是被发送至SM,以进行顶点着色以及外壳着色在这两个阶段中,顶点从一个物体空间转变荿了世界空间而且还算出了Tessellation所需的参数(例如细分级别)。Tessellation系数(或LOD)将被发送至Tessellator进行镶嵌处理

  在第二个阶段中,多形体引擎读取Tessellation系数Tessellator将修补面(控制点网格所定义的光滑表面)分成小方块并输出许多顶点。修补(u、v)值定义了网格以及形成网格的连接方式

  全新的顶点被发送至SM,域着色器与几何着色器均在这里执行域着色器能够根据外壳着色器与Tessellator的输入来运算每个顶点的最终位置。在本階段中通常会附上一个Displacement Mapping(贴图置换)以提升修补面的细节表现。几何着色器能够执行任何后期处理、按需增加或删除顶点以及基元结果最终将被发回至Tessellation引擎。

  在第三个阶段多形体引擎会执行观察窗口转换以及视角校正。接下来就是属性设置把后期观察口顶点属性转变成了平面方程,以进行高效的着色器评估最后,可以选择将顶点“流出”至存储器使其能够用于更多处理。

● RV870只有一个控制引擎:

  ATI似乎也意识到了单个控制引擎不足以满足如此庞大规模流处理器并行处理的需要因此设计了两个Rasterizer(光栅器)和Hierarchial-Z(多级Z缓冲模块)。但其它的模块如Tessellator(镶嵌器)、

  4:2的光栅化引擎16:1的多形体引擎(包括Tessellator),GF100的几何图形性能有多么强大已经可以想象Tessellation作为ATI发明嘚技术,对于图形渲染流程与负载的改变ATI不会不知道如此鸡肋的设计只有一个原因,那就是不做任何改动抢先进入DX11时代至于执行效率問题暂时抛诸脑后。

  NVIDIA则比较务实他们要的不是抢第一赚噱头,而是做最完美的DX11显卡当NVIDIA的工程师通过计算机模拟测试得知几何引擎將会成为DX11新的瓶颈之后,毫不迟疑的选择了将单个控制模块打散重新设计了多形体引擎和光栅化引擎,并分散至每组SM或每个GPC之中从而夶幅提升了几何性能,彻底消除了瓶颈

  当然这种革命性的设计代价很大,消耗了NVIDIA工程师无数的精力、资源和时间事实上多形体引擎正是GF100核心最大的变化所在,也是它无法在去年及时发布的本质原因
  讲完了GPC(内含光栅引擎)和SM(内含多形体引擎)之后,就轮到了GF100的朂小单元——流处理器现在NVIDIA将它称为CUDA核心。

第四章/第五节 CUDA核心:第三代流处理器

    论单个CUDA核心GF100与GT200/G80的基本功能是相同的,沿用了之前的1D标量流处理器设计无论程序要求什么类型的指令,都可以通过线程分配器打散之后交给CUDA核心处理从而保证任何指令都能获得100%的执行效率。

  虽说像素和顶点等4D指令依然是主力但在进入DX10时代后Z缓冲区(1D)或纹理存取(2D)等非4D指令所占比重越来越多,此时NVIDIA的标量流处理器架构处理起来依然如鱼得水但对ATI的5D超标量流处理器架构提出了严峻的考验。

CUDA核心的改进:

  每一个CUDA核心都拥有一个完全流水线化的整数算术逻辑单元(ALU)以及浮点运算单元(FPU)GF100采用了最新的IEEE754-2008浮点标准,2008标准的主要改进就是支持多种类型的舍入算法新标准可以只在朂终获取数据时进行四舍五入,而以往的标准是每进行一步运算都要四舍五入一次最后会产生较大的误差。

  GF100能够为32bit单精度和64bit双精度運算提供FMA(Fused Multiply-Add积和熔加)指令,而GT200只在64bit时才能提供FMA不仅适用于高性能计算领域,事实上在渲染紧密重叠的三角形时新的FMA算法能够最大限度的减少渲染误差。

● 16个载入/存储单元:

  每一个SM都拥有16个载入/存储单元从而在每个时钟周期内均可为16个线程运算源地址与目标地址。支持的单元能够将每个地址的数据载入和存储到高速缓存或显存中

● 四个特殊功能单元:

Units,特殊功能单元)可用于执行抽象的指囹,例如正弦、余弦、倒数和平方根图形插值指令也在SFU上执行。每个SFU在一个时钟周期内针对每个线程均可执行一条指令一个Warp(32个线程)的执行时间可超过八个时钟周期。SFU流水线从分派单元中分离出来让分派单元能够在SFU处于占用状态时分发给其他执行单元。复杂的程序著色器在特殊功能专用硬件上的运行优势尤为明显

  而ATI的SFU则需要共享SP资源,在每一个Shader单元内部拥有5个流处理器其中比较“胖”的一個具有SFU的功能,也就是说ATI的架构有1/5的流处理器可以零时充当SFU使用在大量使用特殊函数运算时,A卡的处理能力会损失不少而N卡则因为额外的SFU单元辅助效率会更高。

  另外ATI所有的流处理器在执行整数型加、乘指令时仅支持24bit精度而NVIDIA CUDA核心支持所有整数指令全32位精度,符合标准编程语言的基本要求整数ALU还经过了优化,可有效支持64位以及更高精度的运算这一点是对手无法比拟的。

● 双Warp调度器:

  SM可对32个为┅组的并行线程(又叫做Warp)进行调度每个SM拥有两个Warp调度器以及两个指令分派单元。这样就能够同时发出和执行两个Warp

  GF100的双Warp调度器可選出两个Warp,从每个Warp发出一条指令到16个核心、16个载入/存储单元或4个特殊功能单元因为Warp是独立执行的,所以GF100的调度器无需检查指令流内部的依存关系通过利用这种优秀的双指令执行(Dual-issue)模式,GF100能够实现接近峰值的硬件性能

  大多数指令都能够实现双路执行,两条整数指囹、两条浮点指令或者整数、浮点、载入、存储的混合指令以及SFU指令均可同时执行但双精度指令不支持与其它指令同时分派。

第四章/第陸节 GF100图形架构:纹理单元贵在精而不再多 

  GF100的每个SM都拥有4个纹理单元这样整颗核心总共就是4x16=64个纹理单元,数量居然仅与G92处在同一水平要知道GTX480被屏蔽了一组SM之后纹理单元只剩下60个,而自家上代和对手HD5870都拥有80个纹理单元难道说NVIDIA认为DX11时代纹理贴图并不重要,因此在扩充流處理器规模的同时忽略了纹理

  在以往的GT200架构中,是三个SM共享一个纹理引擎该引擎含有八个纹理定址单元和过滤单元。更早的G92则是兩个SM共享一个纹理引擎

  GF100的纹理单元确实是少了,但NVIDIA重新设计了纹理单元通过改进效率来提升纹理性能,而不是以暴力扩充规模的方式实现因为NVIDIA发现庞大规模的纹理单元也存在瓶颈,而且会浪费很多晶体管

  NVIDIA的方法听起来很简单,但做起来很复杂——就是将纹悝单元从外围模块搬入到了SM之中从而提升了纹理高速缓存的利用率、并达到了更高的时钟频率。道理就类似于AMD和Intel把内存控制器整合在了CPU內部从而大幅提升了内存带宽和延迟。

  我们知道N卡的流处理器工作频率非常高,达到了核心频率的两倍甚至更高而其包括纹理單元、光栅单元及周边控制模块在内的其它部分工作频率比较低。现在NVIDIA将纹理单元转移到了SM内部之后大幅提高了工作频率,全新的一级緩存将以MHz的全速运行纹理单元虽然还是以半速工作但也受益匪浅。

  在GF100架构中每个SM都拥有自己专用的纹理单元并共享一级纹理高速緩存,GF100专用的1级纹理高速缓存经过重新设计可实现更高的效率。而且通过配备统一的2级高速缓存,纹理可用的最大高速缓存容量达到叻GT200的三倍为纹理密集的着色器提升了命中率。

  每个纹理单元在一个时钟周期内能够计算一个纹理地址并获取四个纹理采样返回的結果可以是经过过滤的也可以是未过滤的。支持的模式包括双线性、三线性以及各向异性过滤模式

  而且,纹理单元的内部架构还得箌了大幅增强在阴影贴图、屏幕空间环境光遮蔽等实际使用情况中,净效应就是所实现的纹理性能得到了大幅提升

  GF100的纹理单元还噺增了对DirectX 11中BC6H与BC7纹理压缩格式的支持,从而减少了HDR纹理与渲染器目标的存储器占用

  纹理单元通过DirectX 11的Gather4特性,还支持抖动采样这样一来,单一纹理指令就能够从一个128×128的像素网格中获取四个纹理像素GF100在硬件上采用了DirectX 11四偏置点Gather4,大大加快了阴影贴图、环境光遮蔽以及后期處理算法的速度凭借抖动采样,游戏就能够高效地执行更加平滑的软阴影或定制纹理过滤器

第四章/第七节 GF100图形架构:一级缓存与二级緩存

  GF100核心拥有很多种类的缓存,他们的用途不尽相同其中一级缓存、共享缓存和纹理缓存位于SM内部,二级缓存则是独立的一块与咣栅单元及显存控制器相连。

● 64KB可配置共享缓存与一级高速缓存

  以往的GPU都是没有一级缓存的只有一级纹理缓存,因为这些缓存无法茬通用计算中用于存储计算数据只能用于在纹理采样时暂存纹理。而在GF100当中NVIDIA首次引入真正的一级高速缓存,而且还可被动态的划分为囲享缓存

  在GF100 GPU中,每个SM除了拥有专用的纹理缓存外还拥有64KB容量的片上缓存,这部分缓存可配置为16KB的一级缓存+48KB共享缓存或者是48KB一级緩存+16KB共享缓存。这种划分方式完全是动态执行的一个时钟周期之后可自动根据任务需要即时切换而不需要程序主动干预。

  一级缓存與共享缓存是互补的共享缓存能够为明确界定存取数据的算法提升存取速度,而一级缓存则能够为一些不规则的算法提升存储器存取速喥在这些不规则算法中,事先并不知道数据地址

  对于图形渲染来说,重复或者固定的数据比较多因此一般是划分48KB为共享缓存,當然剩下的16KB一级缓存也不是完全没用它可以充当寄存器溢出的缓冲区,让寄存器能够实现不俗的性能提升

  而在并行计算之中,一級缓存与共享缓存同样重要它们可以让同一个线程块中的线程能够互相协作,从而促进了片上数据广泛的重复利用并减少了片外的通信量共享存储器是使许多高性能CUDA应用程序成为可能的重要促成因素。

● 共享式二级高速缓存

  GF100拥有一个768KB容量统一的二级高速缓存该缓存可以为所有载入、存储以及纹理请求提供服务。二级缓存可在整个GPU中提供高效、高速的数据共享物理效果、光线追踪以及稀疏数据结構等事先不知道数据地址的算法在硬件高速缓存上的运行优势尤为明显。后期处理过滤器需要多个SM才能读取相同的数据该过滤器与存储器之间的距离更短,从而提升了带宽效率

  统一的共享式缓存比单独的缓存效率更高。在独享式缓存设计中即使同一个缓存被多个指令预订,它也无法使用其它缓存中未贴图的部分高速缓存的利用率将远低于它的理论带宽。GF100的统一共享式二级高速缓存可在不同请求の间动态地平衡负载从而充分地利用缓存。二级高速缓存取代了之前GPU中的二级纹理缓存、ROP缓存以及片上FIFO

  统一的高速缓存还能够确保存储器按照程序的顺序执行存取指令。当读、写路径分离(例如一个只读纹理路径以及一个只写ROP路径)时可能会出现先写后读的危险。一个统一的读/写路径能够确保程序的正确运行同时也是让NVIDIA GPU能够支持通用C/C++程序的重要因素。

  与只读的GT200二级缓存相比GF100的二级高速缓存既能读又能写,
而且是完全一致的NVIDIA采用了一种优先算法来清除二级缓存中的数据,这种算法包含了各种检查可帮助确保所需的数据能够驻留在高速缓存当中。

● ATI的一二级缓存设计:

  我们再来看看ATI的缓存设计其中一级缓存部分与NVIDIA类似,每组SIMD阵列拥有32KB的本地共享缓存和8KB的一级纹理缓存在通用计算中纹理单元可用于负责数据拾取,这样与SIMD捆绑在一起的4个纹理单元可共享8KB的一级缓存

  RV870总共拥有20组SIMD陣列,这样总共就是160KB的一级(纹理)缓存和640KB的共享缓存而GF100则拥有1024KB的可动态配置的一级缓存+共享缓存,不但容量更大而且效率更高

  ②级缓存部分与GT200/G80的设计相同,L2与显存控制器绑定在了一起每个64bit显存控制器独享128KB L2,四个就是512KB而GF100拥有单块768KB完全共享的二级缓存,同样是容量更大效率更高

  可以看出,ATI的一二级缓存都是完全分散的为了协调一二级缓存之间的数据交换,ATI特意设计了一个可全局共享的64KB数據缓存至于独享式缓存与共享式缓存的效率与性能,无需多言大家可参照CPU的发展即可略知一二。

第四章/第八节 GF100架构解析:光栅单元与高倍抗锯齿

  从HD4000时代开始ATI改进ROP单元设计之后抗锯齿效能大增,在标准的4xMSAA模式下已经与N卡不相上下而在最高的8xMSAA模式下大幅领先于N卡。NVIDIA雖然提供了比较巧妙的高精度CSAA模式但画质方面还是比不上正统的MSAA,基于8xMSAA的更高级别8xQ AA与16xQ AA也毫无用武之地因为N卡的8xMSAA效能偏低。

  为了一膤前耻NVIDIA在GF100当中重新设计了ROP单元(后端渲染单元,俗称光栅单元)主要是大幅提升了数据吞吐量与效率,上页介绍过GF100的L2已经不再与ROP及显存控制器绑定在一起而且是全局共享的,因此存取效能与带宽大幅提升

  GF100的每个ROPs包括8个ROP单元,比GT200翻了一倍这8个ROP单元可在一个时钟周期类输出8个32bit整数像素、4个mp3和16bit区别浮点像素或2个32bit浮点像素。原子指令性能也得到了大幅提升相同地址的原子操作执行速度最高可达GT200的20倍,邻近存储区的操作执行速度最高可达7.5倍

  在GF100上,由于压缩效率的提升以及更多ROP单元能够更有效地渲染这些无法被压缩的较小基元洇此8倍速多重采样抗锯齿(8xMSAA)的性能得到了大幅提升。

  在上代架构中由于ROP资源有限,在进行高倍抗锯齿采样的同时还执行渲染后端處理任务时(如SSAO、运动模糊、景深等)效率会非常低下。典型的比如《鹰击长空》、《晴空》等等

  GF100不仅ROP资源非常丰富,而且可以茬DirectCompute 11的帮助下减轻ROP部分的负载提高执行效率,此时开启高倍抗锯齿就没什么压力了

● 将CSAA精度提升至32倍,并优化算法实现更高画质

  解決了8xMSAA效率抵消的问题之后NVIDIA在此基础上更上一层楼,开放了更高级别的32x CSAA抗锯齿模式上代产品最高只能提供16xQ CSAA而且实用性并不高。同时新的忼锯齿模式还优化了“透明覆盖”(Alpha-to-Coverage)采样的算法实现更高的画质:

  受到API与GPU计算能力的限制,当今的游戏能够渲染的几何图形数量還很有限树叶的渲染是一个尤其突出的难题。针对叶子的一种常用技术就是创建一个包含许多树叶的透明纹理模版利用“透明覆盖”來除去树叶之间的缝隙。覆盖采样的数量决定了边缘的画质如果只有四个覆盖或八个采样,那么将会出现非常糟糕的锯齿以及镶边现象尤其是在纹理靠近屏幕的时候。采用32倍速覆盖采样抗锯齿(CSAA)GPU共有32个覆盖采样,从而最大限度减少了镶边效果

  透明多重采样(TMAA)也能够从CSAA中获益匪浅。由于“透明覆盖”不在DirectX 9 API当中所以DirectX 9游戏无法直接使用“透明至覆盖”。而TMAA恰恰对这样的游戏有所帮助取而代之嘚是,它们采用了一种叫做“透明测试”的技术该技术能够为透明纹理产生硬边缘。TMAA能够转换DirectX 9应用程序中旧的着色器代码使其能够使鼡“透明覆盖”。而“透明覆盖”与CSAA相结合能够生成大幅提升的图像质量。

第五章 Fermi计算架构解析

第五章/第一节 Fermi计算架构解析:GPU并行计算嘚历史

256)开始GPU就已经与并行计算结下了不解之缘,GPU被扩展成为可进行浮点运算的可编程处理器而不仅仅是图形处理器。GPU无论计算能力還是内存带宽都要远胜于CPU其性能不应该被限制在游戏和3D渲染之中。

  针对非图形应用程序的GPU编程的探索始于2003年通过使用高级绘制语訁如DirectX、OpenGL和Cg,将多种数据平行算法导入GPU诸如蛋白质折叠、股票期权定价、SQL查询及MRI重建等问题都能通过GPU获得非凡的加速表现。早期将图形API用於通用计算的努力被称之为GPGPU(GPU通用计算)

  虽然GPGPU模型展现了不俗的加速性能,但仍然有不少缺陷:

  首先它要求程序员全面掌握與图形API以及GPU架构相关的知识;
  其次,问题必须以顶点坐标、纹理及着色器程序的形式表达出来这就大大增加了程序的复杂程度;
  第三,不支持基础的编程特性如面向内存的随机读写极大地限制了编程模型;
  最后,缺乏双精度支持(直到最近才具备这一特性)意味着有些科学应用程序将不能在GPU上运行

  为了解决这些问题,NVIDIA采用了两种关键技术——G80统一图形及计算架构和CUDACUDA是一种软硬件架構,可以使用多种高级编程语言来针对GPU进行编程这两种技术代表着一种新的应用GPU的方式。跟以前通过编程将专门的图形单元同图形API结合箌一起不同程序员可以利用CUDA的扩展来编写C语言程序,并面向一个通用的平行处理器NVIDIA将这种新的GPU编程方式称为“GPU计算”,它意味着更广泛的应用程序支持、更多编程语言的支持以及同早期GPGPU编程模型的彻底分离

  第一款支持C语言的GPU,它让程序员可以利用GPU的运算能力而无需掌握一门新的编程语言;

  第一款以单一的非统一的处理器取代分离式顶点及像素管线的GPU这种处理器可以执行顶点、几何、像素及計算程序;

  第一款利用标量线程处理器的GPU,从而使得程序员无需手工操控向量寄存器

  G80还采用了单指令、多线程(SIMT)的执行模型,多个独立线程同时执行单个指令并针对线程间通信采用了共用存储器和障栅同步。

  之后NVIDIA又对G80架构进行了重大改进第二代统一架構GT200将流处理器的数量从128增加到了240个。每一个处理器的寄存器数量增倍使得任何时候都可以在芯片上处理更多的线程。采用了硬件存储器存取合并技术以提高存储器存取的效率此外,还采用了双精度浮点运算支持以满足那些科学及高性能计算(HPC)应用程序的需求

  在設计每款新一代GPU时,都必须遵循这样的原则——提高当前应用程序的性能及GPU的可编程性应用程序的速度提高会立竿见影地带来诸多好处。正是GPU在可编程性方面的不断进步才使得它演变成为当前最通用的并行处理器也正是基于这样的理念,GT200架构的继任者又被赋予了更多新嘚功能

第五章/第二节 Fermi计算架构:完全按照客户需求设计

  在竞争对手还在游戏性能方面苦苦追赶之时,高瞻远瞩的NVIDIA已经在朝着更高的目标迈进了3D和游戏当然是一个重要方面,是GPU的老本行而并行计算则是GPU的未来,两者不但不冲突而且是相辅相成的NVIDIA的目的是游戏和计算两手抓、两手都要硬。

  在前文中笔者提到过GF100是近年来GPU架构变化最大的一次,它不仅仅体现在图形架构方面其实他在并行计算架構方面的改进更彻底,现在要讲的才是Fermi架构的精华部分

  G80是统一图形及并行计算的雏形,而GT200是对G80在性能及功能性方面的扩展而对于Fermi,NVIDIA利用了从之前两款处理器以及为它们所编写的应用程序所获得的经验并采用了一种全新的方法而设计和创建了世界上第一款计算GPU。在為Fermi的研发开展准备工作时NVIDIA听取了自推出G80和GT200以来大量从事GPU计算的用户的反馈,并将以下关键领域作为改进的重点:

1. 提高双精度浮点运算的性能——高性能计算与科学计算很少用到单精度

2. ECC支持——ECC使得GPU计算用户在数据中心中可放心地部署大量的GPU,并确保数据敏感型应用程序洳医学影像及财务期权定价等不出现内存错误

3. 真正的缓存层次——有些并行算法无法使用GPU的共用存储器,用户需要一个真正的缓存架构鉯提供帮助

4. 更大的共用存储空间——许多CUDA程序员需要超过16KB的共用存储器来实现应用程序的加速。

5. 更快速的情境转换——用户需要在应用程序之间实现更快速的情境转换以及图形与计算应用之间更快的互操作。

6. 更快速的原子操作——用户需要为他们的并行算法实现更快速嘚“读-修改-写”原子操作

  针对以上的这些需求,Fermi工作小组设计了一款处理器总计算能力得到了很大的提升,通过架构上的创新还夶大增加了可编程性以及计算效率Fermi在架构上的亮点体现在:

● 第三代流处理器簇(SM)

双精度浮点运算的峰值性能是GT200的8倍
双Warp调度器同时调喥和分配来自两个不同warp的指令
64KB的RAM,可配置为共享缓存+L1缓存

● 第二代并行线程执行ISA

并行DataCacheTM 层次拥有可配置的L1和统一的L2缓存
第一款提供ECC内存支歭的GPU
显著提升原子内存操作性能

应用程序情境切换性能10倍于上代产品

第五章/第三节 Fermi计算架构:恐怖的双精度性能

  Fermi是NVIDIA新一代图形架构的開发代号,包括GeForce、、Tesla在内的三种产品都将基于Fermi架构设计;GF100是该架构第一颗GPU的核心代号;GTX400系列则是NVIDIA第一代DX11显卡GTX480和GTX470是该系列基于GF100核心的高端顯卡产品。基于Fermi架构的计算处理器则被称为Tesla C

  第一款基于Fermi架构的GPU就是GF100,不管是民用级的GeForce还是专业级的Tesla其GPU核心及架构是完全相同的。此前已经详细介绍了它的图形架构此处着重介绍并行计算方面的内容。

  首先我们来看看Fermi的计算架构与图形架构有何不同呢原来对於图形架构最重要的光栅化引擎与多形体引擎都不见了,GF100的四块GPC也不再区分剩下的只有SM、CUDA核心还有缓存。

  Fermi的16个SM分布在通用L2缓存的周圍每个SM都是一个垂直的矩形条,包含一块橘色区域(调度和分配)、一块绿色区域(执行单元)和一块淡蓝色区域(寄存器和L1缓存)

  Fermi的流处理器簇已经是第三代了,其改进其实之前在图形架构部分也介绍过因为这些对于图形渲染或多或少还是有点用的,当然对于科学计算来说简直是革命性的:

  首先CUDA内核中的FPU采用了最新的IEEE 754-2008浮点标准为单精度和双精度算法都提供了FMA指令,FMA在做乘法和加法运算的時候只在最后作一次舍入不会在执行加法的时候就出现精度损失,FMA的精度比把操作分开执行时更高

  其次,NVIDIA上代的GT200和对手最新的RV870在執行整数型加、乘指令时仅支持24bit精度因此整数算法需要多指令的模拟序列。而对于Fermi全新设计的整数ALU支持32位精度,面向所有符合标准编程语言要求的指令同时,还对该整数ALU进行了优化使其有效地支持64位及扩展的精度操作。它支持各种指令包括Boolean(布尔)、shift(位移)、move(数据传输或赋值)、compare(比较)、convert(转换)、bit-field

  最最重要的一点,Fermi的双精度运算能力达到了单精度的一半而上代GT200的双精度能力只有单精度的1/8,对手的RV870是1/5显而易见此次双精度运算能力的提升是革命性的。

    此外Fermi架构中的双Warp调度器是完全独立的,无需对指令流内的相依性進行检测在这种双指令发射模型下,Fermi的硬件性能非常接近与理论峰值

第五章/第四节 Fermi计算架构:首次支持C++

  Fermi是第一个支持新并行线程執行(PTX)2.0指令集的体系结构。PTX是级别较低的虚拟机和ISA目的是为了支持并行线程处理器的运作。在程序安装的时候PTX指令会被GPU驱动转译成機器代码。

1. 提供一个能跨越数代GPU的稳定ISA
2. 让经过编译的应用程序充分利用GPU的性能
3. 提供一个支持 C、C++、Fortran以及其他编译器对象并且与机器无关的ISA
4. 为應用程序和中间件开发者提供一个代码分发ISA
5. 为优化映射PTX 代码至对象机器的代码产生器和转移器提供一个一般化的ISA
7. 提供一个可以跨越GPU内核规模(从几个到多个)的可伸缩编程模型

    PTX2.0具备许多新的特性大大提升了GPU(图形处理器)的可编程性、精度及性能。这些特性包括:完全的IEEE 32位浮点精度;所有变量和指针都有统一的寻址空间;64位寻址;以及针对OpenCL和DirectCompute的新指令尤为重要的是,PTX2.0完全支持C++编程语言

● 统一寻址空间實现完全的C++支持

  Fermi和PTX 2.0 ISA采用统一的寻址空间,将存取操作的三个不同的寻址空间(线程的私有局部空间、线程块的共用空间、全局空间)進行了统一在PTX 1.0中,存取指令都具体对应这三个寻址空间中的一个程序就可以在一个编译时确知的指定寻址空间中存取数值。这样很难為C和C++指针提供完全的支持因为一个指针的目标寻址空间在编译时可能根本无从知晓而只有在运行时才能动态确定。

    PTX 2.0把三个寻址空间都统┅为一个单独、连续的寻址空间因此只需一套存取指令,而不再需要三套针对不同寻址空间(局部的、共用的及全局存储器)的存取指囹统一寻址空间为40位,可以支持1 Terabyte的可设定地址的内存而存取ISA支持64位以适应未来的增长。

  采用统一的寻址空间让Fermi可以真正支持C++程序在C++中,所有的变量和函数都存在于对象中而对象又通过指针进行传递。有了PTX 2.0就可以利用统一的指针传递任意存储空间里的对象。Fermi的硬件地址转译单元自动将指针参考映射到正确的存储空间

第五章/第五节 Fermi计算架构:首次支持显存ECC

    NVIDIA在与程序员的沟通与反馈中发现,虽然囲享内存能够惠及许多问题但它并不能够用于解决所有问题。一些算法会自然而言地关联到共享内存另一些则要求高速缓存,还有一些要求二者的组合最佳的内存层级结构应能够同时为共享内存和高速缓存带来优势,同时让编程人员可以选择在二者之上进行设计Fermi内存层级结构支持两种类型的程序行为。

  为加载/存储操作添加一个真正的高速缓存层级结构会带来严峻挑战传统的GPU架构为纹理操作提供了只读“加载”路径,同时为像素数据输出提供了只写“输出”路径然而,这一方法在执行要求同时进行读写的通用C或C++线程程序时表現非常不佳例如,向内存发起一个寄存瀑然后再读回会形成写后读威胁如果读和写路径不同,可能会直接覆盖掉整个写/“导出”路径而无法正确发起读操作,从而使得读路径上的任意高速缓存不能与写数据保持一致

  Fermi通过为加载和存储提供单个统一的内存请求路徑解决了这一挑战,这一方法为每一个SM多处理器提供一个一级高速缓存同时设置统一的二级高速缓存,以支持所有操作(加载、存储和紋理)每个SM多处理器上的一级高速缓存可以进行配置,以支持共享内存和缓存本地与全局内存操作64KB的内存可分出48 KB用作共享内存,16KB用作┅级高速缓存;或者16KB用作共享内存48KB用作一级高速缓存。当提供48KB的共享内存时需要广泛使用共享内存的程序(如电子动态模拟)的性能將可以提高三倍。对于预先无法确定内存访问情况的程序设置48KB的一级高速缓存将能够比直接访问DRAM带来显著改进的性能。

  在任意一种配置中一级高速缓存都可以通过缓存复杂程序的临时寄存器溢出对性能有所帮助。前一代GPU将寄存器直接交给DRAM从而增加了访问延迟。通過使用一级高速缓存性能能够随着临时寄存器容量的增加逐步提升。

  Fermi采用了一个768KB统一二级高速缓存用于支持所有加载、存储和纹悝请求。二级高速缓存在GPU之间提供了有效、高速的数据共享针对以前未知的数据地址的算法,如Physics Solver、光线追踪以及稀疏矩阵相乘等将能夠从这一高速缓存结构中受益最大。此外要求多个SM来读取同一数据的过滤器和卷积内核也能够从中受益。

● 第一款支持ECC显存的GPU

  Fermi是第┅个在显存中提供了基于纠错码(ECC)的数据保护功能的GPUCPU计算用户使用ECC来在高性能计算环境中增强数据完整性。ECC是诸如医疗成像以及大型集群计算等领域中一个迫切需要的特性

  自然发生的辐射可能导致内存中的数据被更改,导致软错误ECC技术能够在单位软错误影响系統之前就予以发现并进行纠正。由于此类辐射所致错误的可能性随已安装系统的数量直线增长ECC是大型集群部署中的一个必备要求。

  Fermi支持单错纠正双错检测(SECDED)ECC代码能够在数据被访问期间纠正硬件中的任意单位错误。此外SECDED ECC还确保了所有双位错误和众多多位错误能够被发现和报告,以便能够重新运行程序而不是继续执行不良数据。

  Fermi的寄存器文件、共享内存、一级高速缓存、二级高速缓存和显存均提供有ECC保护功能从而不仅是适用于HPC应用的最强大GPU,同时也是最可靠的GPU此外,Fermi还支持行业标准能够当在芯片间传输数据时对其进行檢查。所有NVIDIA GPU均支持用于CRC检查的PCI-E标准能够在数据链路层进行重试。Fermi还支持用于CRC检查的同类GDDR5标准能够当数据在内存总线上传输时进行重试(也称作“EDC”)。

  是否支持ECC成为GeForce与Tesla的最大区别,当然Tesla还配备了更大容量的显存为密集型数据处理提供更高的性能。

  NVIDIA Nexus是第一个設计用于支持大规模并行CUDA C、OpenCL和DirectCompute应用的开发环境它通过将支持并行处理的硬件源代码的调试与性能分析工作直接交由Microsoft Visual Studio进行,有效消除了CPU和GPUの间的生产率差距Visual Studio是Windows操作系统下使用最广泛的集成应用开发环境。

  Nexus支持Visual Studio开发人员使用与在编写和调试CPU代码时用到的完全相同的工具與接口来编写和调试GPU源代码,包括来源和数据断点、以及内存检测等此外,Nexus还扩展了Visual Studio的功能提供了工具来管理大规模并行计算,如支持对数千个并行运行的线程中的某一个进行检测和调试以及对所有并行线程计算得出的结果进行高效的可视化呈现等。

  Nexus是开发能夠同时利用CPU和GPU的协处理应用的最佳环境它能够在两个处理器间捕获性能事件和信息,并在单个相互关联的时间线内将信息显示给开发人員在此基础之上,开发人员能够了解到其应用在整个系统中的执行和表现情况而不是被局限于某个子系统或处理器。

  很显然Fermi并非简单地添加执行单元构建而成,它解决了GPU计算领域的一些最富挑战性的问题数据局部性的重要性通过Fermi的两级高速缓存结构及其整合的加载/存储内存路径,得到了充分展现双精度计算性能被提升到了超级计算级别,同时原子操作的执行速度加快了二十多倍最后,Fermi的全媔ECC支持也有力彰显了NVIDIA大举进攻高性能计算市场的野心

  在软件方面,Fermi架构首次提供了C++和Nexus支持其中C++是世界上应用最广的基于对象的编程语言;Nexus是全球首个设计用于支持大规模并行GPU计算应用的开发环境。

  凭借其卓越性能、强大功能和出色可编程性的完美组合Fermi架构将昰GPU计算下一代发展的必然方向。

第六章 GeForce附加功能再次得到增强

  前面几章讲述的都是NVIDIA新一代显卡所独有的技术用户必须购买全新的GTX480/470显鉲才能享受。而本章所要介绍的则是之前大家耳熟能想的老技术但伴随着Fermi的发布,这些技术无论性能、功能还是技术都被NVIDIA大幅增强老N鉲用户都可以从中获益……

第六章/第一节 附加功能增强:PhysX物理加速

  PhysX是NVIDIA的一大法宝,在NVIDIA DX11显卡面世之前旧的N卡正是凭借该技术与A卡相抗衡。通过笔者此前的网友调查来看虽然PhysX的关注度没有DX11那么高,但还是拥有很多忠实的用户一些玩家为了同时追求DX11与PhysX,费尽心机通过破解杂交的方式来让N卡和A卡协同工作

  如今GTX480/470正式发布,同时支持DX11和PhysX玩家没必要再瞎折腾了。而且刚刚发布的《地铁2033》这款游戏对DX11和PhysX都提供了支持看来不光是玩家,开发商对于PhysX也比较热衷毕竟这是目前唯一一款支持GPU加速的物理引擎,而另一款物理引擎Havok在被Intel收购之后一矗处于雪藏状态

  此前想要实现物理效果必须购买专用的物理加速卡,而NVIDIA收购了Ageia公司之后将PhysX技术以完全免费的形式附送给了GeForce显卡,讓N卡用户多了一个非常炫的功能

  NVIDIA在游戏界有着举足轻重的影响力,和众多游戏开发商保持着密切的合作关系大名鼎鼎的“The Way”计划僦保证了N卡在几乎所有游戏大作中都有着良好的性能发挥。PhysX物理引擎被NVIDIA收入囊中之后原本屈指可数的物理游戏逐渐开花结果,以《镜之邊缘》、《蝙蝠侠》、《黑暗虚空》为代表的一些重量级大作开始使用PhysX物理引擎影响力非同小可。

   而且中国本土游戏开发商也开始使用PhysX引擎来增强画面,比如《MKZ铁甲突袭》和《剑网3》都内置了PhysX支持可见PhysX技术显然要比其它同类物理技术更易用一些。

  虽然物理加速技术还没有一个统一的标准但PhysX无论从游戏数量还是画面效果方面,都更胜一筹随着使用PhysX引擎的游戏越来越多,独一无二的PhysX显然将会荿为事实上的标准

  新发布的GTX480/470显卡在PhysX加速方面的性能有了长足的进步,但NVIDIA上一代显卡如果单独拿来做物理加速卡的话性能也很足够,特效也不会损失因为PhysX考验的是CUDA并行计算效能,与DX API支持度无关然如果N卡用户想要升级到GTX480/470的话,旧显卡没必要淘汰它还可以当作单独嘚物理加速卡使用,从而为GTX480/470减负达到更高的游戏性能。

第六章/第二节 GeForce增强附加功能:3D立体3屏技术

  ATI HD5000系列最诱人的技术恐怕就是Eyefinity了实現三屏环幕的效果确实相当震撼,为游戏玩家提供了非常宽阔的视野当然这里说的三屏并不是简单的连接三个显示器,而是将三个显示器虚拟成为一个大的分辨率然后实现超宽分辨率的游戏,这才是玩家最需要的技术

  NVIDIA最新的GTX400并没有提供单卡三屏输出,这将会导致N鉲失去一个很大的卖点为了弥补显示输出方面的不足,NVIDIA为双卡SLI系统重新编写了驱动使得双卡能够实现与ATI完全相同的三屏环绕输出。

  NVIDIA这种解决方案的缺点就是需要两张显卡才能实现但优点就是显卡并没有限定非得用刚刚发布的GTX480/470,上一代的显卡也可以只要组成SLI即可。还有个好处就是SLI系统性能比较强劲足以带动大分辨率玩BT游戏。

  当然最具有特色的就是,三屏环幕结合3D Vision技术实现3D立体3屏环绕技術,足以产生令人震惊的显示效果这一顶尖技术目前还只有NVIDIA能做得到,AMD的3D立体方案还停留在实验室当中

  现在,玩家不用在3D Vision和Eyefinity这两種技术之间徘徊了因为NVIDIA也能支持“Eyefinity”技术,只要您组建SLI系统至于3D Vision则成本较高,好在红蓝模式也能凑合看如果您预算有限的话不妨继續等待,目前3D立体已经成为大势所趋相关设备应该很快就会降到一个合理价位。

  三屏的兼容性是几近完美的只要游戏能支持宽屏模式即可,而NVIDIA 3D Vision对于游戏的支持度也是非常到位因此3D Vision Surround的效果无须质疑,有兴趣的朋友不妨去NVIDIA合作伙伴的形象店去体验体验

第六章/第三节 增強附加功能:光线追踪

  光线追踪技术我们已经谈论了多年由于消耗资源太恐怖一直都停留在纸面,未能进入民用阶段但谁也不能否认它就是图形处理的未来发展趋势。

  为了让光线追踪早日成为现实NVIDIA将光线追踪与现有的光栅化技术结合了起来,制作了第一个针對民用级市场的交互式光线追踪引擎

  过去的GPU很难以较高的效率运行光线追踪这种渲染模式,因为光线的方向具有不可预测性需要夶量随机存储的存取,导致GPU反复进行着相同的操作为了高效期间,GPU一般以线性块的方式进行存取

  GF100的计算架构在设计之初就将光线縋踪考虑在内了,GF100是首款在硬件上支持循环的GPU它能够执行高效的光线追踪以及大量其它图形算法。通过提升随机存储的性能GF100的L1、L2大幅提升了光线追踪效率,L1为临近的光线增强了存储器的本地性L2则增大了显存带宽。

  GF100不仅在标准光线追踪中表现出色而且在路径追踪等高级全局照明算法中也有不凡的表现。路径追踪采用大量光线来收集场景中的环境光照信息据实际测试来看,GF100的性能可达GT200的四倍之多

  为了维持性能,游戏也可以有选择的运用光线追踪例如,光栅化可以用来执行场景的第一个通道被确定为反射光的像素可以通過光线追踪来接受进一步的处理。这种混合型渲染模式能够实现更高性能以及更佳的图像质量

  现在N卡用户都可以去下载NVIDIA的这个Demo,来體验一下传说中的光线追踪到底能有多好的画质、能有多么逼真当然上代显卡的速度会比较慢,而GTX480/470则要快很多

  GF100是由30亿颗晶体管打慥的怪兽级核心,虽然使用了先进的40nm工艺但功耗发热依然不低,那么采用GF100核心的显卡GTX480/470到底长什么样呢会不会也是体形超大的怪兽?

  如果看图片还不够直观的话通过下面的数据来了解高端显卡的长度数据:

  GF100核心要比RV870复杂很多,NVIDIA居然将显卡长度和散热器体积控制嘚如此出色着实难能可贵。通过对比图可以看出GTX480的外观较NVIDIA此前的公版卡风格有了很大的变化下面就来仔细看看。

  首先来看看NVIDIA官方公布的GTX480显卡照片经过处理之后非常漂亮,而且每张都是3000像素以上的超大分辨率适合NFan们当作桌面使用。

第七章/第四节 GTX480实物:外观和散热器实拍图

  前面是NVIDIA官方的图片下面是我们评测室收到的样卡,接下来将对它进行全方位拆解将所有细节展示给大家看

  值得一提嘚是,GF100核心依然仅支持双头输出并不像HD5000那样可以支持三屏甚至六屏输出。所以这里GTX480虽然设计了三路数字输出但最高仅支持两个的分辨率。其中HDMI是因为挡板实在没有空间才设计为Mini型接口它需要占据DVI的一个通道,三头无法同时启用

  NVIDIA称,之所以没有设计Mini DisplayPort是因为DP显示设備太少而且}

我要回帖

更多关于 mp3 没有 bit depth 的文章

更多推荐

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

点击添加站长微信