● 并行度决定一切
我们前面提到过,无论AMD还是NVIDIA,在DirectX 11以前的几何引擎设计上都没有本质上能够导致性能极大差异的设计。双方基本上都维持着单几何引擎和单周期单引擎搏出单多边形的方案。这种情况一直持续到DirectX 11才发生改变。
DirectX 11引入的Tessellation过程会导致巨量的新生顶点的出现,要完成几何过程,将这些顶点生成出来以及将他们连接成多边形都是必不可少的步骤。这直接导致了几何引擎的效率界定从传统的由CPU顶点输出能力变成了由Tessellator单元以及多边形生成能力。我们前面提到过,单进单出体系会严重受制于最短板性能的制约,那么AMD和NVIDIA又是如何应对这个问题的呢。
由于RV870构架的几何部分改进过于简单,甚至可以说有些幼稚,所以在这里我们直接引入AMD最新的构架RV970进行说明和比较。
从图中不难发现,不论GF100还是RV970,双方都选择了双管齐下的解决方案——增加单位周期的多边形生成数,同时将几何处理过程并行化。这样做即从体系内部解决了短板效应的问题,又将整个体系单进单出的结构进行了改进。但在细部,双方的设计上还是有着很大的差别的。
GF100采用了将几何引擎完全融入到流水线中同时将流水线并行化的GPC结构设计,而RV970则采用了在RV870基础上继续维持几何引擎的独立,但几何引擎内部拆分成对等的两部分并实现并行化的结构设计。相对来说,GF100的GPC设计导致了几何引擎的并行度和内部结构搭配更加合理,几何融入和GPC并行的结构不仅使得GF100在整个流水线执行过程中更具并行度,让几何过程与流水线结合的更加紧密,而且最关键的优势在于使其具备了4套独立的完全可并行的几何引擎,这个结构在单周期可以同时输出4个完整的多边形。相比之下,RV970的双图形引擎只能输出2个完整多边形,同时几何过程与后续流水线过程的结合也远不如竞争对手来的紧密。
这就是真相,GF100与RV970在Tessellation效率上的差异其实并不是简单的仅由Tessellator个数所导致的。实际上以RV970的多边形生成能力来说,即便搭配了与竞争对手相同的Tessellator单元,其效率也不会提升到GF100的水平上,单周期能够输出地多边形数量差异成了几何引擎效率差异的决定性因素。
在整个图形过程的起点上,传统的结构并没有区别。当API发展到DirectX 11之后,双方的差异一目了然。
我要提醒各位,如果看到这里你就开始认定我是在为谁歌功颂德,那就错了。请记住我们的宗旨——我们在秉承CBS之眼的传统,为您揭露真相。同时还要请您记住一个前面提到的有助于理解真相的关键点——短板效应是横亘在整个体系之上的重要影响因素。