开创视觉计算帝国GTX280/260权威评测
第二章:GTX200核心架构全面解析
通过前面对于旗舰显卡的简单回顾我们可以发现,R600比G80有着许多先天优势:工艺先进、晶体管更多、频率更高、还有512Bit显存,但为何R600还不如G80的阉割版呢?这是因为决定性能的关键在于GPU核心架构,只有不停地优化架构,才能在晶体管、频率一定的情况下,大幅提升执行效能。那么现在我们就来研究下NVIDIA和AMD的DX10图形架构。
第二章/第一节 G80核心第一代统一渲染架构解析
GTX200的核心架构是在G80的基础上改进、优化、创新而来的,G8X/G9X都是第一代统一渲染架构,NVIDIA将GTX200称为第二代统一架构,所以必须熟知G80的架构特色后才能深入理解GTX200的新特新。
● 第一代统一渲染架构:G80统一像素/顶点/几何/物理
在G80以前,显卡(GPU)的规格主要用管线(Shader,着色器)来形容,分为像素管线(Pixel Shader)和顶点管线(Vertex Shader)。芯片厂商在设计的时候并不会将顶点管线和像素管线按照相同的数目去做,一般像素管线数远大于顶点管线。比如G70/G71核心拥有24条像素管线和8个顶点管线。那么显示芯片厂商为什么要这么做呢?答案是:这样的结构和比例是芯片设计厂商根据常见游戏的情况而决定的。
不同的游戏在开发的过程中,设计的图像复杂度是不同的,有的游戏3D模型相对简单,这样游戏就可以在更多玩家的电脑上运行。有的游戏的3D模型和后期特效就非常复杂,这样在保证了游戏的效果的同时就让很多中低配置玩家难以流畅运行。除去游戏复杂度的区别,游戏的开发商和显示芯片厂商还处在一个更加难以解决的怪圈中,这就是:游戏开发商必须根据GPU的架构来调整图形资源消耗(如像素/顶点或像素/纹理的比例),而芯片厂商又得预估未来游戏的发展来定制GPU架构,出现了双方互相牵制难以协调统一的局面。
具体来说就是,有的厂商会开发一些3D模型很复杂,顶点数目很多的游戏,这些游戏就需要耗费很大的顶点管线的资源,这类游戏可以把场景设计得很复杂,里面的3D模型的细节非常到位。而另一类厂商则会将焦点放在后期的象素级别的特效,这样的好处就是可以给游戏带来更炫的视觉效果。
传统管线式架构中像素和顶点负载不均衡,统一渲染架构就能自动分配负载
上图可以看到一个典型的例子,第一场景(鲨鱼)主要是由框架以及三角形来构成的,因此对于顶点的计算量是相当高的,而像素计算的部分却非常少,像素管线资源被闲置。
而第二个例子描绘的是一个复杂水体模拟场景,是由大量的光影特效都是依靠像素处理实现的,因此对于像素单元的要求却非常高,而顶点的操作早已完成,导致了资源的浪费。这两个例子充分的证明了这样一个事实,大部分的应用中,顶点和像素处理不平衡的现象非常普遍,导致部分Shader单元闲置,从而浪费宝贵的资源。这也正是Shader单元分离式设计显卡的最大弊端之一。
在实际游戏中,像素和顶点的负载并非一成不变,因此需要GPU自动协调获得最高效能
在这种情况下,显示芯片厂商只能按照最常见的游戏的情况来设计显示芯片,尽最大能力去满足不同的游戏。而游戏厂商在设计游戏的时候也不能随心所欲的设计游戏,必须满足显示芯片的性能配比,这样才能在消耗性能最小的情况下达到最好的游戏效果。这个矛盾一天不得到解决,显示芯片最大的效能就不能充分的得到发挥,这也一直是显示芯片的性能提高的最大瓶颈所在。
- 传统显示芯片架构的缺点
1. 游戏厂商无法按照需要设计游戏,必须向硬件性能妥协。
2. 显示芯片的利用效率不高,运算单元被闲置的现象经常发生。
- 统一渲染架构的优点:
1.动态分配运算单元,提升利用率
在统一渲染架构下,每个处理单元都可以进行顶点和像素的运算,这样一来,无论是怎样的游戏,都能够充分利用显卡的资源,再也不会有一些处理单元闲置,一些处理单元负载过高的情况出现了。
在需要大量顶点运算的游戏中,Unified Shader将被分配去做顶点的运算,而在需要大量后期象素级别特效的时候,Unified Shader将被安排去做像素着色。
2.并行处理,提高利用效率
除了动态分配方面带来的好处,这样的结构还有利于处理并行性的提升,因为这些处理单元可以并行运行,不像原来的串行的结构那样顺序执行。
3.统一渲染架构还能够协调分配几何着色、物理着色等指令
除了传统的像素着色和顶点着色之外,统一渲染架构还支持DX10新加入的几何着色,在专用控制单元的支配下,GPU可以代替CPU动态的生成和销毁几何图元数据,从而大幅提升执行效率,消除图像渲染过程中的瓶颈。