|
| 第13页:GeForce 8的标量化渲染单元(1) |
G80与之前的GPU在底层处理单元上最大的区别就是完全标量化的运算单元,这是G80最引以为傲的革新,但也是争论最大的改进。小熊在线www.beareyes.com.cn
所谓标量化(scalar)运算单元,是相对于之前GPU的矢量化(vector)运算单元而言的。我们知道,在3D图形处理中,最常见的像素都是由RGB三种颜色构成,加上它们共有的信息说明(Alpha),就一共是4个通道。Vertex数据也一般是由x,y,z,w四个坐标构成,这样一共也是4个通道。对3D图形进行渲染,其实就是改变RGBA四个通道或者x,y,z,w四个坐标的数值。所以,为了方便,GPU的基本渲染单元从一开始就被设计为能同时完成一个象素渲染或者几何转换。数据的基本单元是scalar(标量),就是指一个单独的值,GPU的ALU里进行的一次这种变量操作,被称做1D scalar操作。由于大多数GPU的ALU被设计成在一个时钟周期能执行4次这样的并行的1D运算的能力。所以它们的ALU执行能力被称做4D vector,也就是矢量操作。小熊在线www.beareyes.com.cn
顶点操作中涉及的3D+1D向量操作

一个vector(矢量)就是n个scalar(标量),对于图形处理来说一般来说n=4。所以,通常GPU的ALU指令发射端只有一个,但却可以同时计算4个通道的数据,这就是SIMD(单指令多数据流)的意思了。
对于图形渲染来说,这种SIMD的设计真是再好不过了,因为VS和PS部分进行的大部分运算都是4D(3D+1D) vector,它只要用一个指令端口,就能单周期完成4倍的运算量。举个例子,下面这一段代码:
CODE:
add r0.xyz,r0,r1
rsq r2.w,r3.w
3D+1D ALU要保证得到充沛资源需要开发人员仔细优化

对于支持3D+1D issue的GPU来说,只要一个周期就能完成,省时又省力。所以自打GPU诞生开始,基本的运算单元就一直是这种vector SIMD设计。R600也不例外,R600一共拥有64条这样执行能力为4D的通用着色管线,因为它们一个周期都能吞吐4倍的数据,因此属于SIMD架构的流水线。小熊在线www.beareyes.com.cn
但是NV决心在G80上打破这一传统。G80将最基本运算单元统统改成了scalar,也就是标量ALU。这样对于打好包的4D vector操作,就需要多个周期,或者将它们拆分后用更多的运算单元才能完成。有什么样的东西值得NV这样冒险呢?ALU具备在一个周期内执行4D(3D+1D)操作的能力是不错,但是具备这种能力,并不代表它们就真的能完美的完成与它们能力对等的工作量。原来,NV认为,现在以及今后的游戏的Shader中所包含的指令,会越来越复杂化。这些五花八门长度并不一的指令会给ALU造成很大的困惑。小熊在线www.beareyes.com.cn
G8X的单个流处理器结构图

2007年04月18日 于上海
版权作品 未经许可 请勿转载
|