“架构”的战争

技术空间

我们知道,进入DX10时代,统一渲染架构使得显卡不再区分“像素”和“顶点”,“管线”的说法成为历史,取而代之的是全新的“流处理器”。就单一系列显卡来说,流处理器的数量直接影响显卡的性能。不过从DX10显卡开始,A卡尽管拥有比N卡更多的流处理器,但在性能上并不占上风,这是为什么呢?其实,这是两家在显卡架构、效率及算法上的分歧所导致的。如今,NVIDIA的DX11架构Fermi显卡全面布局,而AMD的新一代“北方群岛”蓄势待发,它们在架构上依然是各行其是,这个分歧在一定程度上影响了两家公司的市场态势……

管线的来历和弊端

在图形处理中,像素都是由RGB三种颜色构成的,加上它们共有的Alpha通道,那么总共是4个通道。而顶点数据一般是由XYZW四个坐标构成,这样也是4个通道。在3D图形进行渲染时,其实就是改变RGBA四个通道或者 XYZW四个坐标的数值。为了一次性处理1个完整的像素渲染或几何转换,GPU的像素着色单元和顶点着色单元从一开始就被设计成为同时具备4次运算能力的算数逻辑单元(ALU)。数据的基本单元是Scalar(标量),就是指一个单独的值,GPU的ALU进行一次这种变量操作,被称做1D标量。由于传统GPU的ALU在一个时钟周期可以同时执行4次这样的并行运算,所以ALU的操作被称做4D Vector(矢量)操作。GPU的ALU指令发射端只有一个,但可以同时运算4个通道的数据,这就是SIMD(单指令多数据流)架构。

SIMD架构能够有效提升GPU的矢量处理性能,但4D SIMD架构一旦遇到1D标量指令时,效率就会下降到原来的1/4,3/4的模块被完全浪费。为了缓解这个问题,ATI和NVIDIA在进入DX9时代后相继采用混合型设计,比如R300(Radeon 9700)就采用了3D+1D的架构,NV40(GeForce 6800系列)以后的GPU支持2D+2D和3D+1D两种模式,这种架构很大程度上缓解了标量指令执行效率低下的问题,但无法最大限度的发挥ALU运算能力。

我们可以这样理解:传统的1条管线里面包含了4个基本运算单元,当程序指令都是4D的时候效率较高。但由于API(应用程序接口)和游戏复杂Shader(渲染)指令的发展,3D/2D/1D等混合指令频繁出现,所以传统的管线式架构效率越来越低!到了DX10时代,不再区分像素单元和顶点单元,还加入了新的几何着色单元,这样GPU的Shader单元不仅要处理像素和顶点操作,还要负责几何等其他操作,混合型指令所占比重越来越大,必须放弃传统的管线式架构。

39-d15-1.jpg
AMD显卡一直采用SIMD架构设计

第一次DX10 GPU的碰撞

G80的锐意改革

从G80开始,NVIDIA彻底放弃了过去的4D着色单元,流处理器不再针对矢量设计,统统改成了标量运算单元。每一个ALU(算术逻辑单元)都有自己的专属指令发射器,初代产品拥有128个这样的1D运算器,称之为流处理器。这些流处理器可以智能地执行各种4D/3D/2D/1D指令,无论什么类型的指令执行效率都能接近于100%。

值得一提的是,NVIDIA大幅提升了流处理器工作频率,扩充了流处理器的规模,这样G80的128个标量流处理器的运算能力就几乎相当于传统的64个(128×2/4)4D矢量ALU。在现在很多游戏程序中,1D、2D、3D指令所占比例越来越大,而G80在遇到这种指令时指令转换效率非常高,这也是为什么流处理器数量不多的NVIDIA显卡在游戏性能上却更强悍的原因。G80这种体系称为MIMD(多指令多数据流)架构,和SIMD相比,这种架构所需要的晶体管数量非常庞大。

R600靠数量取胜

和变革力度颇大的G80相比,AMD在DX10显卡的道路上并没有这么大幅的进化,从R600开始,AMD的GPU依然有很多DX9时代产品的影子,在架构上也继续沿用了SIMD架构,这样做的好处就是设计简单、成品快、良率高。至少在设计成本上,AMD所花的钱要比NVIDIA少得多。

R600拥有4个SIMD阵列,每个SIMD阵列包含16个流处理器组,这样总共就是64组,每个组内部又包含了5个ALU,这也是为什么AMD说自家R600核心的流处理器数量是320个的原因。由于内部的5个1D ALU共享同一个指令发射端口,因此R600应该算是SIMD的5D矢量架构。但是R600内部的这5个ALU与传统GPU的ALU有所不同,它们能独立处理任意组合的1D/2D/3D/4D/5D指令。R600的流处理器之所以能比G80多好几倍就是得益于SIMD架构,可以用较少的晶体管堆积出庞大规模的流处理器,只不过AMD这种做法的执行效率需要看执行的程序环境是否适合。

简单而言,G80的MIMD架构需要占用额外的晶体管数,在流处理器数量上会显得比较少,但能保证非常高的执行效率;而R600的SIMD超标量架构可以用较少的晶体管数获得更多的流处理器数量,但执行效率方面要依具体情况而定。

39-d15-2.jpg
G80堪称NVIDIA图形芯片的一代经典
39-d15-3.jpg
R600的核心架构,流处理器众多

