王者之间的较量,R300 VS NV30深度
体系结构分析:
由于缺乏NV30 VS体系结构的详细资料,所以这里笔者仅仅能够针对R300 VS体系结构优缺点进行分析,并根据一些蛛丝马迹大胆对NV30 VS的体系结构进行一定的推断,免得捧场的读者大人失望。
从ATi公布的R300的顶点处理引擎(Vertex Processing Engine,简称VPE)结构图,我们可以一眼看出,R300的VPE竟然提供了4条并行的2.0版顶点着色器。ATi声称与强大的三角形建立引擎结合起来,R300的VPE是业界第一个能够在一个时钟周期处理一个顶点和三角形的几何引擎。呵呵,小学生都会算,一个三角形三个顶点,而R300有4个并行的VS,所以理论上每个时钟周期能够处理4个顶点数据,不就是一个顶点+一个三角形嘛!
不过有意思的地方是,R300在每条VS同时并列使用了一个四维向量处理器(4-D Vector Processor,简称4-VecP)和一个标量处理器(Scalar Processor,简称SP)。什么?四维哪里来的?简单点儿吧,128bit/32bit = 4 FPs。还不懂,那就算了,更详细的解释实在不是短短的几页纸能够完成的,就先这么理解吧。ATi认为,顶点数据流通常都是标量数据和向量数据的混合体,例如,坐标数据-向量,颜色数据-标量(采用整数颜色精度时)等等,并列4-VecP和SP的结构能够实现最高的效率,听起来有一定道理。
R300的VPE和VS体系结构图
为了能够更清楚的表明R300 VS这种结构的优劣,我们使用3DLabs最近刚刚推出的P10数据处理器(VPU)的VS结构来进行对比(Sorry,现在没有NV30 VS的详细信息,nVIDIA工程师实在金口难开,尽了最大努力的笔者也没有办法)。
与传统上3D处理采用4-VecP设计不同,P10的VPE采用了16条并行SP设计。4-VecP专门处理3D中常见的4元素向量操作,通常对这种操作进行了优化设计。然而,如果如果在4-VecP上处理仅有3个元素的向量,或者甚至是一个标量,那么4-VecP将会花费同样的处理时间,尽管数据处理量小得多。
P10中并列的顶点处理器(Vertex Processor),图中的VP相当于正文中的SP。
显然,3DLabs认识到VPE需要更灵活的处理能力,不仅仅是因为非4维向量操作数目会增加,而是VPE中大量使用SP效率会更高,因为它们不会在非4维向量操作上浪费任何处理能力,每个时钟周期都会执行一条指令。ATi则倾向于坚持4-VecP是3D处理的基石,同时提供一个并行的SP,这样每条VS可以同时执行一个4维向量处理和一个标量处理。在处理4维向量数据时,4个4-VecP的处理能力等同于P10 16个SP的处理能力。由于R300的VPU同时还拥有4个SP,所以在最好情况下,每时钟周期,R300 VPE的处理能力是P10的5/4=1.25倍。不过,需要注意,在P10的最好情况下,每时钟周期,R300仅仅拥有P10处理能力的一半,原因前面已经说了,在处理标量数据时,4个4-VecP每时钟周期只能完成4个标量数据,与SP一样,这样R300每时钟周期只能完成8个标量数据处理。
R300的VPE说了这么多,那么NV30的顶点处理器(Vertex Processor,简称VP) 的体系结构如何呢?这里笔者只能透露,与R300令人恐怖的4条并行VS设计不同,NV30只拥有3条并行的VS设计(可能性>90%)。因此,理论上讲,每时钟周期,R300拥有比NV30更强大的几何吞吐能力。<