什么是流处理器
流处理器这个名词第一次出现在人们的视线中还要上溯到2006年12月4日, NVIDIA在当天正式对外发布新一代DX10显卡8800GTX,在技术参数表里面,看不到惯常使用的两个参数:Pixel Pipelines(像素渲染管线)和Vertex Pipelines(顶点着色单元),取而代之的是一个新名词:streaming processor,中文翻译过来就是流处理器(也有叫SP单元的,一个意思)它的作用就是处理由CPU传输过来的数据,处理后转化为显示器可以辨识的数字信号。
流处理器是直接将多媒体的图形数据流映射到流处理器上进行处理的,有可编程和不可编程两种。1995年公布的名为Cheops中的流处理器,是针对某一个特定的视频处理功能而设计的一种不可编程的流处理器。但为了得到一定的灵活性,系统中也包含一个通用的可编程处理器。
从1996年到2001年,MIT和Standford针对图像处理的应用,,研制了名为Imagine 的可编程流处理器。Imagine流处理器没有采用cache,而是采用一个流寄存器文件SRF(Stream Register File),作为流(主)存储器与处理器寄存器之间的缓冲存储器,来解决存储器带宽问题的。流存储器与SRF之间的带宽是2GB/s,SRF与处理器寄存器之间的带宽是32GB/s,ALU簇(ALU Cluster)内寄存器与ALU之间的带宽是544GB/s,三种带宽的比例关系为1:16:272。
抗锯齿是3D特效中最重要的效果之一,它经过多年的发展,变为一个庞大的家庭,有必要独立开来说明一下。
作用:去除物体边缘的锯齿现象,广州话称之为“狗牙”,大家可以想像一下狗牙是如何的凹凸不平。
过程:我们在真实世界看到的物体,由无限的像素组成,不会看到有锯齿现象,而显示器没有足够多的点来表现图形,点与点之间的不连续就造成了锯齿。
抗锯齿通过采样算法,在像素与像素之间进行平均值计算,增加像素的数目,达到像素之间平滑过渡的效果。去掉锯齿后,还可以模拟高分辨率游戏的精致画面。它是目前最热门的特效,主要用于1600 * 1200以下的低分辨率。理论上来说,在17寸显示器上,1600 * 1200分辨率已经很难看到锯齿,无须使用抗锯齿算法。如此类推,在19寸显示器上,必须使用1920 x 1080分辨率,总之,越大的显示器,分辨率越高,才越不会看到抗锯齿1920 x 1200。由于RAMDAC(Random Access Memory Digital to Analog Converter,随机存储器数/模转换器)频率和显示器制造技术的限制,我们不可能永无止境地提升显示器和显卡的分辨率,抗锯齿技术变得很有必要了。
超级采样抗锯齿
最早期的全屏抗锯齿,方法简单直接。首先,图像创建到一个分离的缓冲区,缓冲区图像分辨率高于屏幕分辨率,假设是2*1(或2x),那么缓冲区场景的水平尺寸比屏幕分辨率高两倍,若是2*2(或4x)抗锯齿,缓冲区图像的水平和垂直均比显示图像大两倍。像素计算加倍之后,选取2个或4个邻近像素,此过程称为采样。把这些采样混合起来后,生成的最终像素,拥有邻近像素的特征,那么像素与像素之间的过渡色彩,就变得更为近似,整个图像的色彩过渡趋于平滑。再把最终像素输出到帧缓冲,作为一幅图像存储起来,然后发到显示器,显示出一帧画面。每帧都进行抗锯齿处理,游戏过程中的所有画面都变得带有抗锯齿效果了。
流处理器起什么样的作用呢?通过上文可以了解到:是用来取代像素渲染管线和顶点着色单元的,接下来就简单的先介绍一下这二者在显卡中的作用。
顶点着色单元和像素渲染管线
顶点着色单元是显示芯片内部用来处理顶点(Vertex)信息并完成着色工作的并行处理单元。顶点着色单元决定了显卡的三角形处理和生成能力,所以也是衡量显示芯片性能特别是3D性能的重要参数。
渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的的并行处理单元。在某种程度上可以把渲染管线比喻为工厂里面常见的各种生产流水线,工厂里的生产流水线是为了提高产品的生产能力和效率,而渲染管线则是提高显卡的工作能力和效率。
以上是基本的解释,不过各位看官应该是看得一头雾水了吧。现在举例说明:打个比方,你是工厂的老板,要生产一批产品,首先当然要设计人员去设计一下这批产品的外观:长的、方的、圆的、扁的,还要确定颜色:红的、绿的、蓝的、紫的。这些规格参数出来以后,再让生产车间去造型上色,到最后生产出成品。
显卡的工作流程有点和这个类似,顶点着色设计出形状(建模)和确定颜色,再由渲染管线去进行上色和进行纹理贴图,最后制作出美丽的画面。
关于“顶点着色单元决定了显卡的三角形处理和生成能力,所以也是衡量显示芯片性能特别是3D性能的重要参数”这一句补充说明一下,为什么是三角形呢?大家可以设想下,我们要画个图,一个点就是一个点,两个点能确定一条直线,要是画出图形,至少需要三个点,三个点可以确定一个三角形,所以在图形处理中,把三角形作为最基本的图形处理单元。再到立体图形,空间内四个点就可以组成一个三角锥体,由四个三角形构成,而要得到一个正方体,需要8个顶点。各位看官可能想到一个特殊的图形“圆”,看起来它是一个点都没有,请注意,由于圆是由闭合曲线组成的图形,圆上任一点都可以做为它的顶点,所以它有无数个顶点,它是无穷多个点周而复始组成的。所以圆柱、圆锥、球形等立体图形都是由无数个顶点组合而成。
所以说,顶点着色单元是把三角形作为基本的单元来进行图形处理的
何为统一渲染架构
所谓统一渲染架构就是指,在新一代Geforce8系列显卡中,不再是像素渲染管线和顶点着色单元各司其职,老死不相往来。它们已经合二为一,同时具备两种本领,既可以进行像素渲染,又可以进行顶点着色,具备了新功能的这种处理单元就不能再叫旧名字啦,于是就有了新的命名:流处理器。这种统一渲染架构的优势在于,它可以根据需要调整负责像素渲染和顶点着色的流处理器数量
采用统一渲染架构有一个显而易见的好处:统一架构中的流处理单元都是用同一个频率在工作,这使得流处理器可能成为继显示核心频率、显存频率之后,第三个可以用来超频提升显卡性能的参数,而事实也证明如此。微星最近推出的8600GT暴雪骑士2-OC版显卡就公然宣布是超流处理器(shader)频率的显卡,shader频率从原先的1188提升至1450,3Dmark分数因此提高了20%。顺便说一下,核心频率和shader频率默认比率为1:2.2,各位看官可以简单计算一下自己显卡的核心shader频率。
