华硕新一代EAH 2000系列显卡在技术上非常领先,因为完全基于DX10架构设计,所以对于DX10的特性全部支持。下面我们就来看看华硕EAH 2000三款产品的技术优势。
◆ DX10统一架构的引入
传统的DX9架构GPU仍然严格的划分了两个区域来存放Vertex Shader(顶点着色器,简称VS单元)阵列和Pixel Shader(像素着色器,简称PS单元)贴图流水线,GPU会按顺序处理两种数据,对于功能相仿的VS和PS单元来说,这无疑是一种资源冗余,而且这也加重GPU的设计难度及成本。
传统的架构无法从根本上改变两种运算负载的平衡,因为游戏的不同、游戏画面的不同,VS和PS处理时刻都是不同的,显卡只能依据大部分游戏的VS和PS运算量比例设计VS和PS单元的数量,但是造成的资源浪费就是不可避免的了。另外其实游戏的丢帧、不流畅也很可能是VS等待PS运算或者PS等待VS运算的情况。
随着shader运算的增加,这种设计已经不能满足需要了,统一架构的关键就是它整合了功能类似的VS和PS运算单元,另外还加入了几何shader单元(GS,我们后面详细介绍),也就是将VS、PS、GS单元进行了整合,每个流处理单元都可以进行VS、PS、GS的运算,而根据游戏的负载调整每个单元的工作内容。通过一个专门执行单元的运算,全新的R6xx会计算游戏画面的Shader数据类型,从而灵活的调配Shader单元进行不同的数据类型运算,达成资源的合理利用,有效的提高GPU的运算效率。
◆ shader单元数量的绝对领先
华硕2900XT核心集成了高达320个流处理单元。当然,因为采用了DX10统一架构设计,这些单元可以处理包括顶点数据、shader像素渲染、几何单元处理等各种数据流。我们从最小的一个流处理单元来说明整个问题,R600的每个流处理单元都包含5路超标量体系结构着色处理器,单时钟周期可以最多处理5个标量乘加指令,其中一路着色处理器负责处理超越指令(比如Sin、Cos、Log、Exp等等)。我们看下图就可以明白,5个黄色的长方形就是5路着色处理器,“胖胖”的那个就是可以处理超越指令的着色处理器。
另外,流处理单元可以达成32-bit浮点精度,支持整数和逐位操作,而下图中紫色的长方形“分支执行单元”则负责进行流控制和条件运算。在这一代显卡上,ATI和其竞争对手似乎走到了同一个路线上,都采用了“超标量体系结构”的着色处理器,只不过ATI依然是SIMD单元的设计。谈到这里,我们要谈一些这与前几代显卡的区别了,在此之前,我们先介绍一下SIMD。
我们知道,3D图形渲染中的指令绝大多数都是矢量类型,只有少数指令为标量类型。比如我们常见的像素是由RGB三种颜色构成的,此外为了做半透明处理,还会加上一个A通道,因此一个像素通常由RGBA四个通道构成,这里的是个通道就是一个向量,称之为4D。类似的例子还有三维坐标,通常是由x、y、z三个轴构成,有时候还会加上个w,也就是xyzw坐标了。
所谓SIMD就是指“单指令多数据”,如上所说,因为大部分3D渲染都是矢量类型、都是4D向量,所以为了提高效能,过去的GPU产品都采用SIMD单指令流多数据架构,例如4D设计的SIMD单元只有一个指令端口,但却能同时吃进四个通道的数据流,这样就能够在一个周期内完成4D矢量指令的处理。
SIMD单元能够有效提升GPU的矢量处理性能,但缺点是,SIMD在执行标量指令时效能较为低下,因为它只有一个指令端口,所以在面对标量指令时(也就是1D向量指令的时候),4D SIMD单元一个时钟周期只能允许一个标量进入,也只能处理一个标量,其效率就会下降到原来的1/4。
『集成320个流处理器,也让R600晶体管数量暴增到恐怖的7亿个』
传统的GPU并不是没有考虑缓解这个问题,很多GPU都采用了混合型设计,比如3D+1D、甚至2D+2D的架构,它允许GPU的shader单元同时对矢量指令和标量指令进行处理,但仍然无法解决执行标量指令效率低下的问题,尤其是一旦遇上分支预测的情况,SIMD在矢量处理方面高效能的优势将会被损失殆尽。
为了解决这个问题,另外也是解决目前游戏中标量指令大量增多的情况,ATI选择了超标量的架构设计,5个着色处理器都能处理标量指令,组成一个流处理单元。R600就是由320个这样的流处理单元组成,完成像素渲染的过程。
基于RV630核心的2600中集成了120个流处理器,基于RV610的2400则为40个流处理器,虽然比R600精简不少,但是依然非常惊人。