GT200硬撼RV770

GT200强力“微”进化

GeForce GTX200系列显卡所采用的第二代DX10核心GT200也采用MIMD架构,但体系上有了细微的变化。首先是每个SM可执行线程上限提升,G80核心每个SM(即不可拆分的8核心流处理器)最多可执行768条线程,而GTX200核心的每个SM提升至1024条,而且GTX200拥有更多的SM。其次,GT200将每个SM的指令寄存器翻倍,这意味着可以存储更多的指令、超长的指令或各种复杂的混合式指令,所以GT200的执行效率更高。实际上GT200并没有从大方向去改变G80的核心架构,只是它的性能和效率就会更大幅地提升(如3D性能在两倍寄存器下直接提升15%以上)。

RV770性能“大”改进

和GT200在核心架构上的“微调”不同, AMD对RV770核心进行了大幅度改进,这一改进虽然相比R600没有革命性的变化,但有效提升了性能,并出现一代“名卡”——Radeon HD4850!在纹理单元和光栅单元部分,RV770的数量是R600的2.5倍。值得一提的是,抗锯齿算法已经由R600/RV670的流处理器部分转移至光栅单元部分,因此RV770的AA(抗锯齿)效率大幅提高,同时在L1缓存上,RV770的总容量达到了RV670/R600的5倍。另外,RV770还放弃了使用多年的环形总线,回归了交叉总线设计,这对提高显存利用率、节约显存带宽很有帮助,所以RV770的显存位宽只有256bit。

RV770的表现有目共睹,这也使得AMD的Radeon HD4850/4870在市场上非常火爆。不过在市场策略上,NVIDIA依靠GT200和G92核心的延展,继续压制AMD。

39-d15-4.jpg
相比G80,GT200的核心架构并没有太大的变化

DX11时代的对抗

鉴于RV770的出色表现,在DX11时代,AMD的Cypress核心(用于Radeon HD5800系列)除了显存位宽维持256bit不变之外,其他规格都恰好是RV770的两倍。形象地说,就是并排放置了两颗RV770核心。这种双核心设计不仅降低了芯片研发的难度,而且能有效管理更多的流处理器。AMD为了配合双核和多达1600个流处理器的工作,Cypress装配引擎内部设计了双倍的Rasterizer(光栅器)和Hierarchial-Z(多级Z缓冲模块)。

相比之下,NVIDIA首款DX11架构Fermi在流处理器方面的变革非常大,光栅化引擎是以线程处理器簇为单位(一式四份),其功能就是以流水线的方式执行边缘/三角形设定、光栅化、Z轴压缩等操作。另外,Fermi拥有更多的PolyMorph(多形体引擎),DX11中最大的特色——细分曲面单元(Tessellator)就在这里,所以Fermi的Tessellation性能超过了Cypress。至于流处理器核心部分,Fermi和以前的GPU相比更是完全不同, NVIDIA将其称为CUDA核心。Fermi的512个CUDA核心都支持完整的32位整数算法,此外双精度浮点性能大大提升。而AMD从R600到Cypress核心没有任何进步。

从目前来看,在DX11显卡的核心设计上,无论是功能还是性能,Fermi架构都要强于Cypress。但是AMD的DX11显卡由于设计上比较简单,良品率也比较高,所以更快地出现在市场上,而NVIDIA的DX11显卡尽管理论性能很强大,但设计上过于复杂,导致其功耗和发热量有点高,良品率稍低,以致落后竞争对手近半年时间才问世。

39-d15-6.jpg
从某种意义上说,细分曲面是DX11的“灵魂”

写在最后>>架构先进与否决定市场?

纵观AMD和NVIDIA从DX10时代开始的竞争,我们不难发现,R600和G80就像一个基准点,谁的第一代DX10显卡起点高,谁就能在接下来的市场中占据优势。G80的强悍和R600/RV670的失落形成了强烈的对比;而G92在和RV770的比拼中也不落下风,再加上GT200的横空出世,可以说NVIDIA牢牢地将AMD甩在身后,正是因为DX10显卡的强势以及发布时间的领先。

但是在DX11时代这一态势却变得模糊起来。不可否认,NVIDIA在显卡架构方面进行的革新和努力远不是AMD可以相比,NVIDIA更新显卡架构的速度很快,每一代显卡的效率都非常高,但是当遇到了设计、制程瓶颈以及良率问题的时候,NVIDIA处理起来就比较麻烦。相反,AMD虽然在架构上一直没有革命性的变化,但是这种做法一方面大大节省了GPU设计成本,每一代产品只需要小小进行一些修改即可,同时在长久的竞争过程中,AMD这种方式必然要比NVIDIA更快。

在NVIDIA还在为DX11中端显卡的发布而努力的时候,AMD即将发布其第二代DX11显卡——“北方群岛”系列。很显然,随着时间的推移,AMD在显卡架构上“偷懒”的做法会为它们争取到更多的时间,对于普通消费者而言,技术并不是关键,重点在于显卡的性能、价格,如果NVIDIA还继续纠结于架构的变化和更多功能,那么在未来是否还有优势就不得而知了,如果NVIDIA再推出诸如G80那样拥有巨大优势的一代GPU,或许能在市场上重新掌握主导权,但是AMD会给它这个机会吗?