● 融合流水线,NVIDIA的阵痛
从DX9.0C开始,为了提高纹理操作效率,TMU内部开始将完成定址工作的TA和完成纹理抓取操作的TF独立成两组阵列,双方各司其职,互不干扰。
我们认为自G80开始到GF100,NVIDIA的整个图形构架发展是一个事先规划好的一体化的完整构架路线,每代构架的发展都目标明确而且对后代构架产生影响,最重要的证据之一,就是G80以来NVIDIA所使用的TMU结构。
G80立项之初,NVIDIA在当下和未来的构架发展路线上选择了并行化的方向。要达到这个目的,图形处理器的各个部分必须充分融合在一起,只有融合完整的流水线过程,才能够在未来实现多流水线并行的设计。因此NVIDIA自G80构架起便开始了将纹理操作单元融入处理单元基础SM中的努力。
将TF自传统的TMU单元中完全剥离出来放置在SM中比较简单,只要将对应的专有的L1 Tex Cache和TF绑定好之后放进SM即可。而将TA融合进去的过程则出现了当时无法克服的困难。与只需要专门的少量独享的缓冲资源的拾取操作不同,纹理定址过程对缓冲空间极为敏感。在具备一致性的unifield shared也就是统一cache构架出现之前,TA单元暂时还只能跟L2 Tex Cache绑定并独立于SM之外。拆分之后的纹理处理单元显然不再是一个完整的可以被称作TMU的单元了,因此这种拆分之后的纹理处理部分被命名为了Texture Arroy。
这种不完全的融合过程虽然为未来的纹理单元和几何单元的彻底融合以及GPC并行设计打下了坚实的基础,但是其坏处也是显而易见的——由于功能单元的分离,TA和TF不再能够共享一套缓存系统,之间的操作也需要经过比过去更多的PASS来完成,再加上不同的运行频率导致的效率差异。这些都直接影响了G80及沿用设计的GT200在纹理操作能力上的表现。
相对于NVIDIA,AMD的构架发展虽然没有那么明确的指向性和前后关联性,更多的是对之前问题的修补和对即将到来的需求的简单迎合,但也正是由于这种见招拆招的发展模式,AMD自R600以来的构架在纯纹理性能方面的扩展一直非常方便。因为避开了被拆分的命运,TMU的整体效率也一直维持在了起码不低于前代的水准之上。尤其是RV770的纹理单元,不仅效率和规模都非常可观,而且还得到了来自RBE单元的进一步辅助。这使得RV770在面对材质的操作过程中轻松取得了比竞争对手GT200高得多的效率。