革命性DX11架构!GTX480/470权威评测
GF100拥有四个GPC,每个GPC内部拥有四组SM,每组SM内部包括了32个CUDA核心:
G80=8 TPC=8x2 SM=8x2x8 SP
GT200=10 TPC=10x3 SM=10x3x8 SP
GF100=4 GPC=4x4 SM=4x4x32 SP
现在我们就可以了解到,GF100与上代的GT200和上上代的G80相比,SM的变化非常大。GF100每组SM当中拥有32个流处理器,而GT200/G80的每组SM都是8个流处理器。在SM内部流处理器数量翻三倍的同时,GPC/TPC的构成也发生了变化,G80每个TPC内部拥有2组SM,GT200是3组SM,而GF100每个GPC内部则是4组SM。
对于CUDA核心与SM结构的微调,大家都很容易理解。GF100与GT200最大的不同其实就是PolyMorph Engine,译为多形体引擎。每个SM都拥有一个多形体引擎,GF100核心总共有多达16个。那么多形体引擎是干什么用的呢?为什么要设计如此之多?
● 为什么要设计多形体引擎?
之前的GPU架构一直都使用单一的前端控制模块来获取、汇集并对三角形实现光栅化。无论GPU有多少个流处理器,这种固定的流水线所实现的性能都是相同的。但应用程序的工作负荷却是不同的,所以这种流水线通常会导致瓶颈出现,流处理器资源未能得到充分利用。
实现光栅化并行处理的同时还要保持API的顺序是非常困难的,这种难度阻碍了这一领域的重大创新。虽然单个前端控制单元的设计在过去的GPU中曾有过辉煌的历史,但是随着对几何复杂度的需求不断增长,它现在已经变成了一个主要障碍。
Tessellation的使用从根本上改变了GPU图形负荷的平衡,该技术可以将特定帧中的三角形密度增加数十倍,给设置于光栅化单元等串行工作的资源带来了巨大压力。为了保持较高的Tessellation性能,有必要重新平衡图形流水线。
为了便于实现较高的三角形速率,NVIDIA设计了一种叫做“PolyMorph”的可扩展几何引擎。每16个PolyMorph引擎均拥有自己专用的顶点拾取单元以及镶嵌器,从而极大地提升了几何性能。与之搭配的4个并行光栅化引擎,它们在每个时钟周期内可设置最多4个三角形。同时,它们还能够在三角形获取、Tessellation、以及光栅化等方面实现巨大性能突破。
● 多形体引擎的工作原理:
多形体引擎拥有五个阶段:顶点拾取、Tessellation、观察口转换、属性设置以及流式输出。每个SM都拥有一个多形体引擎,因此每一阶段中所运算得出的结果都被实时发送至SM处理。该SM能够执行游戏的着色程序、将结果迅速返回至多形体引擎中的下一阶段,从而保证了最高的执行效率。在五个阶段都执行完毕之后,结果会被传递给光栅化引擎。
第一个阶段是从一个全局顶点缓冲区中获取顶点。所获取的顶点于是被发送至SM,以进行顶点着色以及外壳着色。在这两个阶段中,顶点从一个物体空间转变成了世界空间,而且还算出了Tessellation所需的参数(例如细分级别)。Tessellation系数(或LOD)将被发送至Tessellator进行镶嵌处理。
在第二个阶段中,多形体引擎读取Tessellation系数。Tessellator将修补面(控制点网格所定义的光滑表面)分成小方块并输出许多顶点。修补(u、v)值定义了网格以及形成网格的连接方式。
全新的顶点被发送至SM,域着色器与几何着色器均在这里执行。域着色器能够根据外壳着色器与Tessellator的输入来运算每个顶点的最终位置。在本阶段中,通常会附上一个Displacement Mapping(贴图置换)以提升修补面的细节表现。几何着色器能够执行任何后期处理、按需增加或删除顶点以及基元。结果最终将被发回至Tessellation引擎。
在第三个阶段,多形体引擎会执行观察窗口转换以及视角校正。接下来就是属性设置,把后期观察口顶点属性转变成了平面方程,以进行高效的着色器评估。最后,可以选择将顶点“流出”至存储器,使其能够用于更多处理。
● RV870只有一个控制引擎:
ATI似乎也意识到了单个控制引擎不足以满足如此庞大规模流处理器并行处理的需要,因此设计了两个Rasterizer(光栅器)和Hierarchial-Z(多级Z缓冲模块)。但其它的模块如Tessellator(镶嵌器)、Vertex Assembler(顶点装配器)、Geometry Assembler(几何装配器)都只有一个:
RV870只有一个前端控制引擎
4:2的光栅化引擎,16:1的多形体引擎(包括Tessellator),GF100的几何图形性能有多么强大已经可以想象。Tessellation作为ATI发明的技术,对于图形渲染流程与负载的改变ATI不会不知道,如此鸡肋的设计只有一个原因,那就是不做任何改动抢先进入DX11时代,至于执行效率问题暂时抛诸脑后。
NVIDIA则比较务实,他们要的不是抢第一赚噱头,而是做最完美的DX11显卡。当NVIDIA的工程师通过计算机模拟测试得知几何引擎将会成为DX11新的瓶颈之后,毫不迟疑的选择了将单个控制模块打散,重新设计了多形体引擎和光栅化引擎,并分散至每组SM或每个GPC之中,从而大幅提升了几何性能,彻底消除了瓶颈。
当然这种革命性的设计代价很大,消耗了NVIDIA工程师无数的精力、资源和时间。事实上多形体引擎正是GF100核心最大的变化所在,也是它无法在去年及时发布的本质原因。