显卡 频道

千元霸主 ATI 1950GT全国首测

  实际上ATI这种强化ALU算术运算器的设计理念也符合DirectX本身的发展趋势。Pixel Shader流水线的功能就是在几何处理和转换完成后为每个象素“画”上它的色彩。基本操作可以分为三部分:一个就是按照贴图坐标去纹理贴图里读到颜色数据(Texture Fetch),这一步属于TMU的工作。第二个是把读到的数据和前面算好的光照强度混合进行一系列的运算,得到这个像素的颜色(Texture Blending),这个步骤主要在ALU里运算完成。最后就是把它和屏幕上当前像素的颜色进行一定的处理,然后画到这个像素上(Alpha Blending)。简单的而言,Pixel Shader就是根据需要对贴图进行处理,或者就是说通过一系列的运算来改变贴图的形状,色彩等参数。

  我们上面所说的ALU算术指令和TMU纹理贴图指令都属于Pixel Shader流水线的操作,在固定流水线时代它们分别是片段着色过程的第一和第二步。但在DX9的高度可程式化Shader中,这两个步骤现在已经没有先后之分了。它们之间的区别在于,纹理拾取(Texture Fetch)本身涉及到对外部存储器(显存)的读写,性能容易受到外部资源影响,在GPU并行能力和工作频率都迅猛发展的今天,显存将会成为一个严重的瓶径。例如,一个工作频率为500MHz的GPU,它内部的单个时钟周期长度在2ns以下,但即使是GDDR3 1000MHz的显存,延迟也高达几十ns,这意味着从GPU向DRAM发出存储指令开始到第一个数据包送出之间会有几十个ns的时间差,换算成GPU内部的时钟周期,就是几十上百个,如果不是因为多执行诸架构能隐藏一定的延迟,这种状况将会给GPU带来灾难性的停顿。而大部分常用的ALU算术指令如mul,add,dp3等都能在单个ALU周期内完成,是纯计算性的值,不涉及DRAM存储,自然也就节约了宝贵的传输带宽,并且延迟可以忽略不记。所以,最近的游戏,都把提高画面表现的重点放到了Pixel Shader渲染的ALU运算得到象素颜色的部分。我们只要改变相应的各种ALU的算术指令参数来配合纹理贴图,就能做出千变万化的效果。

  为了对比ATI的3:1架构,我们先来看看过去的显卡对流水线定义:传统流水线定义是“Pixel Shader(像素着色器)+TMU(纹理单元)+ROP(光栅化引擎,ATI将其称为Render Back End)。从功能上简单的说,Pixel Shader完成像素处理,TMU负责纹理渲染,而ROP则负责像素的最终输出,因此,一条完整的传统流水线意味着在一个时钟周期完成1个Pixel Shader运算,输出1个纹理和1个像素。以GeForce 6600LE为例,一块传统的4流水线构架显卡(4X1)在一个时钟周期内完成4个Pixel Shader运算,输出4个纹理和4个像素。流水线=Pixel Shader+TMU+ROP,这一概念一直得到GPU厂商的拥护。然而随着技术的发展,3D游戏开始有明显的取向性,此时这一平衡也自然被打破。

  R580/RV530/RV560/RV570正是顺应了这一需求的设计,它们在保持TMU(Texture Mapping Unit,纹理映射单元)数量不变的情况下,将Pixel Shader的另一个部分--ALU算术运算器增加了三倍,构成ALU:TMU=3:1的架构,顺应了近期主流游戏大作的需求。以RV530为例,它拥有4条真正意义上的流水线,只不过ALU、TMU以及ROP形成3:1:1的关系。具体而言,X1600有12个ALU,而TMU和ROP却只有4个,因此这款GPU核心在一个周期内可以进行12次Arithmetic运算,输出4个纹理和4个像素。也就是说,X1600在Pixel Shader运算上等同于12管线的显卡,但在纹理填充率和像素填充率上等同于4流水线显卡。正是因为这个道理,很多厂商在宣传RadeonX1650XT/RadeonX1950XT等显卡的时候称其为24管线/48管线显卡。

0
相关文章