关于显卡的一些知识解剖(ZT)
时间:2010-10-11 来源:BjarneS
前言
选择一款显卡 可能是很多人在装机的时候最难抉择的,往往会为选择哪款型号的显卡性能更强而伤疼头脑。毕竟现在的大型3D游戏,主要是依靠显卡,显卡的性能越好就意味着在游戏中的表现和发挥就更强,谁也不想花了几千元买台电脑 结果玩一个喜欢的3D游戏卡得要死。。。谁喜欢这样?
第一章:渲染管线
决定一款显卡性能的是显卡的显示核心,也就是GPU核心。它的结构好坏,直接决定了一款显卡的性能。也就是显卡的构建,渲染,几何变换,纹理贴图等能力。
在DirectX10以前,分辨一款不同核心规格的显卡性能好坏的最简单的办法就是看哪款显卡的渲染管线更多,哪款显卡的三角形生成和处理变换能力更强。
(当然,仅单指同一厂商内的产品,像NVIDIA 7300GT和ATI 1650GT 同样是8管线 为什么后者的性能就远胜于前者呢?读了后面的文章 应该就比较轻松的能理解了)
显卡的工作原理,说白了就是由一个图形从构建到生成输出的过程,这个指令是由CPU发出,而由显卡GPU核心内的渲染管线执行的。
一条完整的渲染管线具备了独立的构建,生成,输出等功能,所以说一款显卡的几条渲染管线是互相独立但是又是并行的。
在这里介绍下 关于显卡的几个比较重要的参数
顶点着色单元 (vertex shader):
在这里大家可以简称为VS单元或直接称呼为VS.它的作用和它的名字一样,就是生成一个3D图形的顶点。
而在电脑和计算机世界中,所有的3D立体图形画面都是由无数多个三角形构成的,三角形数量越多,画面想当然的也更真实精美。(在生成顶点的过程中,会发生几何变换等现象,由于涉及到图形学,所以就不深入下去了),而VS的作用就是书写构成那个三角形的3个顶点,确定了图形所在的平面(3个顶点确定一个平面),VS越多,三角形的生成和输出处理的能力也就越强。 比如说你玩一个游戏 画面需要你在1S内处理3000个顶点着色,但是你显卡的VS处理能力不足,只能在同一时间内处理1500个VS,那么肯定,你玩游戏的速度或者画面就没有能够同时处理3000个VS的显卡那么爽了,即使你的显卡的渲染管线数目和能够处理3000个VS的显卡一样 甚至比它更多。。。
像素渲染单元(Pixel Shader Unit):
和上面一样,大家可以简称为PSU。它的作用就是完成一些基本的像素处理运算,如极品飞车10中常见的光影特效,高动态渲染等
纹理贴图单元(Texture mapping unit):
和上面一样,大家可以简称为TMU,其工作就是进行纹理处理运算。因为前面说了,VS的作用是生成顶点,也就是生成了一个3D图形的基本轮廓,但是这个轮廓却是模糊不清的,TMU的作用就是使那个轮廓逐渐清晰,使画面更加的真实。
拿画画来说,你画一个人物,首先就是画出他的轮廓,然后通过种种的修改方式,加粗细线条等等,最终成为一副完整的画一样。所以说PSU的功能就是处理纹理工作,像玩一些游戏一样,你特效开的高,你会发现太阳真实般的发光,水面是反射的,树子的叶子绿绿的随风吹,纯净和真实得吓人。其实这些就是TMU的作用
光栅化引擎(Raster Operations Processor):
和上面一样,大家可以简称为,大家可以简称为ROP.它的作用就是进行最后的输出工作,执行像素读与写的操作,以及执行抗锯齿,色彩整合等功能。
因为显示器,大家都知道,无论是CRT还是LCD,他们都有场效应晶体管(上几百万个),所以最后转化为显示屏幕中的图像都是泌出一些像素失效,象素点丢失,像素点失色等后的元素生成的,这其中也太过复杂,本人没学过相关的知识,也不能意较为准确点的语言对大家叙述。抱歉。
话归正传,大家也都知道像素点都是有坐标定位的,通过一定的算法转换,由显卡生成的点与线转换为像素点,这一过程就是光栅化的过程。(在3D世界中,只有2种存在方式,一是点,二就是连接点与点之间的线,也就是上面所说的VS,PSU,TMU生成,渲染,构建等。而象素的渲染生成,一般都是由PS的RGB的三原色和alpha通道来进行描述和工作的)
就拿上面说的抗锯齿来说下吧,玩游戏的都知道 很多人动不动就说开什么HDR+AA 其中的HDR 也就是前面PSU中的高动态光影渲染,而AA则是全屏抗锯齿。
关于抗锯齿的一些介绍,这里引用下别人的一个说法:
由于在3D图像中,受分辨的制约,物体边缘总会或多或少的呈现三角形的锯齿,而抗锯齿就是指对图像边缘进行柔化处理,使图像边缘看起来更平滑,更接近实物的物体。它是提高画质以使之柔和的一种方法。如今最新的全屏抗锯齿(FullSceneAnti-Aliasing)可以有效的消除多边形结合处(特别是较小的多边形间组合中)的错位现象,降低了图像的失真度。全景抗锯齿在进行处理时,须对图像附近的像素进行2-4次采样,以达到不同级别的抗锯齿效果。简单的说也就是将图像边缘及其两侧的像素颜色进行混合,然后用新生成的具有混合特性的点来替换原来位置上的点以达到柔化物体外形、消除锯齿的效果。
看明白的也就知道了 抗锯齿也就是一个光栅化的过程。
在传统的DirectX的API定义中,象素着色器(Pixel Shader 可以简称为PS )与顶点着色器 (也就是上面说的顶点着色单元)是完全分离的,而在新的DirectX 10中,采用了新的统一的渲染结构,效率得到更大的提升,这里不详细说明,下面会慢慢讲到。
传统的象素着色器也就是PS=PSU+TMU+ROP ,而一条完整的渲染管线就等于VS+PSU+TMU+ROP,这也就意味这一条渲染管线想完整的处理一个3D图形 必须从生成顶点(VS)开始 经过像素渲染(PSU),纹理贴图(TMU),以及光栅化(ROP)的处理最终输出。
另外注意下,从DirectX8开始,管线开始具有可编程的性质,一般的参数划分,都把单独的一个像素着色器做为一个单独的渲染管线,与顶点着色器也就是VS,是互相分离的。比如说拿我喜欢的Radeon X1650GT来说,它是8管8顶点,也就是8个象素着色器管线和8个顶点着色器管线。
本章总结:初浅的让大家认识了什么是显卡的渲染管线,以及其简单的构造应用等
第二章:不可忽视的制作工艺
在吧里呆得比较久的,都知道本人是一个不折不扣的A饭(AMD-ATI FANS)。所以我帮别人配机的时候 一般都是配AMD的CPU和ATI的显卡(注:现在的ATI已经被AMD以43亿美元现金+5800万股票约合54亿美元的价格收购了),与CPU一样,显卡的制作工艺也是以纳米计算,其发展过程被称做立方摩尔定律,更新换代的速度极快,基本6个月就有一次新的产品出炉
(小知识:摩尔定律,戈顿•摩尔,INTEL的创始人,曾预测:半导体集成电路的密度或容量每18个月翻一番,如今随着纳米工艺技术的发展,摩尔定律也肯定会遇到量子效应,最后失去它的效果)
制造工艺的提高,也就意味这晶体管核心面积,发热的减少,也意味这可以容纳更多晶体管,性能也理所当然的得到了提升。像现在的8800GTX和2900XT 他们的晶体管借用先进的80NM制作工艺数目达到了惊人的6.8亿和7亿。而像几年前杀便天下无敌手的9800PRO也不过集成了1.15亿晶体管而已 但是它的制作工艺仅为150纳米而已。
但是这里你可不要认为,制作工艺越高越好的显卡,性能就越好,重要的是显卡的核心结构好,能发挥出制作工艺提升所带来的效果。就像1年前 AMD的90NM的CPU把INTEL的65NM CPU打得满地找牙,1年后,扣肉打得AMD不得不多次使用降价政策一样。
随着显卡的制作工艺 频率的高速提升 目前的8800GTX 2900XT Geforce 8800 Ultra 等已成为不折不扣的电老虎。。。。。
本章总结:简单的认识下了制作工艺对CPU以及显卡的一些影响
第三章:闲聊API
我们都知道,无论是OpenGL还是DirectX以及其他的3D图形程序,他们都会自己定义一个脚本文件,通过调用来描述其Shader。目前的占据绝对主流的是微软的DirectX,而以前风光无限的OpenGL已经日暮西山了。
目前的显卡都基本支持DirectX与OpenGL 2个API应用程序接口,这是由显卡的自身的芯片决定的,不同的API,对于一条完整的渲染管线的定义也不是相同的。比如我上面所说的DirectX,一条完整的渲染管线=VS+PSU+TMU+ROP。
从硬件层次上来说,决定一款显卡性能的是,是其GPU核心的结构等。
而从软件层次上来说,决定一款显卡性能,制约显卡发展的,则是API(应用程序接口,就象一道房屋,必须有个门一样,显卡进行的那些渲染任务,则需要相应的接口对应,换句话来说,无论你的显卡的硬件做工那些有多强大,如果没有相应的API对应,一切还是扯谈)。无论是现在的AMD(ATI)以及NVIDIA,他们的生产的显卡都受制于微软的DirectX,所以他们无论怎么的努力,即使核心结构再怎么的变换,也许差距也不会浮现太远,2者间的斗争甚为有趣,上次我杀得你全家只剩你一个人,这次你就把我全家杀得片甲不留。开发一个图形API绝对不是一件简单的事,以微软的财力和实力,从DirectX 9到DirectX 10,也不是单单的用了1年,2年的时间。。。。
一款电脑,需要一个好的操作系统搭配。微软绝对性的垄断
一款显卡,则需要一个好的API相对应。微软绝对性的占领。
可以毫不含糊的说,现在的微软掌握了未来的显卡的发展道路,一切的东西,都是它规则中的事物。除非AMD或NVIDIA其中的一家单独的开发出了真正属于自己的API。(象老一代的3DFX的Glide ,ATI的3DCIF,这些不算)到那个时候,多年的对峙就真正的打破了。那个时候,就绝对不单单是销量上的区别,而真正是技术上,速度上,画面上的差异。自己的东西才是最好的,也只有自己才清楚自己应该改变的是什么,就目前来看AMD和NVIDIA的战争,还依旧将持续着。
本章总结:简单的介绍了下API和一些对API的个人看法
第四章:闲聊渲染管线
看了第一章,大家也应该对渲染管线的一些结构,作用那些有了比较简单的了解了吧,上面我说过,传统的象素着色管线也就是PS=PSU+TMU+ROP。
在DirectX8以前,由于显卡的3D技术还是萌芽和最初的发展中发展,对显卡的要求还没有现在那么的迫切,所以当时的一款显卡,其比例可以这样用比例式来形容。
VS(顶点单元):PSU(象素渲染单元):TMU(纹理帖图单元):ROP(光栅单元)=1:1:1:1
省去其中的汉字 也就是VS:PSU:TMU:ROP=1:1:1:1
随着各种3D技术的发展,显卡的各部分开始出现了倾斜状态。
比如说设计一个对光影特效十分高的3D模型,其1S内的速度要求假设如下:
VS:1000个 PSU:2000个 TMU:1000个 ROP:1000个
而显卡1S内的处理能力如下:
VS:1000个 PSU:1000个 TMU:1000个 ROP:1000个
从上面的数据可以简单的看出 如果对这个3D模型进行渲染生成,VS工作,能很好的应付其数据量,但是由于PSU渲染能力的不足,所以当VS完成1S工作的时候,PSU还在进行其渲染运算,既不能接受前面VS传来的数据,也不能很好的把数据传输给最后的ROP单元进行最终的输出,这样进行恶性循环,速度快慢,大家自己都可以想象下。
所以说从DirectX8开始,为了符合游戏以及一些3D软件的需求,显卡厂商开始加大PSU或TMU,例如当年羡慕死人的9800XT,它是8条象素着色管线4个顶点着色单元。其中象素着色管线其内部的PSU:TMU:ROP=1:1:1,这里可以看出VS和PS的比例为1:2 ,再到后来的GeForce 6800GT以及GeForce 6800 Ultra等,它们都是16条象素着色管线以及6个顶点着色单元,其内部的象素着色管线的比例PSU:TMU:ROP=1:1:1
也许很多人要问,象素着色管线内的PSU,TMU,ROP等的比例永远都是1:1:1吗?
可以准确告诉你 不是这样的。随着游戏以及3D技术的多元化发展,一些游戏更考重的是显卡及其象素的渲染运算能力,让画面更加的色彩鲜艳动人。而有的游戏,则考重的是对顶点单元多少,复杂纹理运算的能力。代表作分别如极品飞车10,帝国时代3,罗马全面战争等
当时的ATI和NVIDIA走上了2个截然不同的道路
ATI自Radeon X1000系列后 决定了加大显卡内部象素渲染处理的能力,也就是加大了一条象素着色管线中PSU单元,由此诞生了显卡历史上经典的3:1结构,其实那3:1结构说白了就是在ATI显卡中 一条象素着色管线 假设TMU为1的话 那么PSU则为TMU的3倍,也就是3。
以ATI DirectX 9的末代皇帝 Radeon X1950XTX为例子 它拥有了48个象素渲染单元和8个VS(顶点着色单元)以及16个ROP。其实那48个象素渲染单元就是48个PSU,这里请大家注意下 象素渲染单元和象素渲染管线绝对非一样东西 48个象素渲染单元,由于ATI采用3:1结构的原因,所以它真实的管线数目应该除以3,也就是16管,采用3:1结构的ATI显卡,它的一条渲染着色管线的性能,大致相当于NVIDIA的1.5倍。
而NVIDIA,则是单纯的加大VS顶点单元的数目和增加渲染管线的数目,其PSU和TMU的比例依旧为1:1。所以在DirectX 9时代,NVIDIA依旧采用的是比较传统的架构方式。
有人说N卡玩游戏好 A卡的画面好 其实这句话不完全的尽然相对
读了上面的文章,你应该能比较轻松的了解到DirectX 9时代ATI和NVIDIA的显卡各自的特点
ATI的显卡,由于加大PSU像素渲染单元的原因,在应付复杂的像素运算和光影效果特效的游戏时候,得心应手.像极品飞车10,命令与征服3,分裂细胞4,半条命2等游戏
而NVIDIA的显卡,采用了传统结构,相对ATI的3:1结构而言,它的VS顶点单元和纹理贴图单元都相对ATI的显卡更多,而前面我说过,VS越多,那么就意味这3D模型的生成能力和处理能力就更强,也就是一款游戏3D构架相对ATI的显卡来说更强,而TMU的作用则是对3D图形进形纹理帖图,比如说光的反射之类的。所以说NVIDIA的显卡一向都适合那些3D构架比较复杂大场景纹理帖图多多的游戏,比如帝国时代3,QUAKE4,英雄连等等。。
本章总结:简单的介绍下,传统的渲染管线比例以及一些相关的东西 第五章:新的标准,新的开始
DirectX10作为微软新一届的API,它主要有几个如下的改变
1:规定了统一渲染的渲染结构,由于传统的DX9时代,显卡的利用效率并不高 经常出现过我第四章讲的那种运算单元的闲置状况,为了改变这种状况,微软将VS,PS等都整合在一起,利用可编程整合光影处理器来完成以前VS PSU TMU ROP的工作,其过程是动态分配的,能够比较充分的利用显卡的性能,当显卡需要大量的PSU运算的时候,其他闲置的单元可以帮助一起进行PSU运算,加快PSU的运算速度,反之,当需要TMU运算的时候,其他闲置的单元也可以帮助其加快运算,所以自DirectX10出现后,传统的顶点单元,像素渲染管线等已经不再存在了,取而代之的是SP单元也就是流处理器,例如Radeon HD 2900XT就有320个Sp单元,而GeForce 8800GTX则有128个SP单元 那为什么320个SP单元的Radeon HD 2900XT反而不是128个SP单元的GeForce 8800GTX的对手呢?? 不要急 呵呵 后面会讲到 至于能讲得大家是否明白 那我只能说尽力了。。
2:加入了新的shader 单元-几何着色器(Geometry shader),其作用是对顶点模型进行批量处理,相对以前的一对一处理方式来说,效率得到了提升
3:虚拟显存技术
4:直接存取像素着色帧缓存 这里引用下微软的技术文档,分别对上面的那几点做下解释,有兴趣的可以比较深入点的看下,没兴趣直接跳过吧!!
Geometry Shader技术:
DirectX的处理模式是:1.顶点数据准备;2.Vertex Shader;3.完成Vertex Shader;4.光栅化计算;5.PixelShader;6.完成PixelShader;这是一个D3D标准的处理模式,这个过程是是顺序进行的(DirectX 10之前)。因此,只能吸收和输出一个单独顶点的旧版Vertex Shaders是不能创建或者破坏三角形的。
而新的Geometry Shader的作用就是对每个Vertex数据临近的数据进行Vertex函数处理也就是用来判定临近的,类似数据操作的点来进行计算,而这种函数处理直接关系到整个渲染模型的形状;也就是说其可以快速的把模型类似的顶点结合起来进行快速运算,虽然其操作不会象Vertex Shader那样的进行完整的操作,只是处理器单个顶点的相关函数操作,但是这种操作却可以确定整个模型的物理形状,这将大大加速处理器速度,因为其它Shader单元将不再去需要判定数据所存在的位置,而只是需要简单的为特定区域进行操作就可以了。
不仅如此,在这些数据进入渲染引擎和Pixel Shader处理前,Geometry Shader能够制造新的原始体,添加新的三角形。Geometry Shader可以把处理数据直接输入内存,免除了先经过CPU处理才进入显卡流水线的麻烦,这一改进可以让GPU直接处理细微的粒状效果,如烟雾和爆炸效果等(在这之前这一任务通常交由CPU来完成)。玩游戏时,配合纹理阵列的Geometry Shader还可以制造出通常由六个方位才能创建的立方环境映射,而现在则只需通过一个方位就可以搞定。微软认为Geometry Shader可以把点、线、三角等多边形联系起来快速处理、同时创造非常漂亮的不规则多边形,并且可以在很短时间内直接分配给其它Shader单元和显存进行数据处理,而这一切都已经无需CPU干预了。因此微软认为,搭载Geometry Shader后,可以方便的实现复杂的烟雾、爆炸、皮毛、毛发等复杂图象;甚至可以模拟一些简单的运动轨迹等;而这些操作很多时候已经不再需要CPU的干预,因此自然可以更好的发挥系统的3D效率。 虚拟显存技术:
以往,GPU采用直接内存调用法则,无论是纹理、顶点、多边形、光影,都需要占用显存空间,这些数据的运算量越大,占据的空间也越多。为了避免每次都需要重新计算,人们想到了MIP-MAP纹理映射的方法。当时,纹理贴图的尺寸很小、3D场景亦没有这么复杂,MIP-MAP能够显著地减少GPU计算量和显存的占用。然而,随着3D游戏复杂性的增加,仅靠显存已经无法存储这些数据,不得不开发出AGP总线,利用部分内存作为AGP显存,来暂时存储纹理和顶点数据、补充显存容量的不足。但别说以前的AGP 8X,即使是今天带宽更大的PCI Express 16X,亦远远不能与显存带宽相比。更为严重的问题是,为了同步处理,GPU会降低显存的工作速度,使之与显卡显存顺利传输,所以一旦动用显存,系统速度会大为下降。从这方面看,在游戏中提升纹理调节的时候,必须注意自己的显存容量,比如你要玩FarCry、战地1942、等游戏,没有256MB显存,就别想把画质设置到最高,否则会大大地影响游戏速度。
因此,微软根据虚拟内存管理方法将在DirectX 10中引入虚拟显存技术。虚拟显存将可以很好的解决以上所提到的问题,所有的纹理、着色等都分成“小块”数据即使在低速总线上也能流畅传输。例如,一个4KB大小的页面相当于一个32×32×32bit大小的纹理贴图,这样大小的纹理贴图已经可以满足需要,这样在需要纹理渲染时系统就不需要传输太多\"页面\"就可以完成相应的工作。而做到这一切几乎不会损失性能。
直接存取像素着色帧缓存:
现在的渲染模式,主要是实时渲染,每种渲染工作都是实时完成的,中间无法打断,如果我们想为图像增加数字分级、色彩校正或颜色调节等工作,只能重新进行一次计算,对整体工作造成了延时。事实上,当你读取渲染中图象的纹理数据,大多数的GPU和驱动程序都可以工作。但这属于非法操作(没有经过定义),这样的操作随时可能被中断,而开发人员通常不会使用这项功能。
DX9时代的解决方案有二,第一种是使用两个独立的纹理,一个纹理用于正常工作,另一个备用纹理应付那些附加的计算,此方案的最大问题是必须占用两倍显存空间;第二种是在Pixel Shader中通过模拟混合函数的实现以上功能。ATi已经在他们的GPU芯片中加入了类似的做法,他们通过顶点着色引擎来模拟原有的固定顶点处理函数。这样就意味着GPU设计厂商需要在着色引擎上增加额外的晶体管来实现以上的功能。
DX10则转向了新思路:使用了像素描影器直接存取帧缓存的方式来部分代替以前的实时渲染,某些情况下,我们可以随时中断渲染,加入我们想要的效果,再继续运算,不对整个渲染过程造成影响,使渲染变得更为灵活和可控。但并不意味着在DirectX10中进行实时渲染模式就毫无问题,并且厂商可能放弃了对这种技术的支持。那样这项技术很可能以一种备选方案出现,如此一来,程序员可能会忽略这项技术的存在而继续沿
第六章:G80VSR600
前面说过 像素的生成和渲染描述是由RGB三原色(红绿蓝)和透明性质的Alpha值组成的,这里大家可以称做RGBA,而对于顶点单元,也有和其相对应XYZW坐标。在传统DIRECTX10以前的结构中,顶点生成靠的是VS顶点单元,像素渲染则靠的是PS像素着色器。VS和PS都有一个4D vector 也就是4D矢量运算单元或4维运算单元 他们尊行了单指令多数据(Single Instruction Multiple Data)的GPU结构,也就是在一定的周期内,同时计算同时计算XYZW4个通道生成输出的数据,这个结构非常适合进行4D运算,但是进行1D,2D,3D运算呢? 不可避免的 闲置这个词语又出现了,比如以前的显卡,执行一个一个1D运算指令,那么闲置就达到了惊人的4分之3,即使运算一个3D指令,闲置也达到了4分之一,一款显卡那里还经得起这样的性能闲置损失?自DirectX 9 后,又出现了一个技术,名字教:Co-Issue,它的作用是对于对于RGB三原色与Alpha之间的混合运算进行动态性的分支控制,也就是说可以把一条4D指令拆解为1D+3D,2D+2D的模式,这样执行一条非4D指令效率相对以前提高了很多,但是即使这样,由于指令串行并行的关系,实际的运用效率能超国百分之70,我就偷这笑了。。。。
而DirectX10相对DirectX9而言,前面也说过,其最大的改变其实就是采用了统一的渲染着色结构(Unified Shader Architecture),使VS顶点单元,渲染管线等成为了名词。。。。
G80与R600相比,二者在DirectX10显卡上的设计方法结构又各有不同。
Radeon HD 2900XT
核心规格
制作工艺:80纳米
晶体管:7亿
材质单元: 16个
光栅化引擎:16个
Stream Processors(SP单元):320
Memory Size(显存):512MB
Memory Interface(显存位宽):512bit
GeForce 8800GTX
制作工艺:90纳米
晶体管:6.8亿
材质单元:64个
光栅化引擎 :24个
Stream Processors(SP单元):128
Memory Size(显存):768MB
Memory Interface(显存位宽):384bit
Radeon HD 2900XT 采用的依旧是传统的SIMD矢量化架构(也就是上面所说的单指令多数据结构,矢量运算vector),它具备了64个4D+1D的Vect5D流处理器,它能够灵活的分解成1D+2D+2D,1D+4D,1D+3D+1D,1D+1D+1D+1D+1D等方式,也就是在同一周期内,它能发起5个不同的MAD指令,所以说每个处理器都拥有了5个1D矢量运算单元,所以AMD-ATI声称Radeon HD 2900XT拥有320个SP处理器.。为了提高运算单元的并行效率,ATI采用了VLIW编译体系,意图通过编译器去寻找Shader指令中的并行性,以此来提高并行效率,这种做法被自身的硬件人员称作:让指令适合硬件
而GeForce 8800GTX采用了新的结构,它在GPU在底层处理单元方面采用了完全标量化(scalar)的运算单元,他一共128个SP单元,每个SP单元都拥有一个1D标量运算单元,假如说,执行一个3D指令,GeForce 8800GTX可以完全将其拆解为1D+1D+1D的方式来运算,这就是完全标量化。这种做法被自身的硬件人员称作:让硬件适合指令
从上面的规格可以看到 Radeon HD 2900XT 看到,Radeon HD 2900XT 具有320个SP单元,以及具有高达512M的显存和位宽,并且集成了高达7亿的晶体管,按理说性能应该比128个SP单元,384bit显存位宽的GeForce 8800GTX更强大才对,但是为什么性能却不及后者呢?
我总结下几个R600为什么打败仗的原因
1:材质单元单元过少,Radeon HD 2900XT只有16个个材质单元,而GeForce 8800GTX高达64个,大家都知道材质单元在显卡重的作用,它的多少直接决定了一款显卡在相同时间内能表现出的多少像素以及能够存与读取的多少材质。并且材质单元与一款显卡的渲染单元总数和3D图形加速有十分大的关系。如果给材质单元一个准确的定位的话,大家暂且可以把它当成DirectX9中的TMU(纹理单元),由于材质方面的差异巨大,所以Radeon HD 2900T一旦开高分辨率或者一开AA,那么与GeForce 8800GTX的差距就立即出来了
2:执行效率 ,上面我也简单的说过,Radeon HD 2900XT采用的是传统的SIMD矢量化架构,而GeForce 8800GTX则采用的是新的完全标量化的结构。2者相比,GeForce 8800GTX这种回归原始的做法无疑更加的具有效率性,排除一些意外的损失,GeForce 8800GTX的效率闲置几乎为百分之零,而Radeon HD 2900XT则不同,前面说过,Radeon HD 2900XT是采用了VLIW编译体系,是通过编译器去寻找Shader指令中的并行性,而VLIW的中文名字也叫做:超长指令集(Very Long Instruction Word
他的作用就是把许多条指令连在一起,组成一个非常长的指令组合,由此由多变少简化其过程,增加运算速度。 ),而Radeon HD 2900XT正是采用这样的体系和旗下的Superscalar(超标量体系结构,其功能作用是在同一周期内可以执行多条指令流。最早用于CPU上 )结构。
看了上面的,大家也都知道Radeon HD 2900XT的Vect5D结构,是4D+1D的模式运行的,一个流处理器中的5个SP单元只有4个SP单元是用于进行乘法和加法MADD数学函数运算的,其中有一个只能进行Screen,Multipy以及浮点运算,而GeForce 8800GTX则是一律通杀,回归原始,都是兄弟,每个SP单元既能进行乘法加法运算也能进行浮点运算,并且Radeon HD 2900XT因为驱动不完善的原因,如果没对游戏进行特别优化的话,那么将会导致其游戏性能十分低下,所以说从整体来评价G80和R600 无疑是前者更胜一筹,无论是效率还是驱动。从这一点看得出,AMD(ATI)要改善的太多了。。。期待新的R780吧。。。。。
选择一款显卡 可能是很多人在装机的时候最难抉择的,往往会为选择哪款型号的显卡性能更强而伤疼头脑。毕竟现在的大型3D游戏,主要是依靠显卡,显卡的性能越好就意味着在游戏中的表现和发挥就更强,谁也不想花了几千元买台电脑 结果玩一个喜欢的3D游戏卡得要死。。。谁喜欢这样?
第一章:渲染管线
决定一款显卡性能的是显卡的显示核心,也就是GPU核心。它的结构好坏,直接决定了一款显卡的性能。也就是显卡的构建,渲染,几何变换,纹理贴图等能力。
在DirectX10以前,分辨一款不同核心规格的显卡性能好坏的最简单的办法就是看哪款显卡的渲染管线更多,哪款显卡的三角形生成和处理变换能力更强。
(当然,仅单指同一厂商内的产品,像NVIDIA 7300GT和ATI 1650GT 同样是8管线 为什么后者的性能就远胜于前者呢?读了后面的文章 应该就比较轻松的能理解了)
显卡的工作原理,说白了就是由一个图形从构建到生成输出的过程,这个指令是由CPU发出,而由显卡GPU核心内的渲染管线执行的。
一条完整的渲染管线具备了独立的构建,生成,输出等功能,所以说一款显卡的几条渲染管线是互相独立但是又是并行的。
在这里介绍下 关于显卡的几个比较重要的参数
顶点着色单元 (vertex shader):
在这里大家可以简称为VS单元或直接称呼为VS.它的作用和它的名字一样,就是生成一个3D图形的顶点。
而在电脑和计算机世界中,所有的3D立体图形画面都是由无数多个三角形构成的,三角形数量越多,画面想当然的也更真实精美。(在生成顶点的过程中,会发生几何变换等现象,由于涉及到图形学,所以就不深入下去了),而VS的作用就是书写构成那个三角形的3个顶点,确定了图形所在的平面(3个顶点确定一个平面),VS越多,三角形的生成和输出处理的能力也就越强。 比如说你玩一个游戏 画面需要你在1S内处理3000个顶点着色,但是你显卡的VS处理能力不足,只能在同一时间内处理1500个VS,那么肯定,你玩游戏的速度或者画面就没有能够同时处理3000个VS的显卡那么爽了,即使你的显卡的渲染管线数目和能够处理3000个VS的显卡一样 甚至比它更多。。。
像素渲染单元(Pixel Shader Unit):
和上面一样,大家可以简称为PSU。它的作用就是完成一些基本的像素处理运算,如极品飞车10中常见的光影特效,高动态渲染等
纹理贴图单元(Texture mapping unit):
和上面一样,大家可以简称为TMU,其工作就是进行纹理处理运算。因为前面说了,VS的作用是生成顶点,也就是生成了一个3D图形的基本轮廓,但是这个轮廓却是模糊不清的,TMU的作用就是使那个轮廓逐渐清晰,使画面更加的真实。
拿画画来说,你画一个人物,首先就是画出他的轮廓,然后通过种种的修改方式,加粗细线条等等,最终成为一副完整的画一样。所以说PSU的功能就是处理纹理工作,像玩一些游戏一样,你特效开的高,你会发现太阳真实般的发光,水面是反射的,树子的叶子绿绿的随风吹,纯净和真实得吓人。其实这些就是TMU的作用
光栅化引擎(Raster Operations Processor):
和上面一样,大家可以简称为,大家可以简称为ROP.它的作用就是进行最后的输出工作,执行像素读与写的操作,以及执行抗锯齿,色彩整合等功能。
因为显示器,大家都知道,无论是CRT还是LCD,他们都有场效应晶体管(上几百万个),所以最后转化为显示屏幕中的图像都是泌出一些像素失效,象素点丢失,像素点失色等后的元素生成的,这其中也太过复杂,本人没学过相关的知识,也不能意较为准确点的语言对大家叙述。抱歉。
话归正传,大家也都知道像素点都是有坐标定位的,通过一定的算法转换,由显卡生成的点与线转换为像素点,这一过程就是光栅化的过程。(在3D世界中,只有2种存在方式,一是点,二就是连接点与点之间的线,也就是上面所说的VS,PSU,TMU生成,渲染,构建等。而象素的渲染生成,一般都是由PS的RGB的三原色和alpha通道来进行描述和工作的)
就拿上面说的抗锯齿来说下吧,玩游戏的都知道 很多人动不动就说开什么HDR+AA 其中的HDR 也就是前面PSU中的高动态光影渲染,而AA则是全屏抗锯齿。
关于抗锯齿的一些介绍,这里引用下别人的一个说法:
由于在3D图像中,受分辨的制约,物体边缘总会或多或少的呈现三角形的锯齿,而抗锯齿就是指对图像边缘进行柔化处理,使图像边缘看起来更平滑,更接近实物的物体。它是提高画质以使之柔和的一种方法。如今最新的全屏抗锯齿(FullSceneAnti-Aliasing)可以有效的消除多边形结合处(特别是较小的多边形间组合中)的错位现象,降低了图像的失真度。全景抗锯齿在进行处理时,须对图像附近的像素进行2-4次采样,以达到不同级别的抗锯齿效果。简单的说也就是将图像边缘及其两侧的像素颜色进行混合,然后用新生成的具有混合特性的点来替换原来位置上的点以达到柔化物体外形、消除锯齿的效果。
看明白的也就知道了 抗锯齿也就是一个光栅化的过程。
在传统的DirectX的API定义中,象素着色器(Pixel Shader 可以简称为PS )与顶点着色器 (也就是上面说的顶点着色单元)是完全分离的,而在新的DirectX 10中,采用了新的统一的渲染结构,效率得到更大的提升,这里不详细说明,下面会慢慢讲到。
传统的象素着色器也就是PS=PSU+TMU+ROP ,而一条完整的渲染管线就等于VS+PSU+TMU+ROP,这也就意味这一条渲染管线想完整的处理一个3D图形 必须从生成顶点(VS)开始 经过像素渲染(PSU),纹理贴图(TMU),以及光栅化(ROP)的处理最终输出。
另外注意下,从DirectX8开始,管线开始具有可编程的性质,一般的参数划分,都把单独的一个像素着色器做为一个单独的渲染管线,与顶点着色器也就是VS,是互相分离的。比如说拿我喜欢的Radeon X1650GT来说,它是8管8顶点,也就是8个象素着色器管线和8个顶点着色器管线。
本章总结:初浅的让大家认识了什么是显卡的渲染管线,以及其简单的构造应用等
第二章:不可忽视的制作工艺
在吧里呆得比较久的,都知道本人是一个不折不扣的A饭(AMD-ATI FANS)。所以我帮别人配机的时候 一般都是配AMD的CPU和ATI的显卡(注:现在的ATI已经被AMD以43亿美元现金+5800万股票约合54亿美元的价格收购了),与CPU一样,显卡的制作工艺也是以纳米计算,其发展过程被称做立方摩尔定律,更新换代的速度极快,基本6个月就有一次新的产品出炉
(小知识:摩尔定律,戈顿•摩尔,INTEL的创始人,曾预测:半导体集成电路的密度或容量每18个月翻一番,如今随着纳米工艺技术的发展,摩尔定律也肯定会遇到量子效应,最后失去它的效果)
制造工艺的提高,也就意味这晶体管核心面积,发热的减少,也意味这可以容纳更多晶体管,性能也理所当然的得到了提升。像现在的8800GTX和2900XT 他们的晶体管借用先进的80NM制作工艺数目达到了惊人的6.8亿和7亿。而像几年前杀便天下无敌手的9800PRO也不过集成了1.15亿晶体管而已 但是它的制作工艺仅为150纳米而已。
但是这里你可不要认为,制作工艺越高越好的显卡,性能就越好,重要的是显卡的核心结构好,能发挥出制作工艺提升所带来的效果。就像1年前 AMD的90NM的CPU把INTEL的65NM CPU打得满地找牙,1年后,扣肉打得AMD不得不多次使用降价政策一样。
随着显卡的制作工艺 频率的高速提升 目前的8800GTX 2900XT Geforce 8800 Ultra 等已成为不折不扣的电老虎。。。。。
本章总结:简单的认识下了制作工艺对CPU以及显卡的一些影响
第三章:闲聊API
我们都知道,无论是OpenGL还是DirectX以及其他的3D图形程序,他们都会自己定义一个脚本文件,通过调用来描述其Shader。目前的占据绝对主流的是微软的DirectX,而以前风光无限的OpenGL已经日暮西山了。
目前的显卡都基本支持DirectX与OpenGL 2个API应用程序接口,这是由显卡的自身的芯片决定的,不同的API,对于一条完整的渲染管线的定义也不是相同的。比如我上面所说的DirectX,一条完整的渲染管线=VS+PSU+TMU+ROP。
从硬件层次上来说,决定一款显卡性能的是,是其GPU核心的结构等。
而从软件层次上来说,决定一款显卡性能,制约显卡发展的,则是API(应用程序接口,就象一道房屋,必须有个门一样,显卡进行的那些渲染任务,则需要相应的接口对应,换句话来说,无论你的显卡的硬件做工那些有多强大,如果没有相应的API对应,一切还是扯谈)。无论是现在的AMD(ATI)以及NVIDIA,他们的生产的显卡都受制于微软的DirectX,所以他们无论怎么的努力,即使核心结构再怎么的变换,也许差距也不会浮现太远,2者间的斗争甚为有趣,上次我杀得你全家只剩你一个人,这次你就把我全家杀得片甲不留。开发一个图形API绝对不是一件简单的事,以微软的财力和实力,从DirectX 9到DirectX 10,也不是单单的用了1年,2年的时间。。。。
一款电脑,需要一个好的操作系统搭配。微软绝对性的垄断
一款显卡,则需要一个好的API相对应。微软绝对性的占领。
可以毫不含糊的说,现在的微软掌握了未来的显卡的发展道路,一切的东西,都是它规则中的事物。除非AMD或NVIDIA其中的一家单独的开发出了真正属于自己的API。(象老一代的3DFX的Glide ,ATI的3DCIF,这些不算)到那个时候,多年的对峙就真正的打破了。那个时候,就绝对不单单是销量上的区别,而真正是技术上,速度上,画面上的差异。自己的东西才是最好的,也只有自己才清楚自己应该改变的是什么,就目前来看AMD和NVIDIA的战争,还依旧将持续着。
本章总结:简单的介绍了下API和一些对API的个人看法
第四章:闲聊渲染管线
看了第一章,大家也应该对渲染管线的一些结构,作用那些有了比较简单的了解了吧,上面我说过,传统的象素着色管线也就是PS=PSU+TMU+ROP。
在DirectX8以前,由于显卡的3D技术还是萌芽和最初的发展中发展,对显卡的要求还没有现在那么的迫切,所以当时的一款显卡,其比例可以这样用比例式来形容。
VS(顶点单元):PSU(象素渲染单元):TMU(纹理帖图单元):ROP(光栅单元)=1:1:1:1
省去其中的汉字 也就是VS:PSU:TMU:ROP=1:1:1:1
随着各种3D技术的发展,显卡的各部分开始出现了倾斜状态。
比如说设计一个对光影特效十分高的3D模型,其1S内的速度要求假设如下:
VS:1000个 PSU:2000个 TMU:1000个 ROP:1000个
而显卡1S内的处理能力如下:
VS:1000个 PSU:1000个 TMU:1000个 ROP:1000个
从上面的数据可以简单的看出 如果对这个3D模型进行渲染生成,VS工作,能很好的应付其数据量,但是由于PSU渲染能力的不足,所以当VS完成1S工作的时候,PSU还在进行其渲染运算,既不能接受前面VS传来的数据,也不能很好的把数据传输给最后的ROP单元进行最终的输出,这样进行恶性循环,速度快慢,大家自己都可以想象下。
所以说从DirectX8开始,为了符合游戏以及一些3D软件的需求,显卡厂商开始加大PSU或TMU,例如当年羡慕死人的9800XT,它是8条象素着色管线4个顶点着色单元。其中象素着色管线其内部的PSU:TMU:ROP=1:1:1,这里可以看出VS和PS的比例为1:2 ,再到后来的GeForce 6800GT以及GeForce 6800 Ultra等,它们都是16条象素着色管线以及6个顶点着色单元,其内部的象素着色管线的比例PSU:TMU:ROP=1:1:1
也许很多人要问,象素着色管线内的PSU,TMU,ROP等的比例永远都是1:1:1吗?
可以准确告诉你 不是这样的。随着游戏以及3D技术的多元化发展,一些游戏更考重的是显卡及其象素的渲染运算能力,让画面更加的色彩鲜艳动人。而有的游戏,则考重的是对顶点单元多少,复杂纹理运算的能力。代表作分别如极品飞车10,帝国时代3,罗马全面战争等
当时的ATI和NVIDIA走上了2个截然不同的道路
ATI自Radeon X1000系列后 决定了加大显卡内部象素渲染处理的能力,也就是加大了一条象素着色管线中PSU单元,由此诞生了显卡历史上经典的3:1结构,其实那3:1结构说白了就是在ATI显卡中 一条象素着色管线 假设TMU为1的话 那么PSU则为TMU的3倍,也就是3。
以ATI DirectX 9的末代皇帝 Radeon X1950XTX为例子 它拥有了48个象素渲染单元和8个VS(顶点着色单元)以及16个ROP。其实那48个象素渲染单元就是48个PSU,这里请大家注意下 象素渲染单元和象素渲染管线绝对非一样东西 48个象素渲染单元,由于ATI采用3:1结构的原因,所以它真实的管线数目应该除以3,也就是16管,采用3:1结构的ATI显卡,它的一条渲染着色管线的性能,大致相当于NVIDIA的1.5倍。
而NVIDIA,则是单纯的加大VS顶点单元的数目和增加渲染管线的数目,其PSU和TMU的比例依旧为1:1。所以在DirectX 9时代,NVIDIA依旧采用的是比较传统的架构方式。
有人说N卡玩游戏好 A卡的画面好 其实这句话不完全的尽然相对
读了上面的文章,你应该能比较轻松的了解到DirectX 9时代ATI和NVIDIA的显卡各自的特点
ATI的显卡,由于加大PSU像素渲染单元的原因,在应付复杂的像素运算和光影效果特效的游戏时候,得心应手.像极品飞车10,命令与征服3,分裂细胞4,半条命2等游戏
而NVIDIA的显卡,采用了传统结构,相对ATI的3:1结构而言,它的VS顶点单元和纹理贴图单元都相对ATI的显卡更多,而前面我说过,VS越多,那么就意味这3D模型的生成能力和处理能力就更强,也就是一款游戏3D构架相对ATI的显卡来说更强,而TMU的作用则是对3D图形进形纹理帖图,比如说光的反射之类的。所以说NVIDIA的显卡一向都适合那些3D构架比较复杂大场景纹理帖图多多的游戏,比如帝国时代3,QUAKE4,英雄连等等。。
本章总结:简单的介绍下,传统的渲染管线比例以及一些相关的东西 第五章:新的标准,新的开始
DirectX10作为微软新一届的API,它主要有几个如下的改变
1:规定了统一渲染的渲染结构,由于传统的DX9时代,显卡的利用效率并不高 经常出现过我第四章讲的那种运算单元的闲置状况,为了改变这种状况,微软将VS,PS等都整合在一起,利用可编程整合光影处理器来完成以前VS PSU TMU ROP的工作,其过程是动态分配的,能够比较充分的利用显卡的性能,当显卡需要大量的PSU运算的时候,其他闲置的单元可以帮助一起进行PSU运算,加快PSU的运算速度,反之,当需要TMU运算的时候,其他闲置的单元也可以帮助其加快运算,所以自DirectX10出现后,传统的顶点单元,像素渲染管线等已经不再存在了,取而代之的是SP单元也就是流处理器,例如Radeon HD 2900XT就有320个Sp单元,而GeForce 8800GTX则有128个SP单元 那为什么320个SP单元的Radeon HD 2900XT反而不是128个SP单元的GeForce 8800GTX的对手呢?? 不要急 呵呵 后面会讲到 至于能讲得大家是否明白 那我只能说尽力了。。
2:加入了新的shader 单元-几何着色器(Geometry shader),其作用是对顶点模型进行批量处理,相对以前的一对一处理方式来说,效率得到了提升
3:虚拟显存技术
4:直接存取像素着色帧缓存 这里引用下微软的技术文档,分别对上面的那几点做下解释,有兴趣的可以比较深入点的看下,没兴趣直接跳过吧!!
Geometry Shader技术:
DirectX的处理模式是:1.顶点数据准备;2.Vertex Shader;3.完成Vertex Shader;4.光栅化计算;5.PixelShader;6.完成PixelShader;这是一个D3D标准的处理模式,这个过程是是顺序进行的(DirectX 10之前)。因此,只能吸收和输出一个单独顶点的旧版Vertex Shaders是不能创建或者破坏三角形的。
而新的Geometry Shader的作用就是对每个Vertex数据临近的数据进行Vertex函数处理也就是用来判定临近的,类似数据操作的点来进行计算,而这种函数处理直接关系到整个渲染模型的形状;也就是说其可以快速的把模型类似的顶点结合起来进行快速运算,虽然其操作不会象Vertex Shader那样的进行完整的操作,只是处理器单个顶点的相关函数操作,但是这种操作却可以确定整个模型的物理形状,这将大大加速处理器速度,因为其它Shader单元将不再去需要判定数据所存在的位置,而只是需要简单的为特定区域进行操作就可以了。
不仅如此,在这些数据进入渲染引擎和Pixel Shader处理前,Geometry Shader能够制造新的原始体,添加新的三角形。Geometry Shader可以把处理数据直接输入内存,免除了先经过CPU处理才进入显卡流水线的麻烦,这一改进可以让GPU直接处理细微的粒状效果,如烟雾和爆炸效果等(在这之前这一任务通常交由CPU来完成)。玩游戏时,配合纹理阵列的Geometry Shader还可以制造出通常由六个方位才能创建的立方环境映射,而现在则只需通过一个方位就可以搞定。微软认为Geometry Shader可以把点、线、三角等多边形联系起来快速处理、同时创造非常漂亮的不规则多边形,并且可以在很短时间内直接分配给其它Shader单元和显存进行数据处理,而这一切都已经无需CPU干预了。因此微软认为,搭载Geometry Shader后,可以方便的实现复杂的烟雾、爆炸、皮毛、毛发等复杂图象;甚至可以模拟一些简单的运动轨迹等;而这些操作很多时候已经不再需要CPU的干预,因此自然可以更好的发挥系统的3D效率。 虚拟显存技术:
以往,GPU采用直接内存调用法则,无论是纹理、顶点、多边形、光影,都需要占用显存空间,这些数据的运算量越大,占据的空间也越多。为了避免每次都需要重新计算,人们想到了MIP-MAP纹理映射的方法。当时,纹理贴图的尺寸很小、3D场景亦没有这么复杂,MIP-MAP能够显著地减少GPU计算量和显存的占用。然而,随着3D游戏复杂性的增加,仅靠显存已经无法存储这些数据,不得不开发出AGP总线,利用部分内存作为AGP显存,来暂时存储纹理和顶点数据、补充显存容量的不足。但别说以前的AGP 8X,即使是今天带宽更大的PCI Express 16X,亦远远不能与显存带宽相比。更为严重的问题是,为了同步处理,GPU会降低显存的工作速度,使之与显卡显存顺利传输,所以一旦动用显存,系统速度会大为下降。从这方面看,在游戏中提升纹理调节的时候,必须注意自己的显存容量,比如你要玩FarCry、战地1942、等游戏,没有256MB显存,就别想把画质设置到最高,否则会大大地影响游戏速度。
因此,微软根据虚拟内存管理方法将在DirectX 10中引入虚拟显存技术。虚拟显存将可以很好的解决以上所提到的问题,所有的纹理、着色等都分成“小块”数据即使在低速总线上也能流畅传输。例如,一个4KB大小的页面相当于一个32×32×32bit大小的纹理贴图,这样大小的纹理贴图已经可以满足需要,这样在需要纹理渲染时系统就不需要传输太多\"页面\"就可以完成相应的工作。而做到这一切几乎不会损失性能。
直接存取像素着色帧缓存:
现在的渲染模式,主要是实时渲染,每种渲染工作都是实时完成的,中间无法打断,如果我们想为图像增加数字分级、色彩校正或颜色调节等工作,只能重新进行一次计算,对整体工作造成了延时。事实上,当你读取渲染中图象的纹理数据,大多数的GPU和驱动程序都可以工作。但这属于非法操作(没有经过定义),这样的操作随时可能被中断,而开发人员通常不会使用这项功能。
DX9时代的解决方案有二,第一种是使用两个独立的纹理,一个纹理用于正常工作,另一个备用纹理应付那些附加的计算,此方案的最大问题是必须占用两倍显存空间;第二种是在Pixel Shader中通过模拟混合函数的实现以上功能。ATi已经在他们的GPU芯片中加入了类似的做法,他们通过顶点着色引擎来模拟原有的固定顶点处理函数。这样就意味着GPU设计厂商需要在着色引擎上增加额外的晶体管来实现以上的功能。
DX10则转向了新思路:使用了像素描影器直接存取帧缓存的方式来部分代替以前的实时渲染,某些情况下,我们可以随时中断渲染,加入我们想要的效果,再继续运算,不对整个渲染过程造成影响,使渲染变得更为灵活和可控。但并不意味着在DirectX10中进行实时渲染模式就毫无问题,并且厂商可能放弃了对这种技术的支持。那样这项技术很可能以一种备选方案出现,如此一来,程序员可能会忽略这项技术的存在而继续沿
第六章:G80VSR600
前面说过 像素的生成和渲染描述是由RGB三原色(红绿蓝)和透明性质的Alpha值组成的,这里大家可以称做RGBA,而对于顶点单元,也有和其相对应XYZW坐标。在传统DIRECTX10以前的结构中,顶点生成靠的是VS顶点单元,像素渲染则靠的是PS像素着色器。VS和PS都有一个4D vector 也就是4D矢量运算单元或4维运算单元 他们尊行了单指令多数据(Single Instruction Multiple Data)的GPU结构,也就是在一定的周期内,同时计算同时计算XYZW4个通道生成输出的数据,这个结构非常适合进行4D运算,但是进行1D,2D,3D运算呢? 不可避免的 闲置这个词语又出现了,比如以前的显卡,执行一个一个1D运算指令,那么闲置就达到了惊人的4分之3,即使运算一个3D指令,闲置也达到了4分之一,一款显卡那里还经得起这样的性能闲置损失?自DirectX 9 后,又出现了一个技术,名字教:Co-Issue,它的作用是对于对于RGB三原色与Alpha之间的混合运算进行动态性的分支控制,也就是说可以把一条4D指令拆解为1D+3D,2D+2D的模式,这样执行一条非4D指令效率相对以前提高了很多,但是即使这样,由于指令串行并行的关系,实际的运用效率能超国百分之70,我就偷这笑了。。。。
而DirectX10相对DirectX9而言,前面也说过,其最大的改变其实就是采用了统一的渲染着色结构(Unified Shader Architecture),使VS顶点单元,渲染管线等成为了名词。。。。
G80与R600相比,二者在DirectX10显卡上的设计方法结构又各有不同。
Radeon HD 2900XT
核心规格
制作工艺:80纳米
晶体管:7亿
材质单元: 16个
光栅化引擎:16个
Stream Processors(SP单元):320
Memory Size(显存):512MB
Memory Interface(显存位宽):512bit
GeForce 8800GTX
制作工艺:90纳米
晶体管:6.8亿
材质单元:64个
光栅化引擎 :24个
Stream Processors(SP单元):128
Memory Size(显存):768MB
Memory Interface(显存位宽):384bit
Radeon HD 2900XT 采用的依旧是传统的SIMD矢量化架构(也就是上面所说的单指令多数据结构,矢量运算vector),它具备了64个4D+1D的Vect5D流处理器,它能够灵活的分解成1D+2D+2D,1D+4D,1D+3D+1D,1D+1D+1D+1D+1D等方式,也就是在同一周期内,它能发起5个不同的MAD指令,所以说每个处理器都拥有了5个1D矢量运算单元,所以AMD-ATI声称Radeon HD 2900XT拥有320个SP处理器.。为了提高运算单元的并行效率,ATI采用了VLIW编译体系,意图通过编译器去寻找Shader指令中的并行性,以此来提高并行效率,这种做法被自身的硬件人员称作:让指令适合硬件
而GeForce 8800GTX采用了新的结构,它在GPU在底层处理单元方面采用了完全标量化(scalar)的运算单元,他一共128个SP单元,每个SP单元都拥有一个1D标量运算单元,假如说,执行一个3D指令,GeForce 8800GTX可以完全将其拆解为1D+1D+1D的方式来运算,这就是完全标量化。这种做法被自身的硬件人员称作:让硬件适合指令
从上面的规格可以看到 Radeon HD 2900XT 看到,Radeon HD 2900XT 具有320个SP单元,以及具有高达512M的显存和位宽,并且集成了高达7亿的晶体管,按理说性能应该比128个SP单元,384bit显存位宽的GeForce 8800GTX更强大才对,但是为什么性能却不及后者呢?
我总结下几个R600为什么打败仗的原因
1:材质单元单元过少,Radeon HD 2900XT只有16个个材质单元,而GeForce 8800GTX高达64个,大家都知道材质单元在显卡重的作用,它的多少直接决定了一款显卡在相同时间内能表现出的多少像素以及能够存与读取的多少材质。并且材质单元与一款显卡的渲染单元总数和3D图形加速有十分大的关系。如果给材质单元一个准确的定位的话,大家暂且可以把它当成DirectX9中的TMU(纹理单元),由于材质方面的差异巨大,所以Radeon HD 2900T一旦开高分辨率或者一开AA,那么与GeForce 8800GTX的差距就立即出来了
2:执行效率 ,上面我也简单的说过,Radeon HD 2900XT采用的是传统的SIMD矢量化架构,而GeForce 8800GTX则采用的是新的完全标量化的结构。2者相比,GeForce 8800GTX这种回归原始的做法无疑更加的具有效率性,排除一些意外的损失,GeForce 8800GTX的效率闲置几乎为百分之零,而Radeon HD 2900XT则不同,前面说过,Radeon HD 2900XT是采用了VLIW编译体系,是通过编译器去寻找Shader指令中的并行性,而VLIW的中文名字也叫做:超长指令集(Very Long Instruction Word
他的作用就是把许多条指令连在一起,组成一个非常长的指令组合,由此由多变少简化其过程,增加运算速度。 ),而Radeon HD 2900XT正是采用这样的体系和旗下的Superscalar(超标量体系结构,其功能作用是在同一周期内可以执行多条指令流。最早用于CPU上 )结构。
看了上面的,大家也都知道Radeon HD 2900XT的Vect5D结构,是4D+1D的模式运行的,一个流处理器中的5个SP单元只有4个SP单元是用于进行乘法和加法MADD数学函数运算的,其中有一个只能进行Screen,Multipy以及浮点运算,而GeForce 8800GTX则是一律通杀,回归原始,都是兄弟,每个SP单元既能进行乘法加法运算也能进行浮点运算,并且Radeon HD 2900XT因为驱动不完善的原因,如果没对游戏进行特别优化的话,那么将会导致其游戏性能十分低下,所以说从整体来评价G80和R600 无疑是前者更胜一筹,无论是效率还是驱动。从这一点看得出,AMD(ATI)要改善的太多了。。。期待新的R780吧。。。。。
相关阅读 更多 +