向G80宣战——R600
技术空间
R600是ATI被收购之前独立设计的最后一款产品,也是A卡PC平台第一款采用统一着色架构的产品。虽然发布时间一再推迟,但DirectX 10架构的吸引力依然很强,而早期放出能压倒G80的前期评测,也让用户对R600产生了无限的期待。
三箭齐发
AMD对R600系列规划是高中低端三箭齐发,R600系列坐镇高端将成为性能的代表,处于中端的RV630系列和低端的RV610系列,也将同时出现在市场上。
初期发布的R600核心产品,将以X2900XTX和X2900XT为主。X2900XTX的核心频率将为750MHz-800MHz,显存则会采用目前最高端的等效2.2GHz的GDDR4显存,位宽也将达到惊人的512bit。X2900XT的核心频率降为600MHz,显存改用等效1.8GHz的GDDR3显存。在这两款产品之后还将有各种Pro、GT、XL版本,它们的主要区别在显存/核心频率、显存位宽(从512bit降为256bit)和着色引擎数目(从64个降为48个)。
中端的RV630核心将衍生出X2600系列产品,和低端的RV610核心衍生出来的X2300系列产品一样,它们都只具备128bit的显存位宽,不过前者的着色处理器是32个,后者则降为16个。显存与核心的搭配则将是具体型号区分的标志。由此看来,着色处理器数目在这一代的地位更为重要。

统一着色架构与DirectX 10
R600并不是ATI在显卡领域第一次尝试统一着色架构(Unified Shader)的产品,在此之前XBOX 360的Xenos显示核心中,ATI就开始进行第一代的Unified Shader设计,那时还是2005年。以Xenos为参考的R600,是AMD第二代采用Unified Shader设计的产品。

DirectX 10并不是一个硬件设计规范,在DirectX 10时代显卡的处理流程依然是传统的从顶点到Setup引擎,然后是做像素纹理操作,最后由ROP(光栅操作处理器)输出到内存。DirectX 10中包含的Shader Model 4.0也并不是要抹杀Vertex Shader与Pixel Shader的区别,反而在规范中还加入了可以创建新数据的Geometry Shader,只是在API层面上对这些Shader不再做区别。
API层面的不再区分,让程序在编写上拥有了更大的自由度。但从硬件设计层面来说, Vertex Shader与Pixel Shader保持传统的分离式设计,依然符合Shader Model4.0的要求,依然是标准的DirectX 10显卡。换言之,统一着色架构更主要是软件层面上的概念。在硬件设计上采用传统的分离式设计,一样可以实现统一着色架构,传说G80就是采取此种较为保守的设计思路。
从效率的角度来说,分离式架构让显卡的负载状况较不均衡,在一些环境较复杂的画面中顶点着色单元疲于奔命而像素着色单元大量闲置,在另一些纹理像素复杂的环境中两者闲、忙的情况有可能相反。
我们知道,Xenos具备48个“4D+1D”(矢量+标量)的Unified Shader,每16个着色单元被合并为一个着色矩阵,每个矩阵内部同一时间只能执行同一类别的指令,也就是说,要么做Pixel Shader,要么做Vertex Shader,而且还不能直接生成多边形。这是第二种实现统一着色架构但同时也不太灵活的方式,这种设计在第二代统一着色架构的R600中将不会被延续。
R600将具备64个4D+1D(Xenos的延续)的统一着色单元,在使用的灵活性上将比Xenos相对僵化的设计大大提高效率,VS+PS,VS+GS的搭配会相当自由。在控制策略上R600吸收了前代架构的思路,从这个角度上来说,R600可以被理解成是以Xenos为父、R5XX系列为母的产品。
不过R600这样Unified Shader的设计,虽然和分离式结构相比有资源共享方面的优势,但是Vertex Shader类和Pixel Shader类的运算压力并不持平。
不过考虑一下R600的“双亲”,R520到R580的三倍爆发,乃至Xenos的16个Unified Shader组合成一个着色矩阵,R600的4D+1D的Unified Shader架构成为AMD在PC平台上第一代DirectX 10显卡的选择,也就顺理成章了。
底层单元的分歧
G80同样看到Shader Power能力发挥被制约的问题,比R600早问世的G80选择了一个较新的思路来设计底层的单元,那就是标量运算单元(Scalar ALU)。而R600如前所述,依然采用的是较为传统的矢量运算单元(Vector ALU)。
我们来看一下底层单元的工作对象,比如在像素处理的时候,我们是使用的R、G、B三个数值来对颜色进行描述,除此之外还有对透明度描述的Alpha值,这就构成了完整的RGBA四通道。对于顶点而言,同样有对应的XYZW四个代表坐标的通道。

对一个像素进行整体操作的时候,单指令多数据(Single Instruction Multiple Data,SIMD)就成为一种重要的操作方法。在同一个时钟周期内,发射端发射一个指令,运算单元进行4次平行的运算,这就是4D矢量运算。在显卡内不管是进行像素渲染还是顶点变换,4D矢量运算都比较普遍,连CPU领域我们也看得到基于SIMD的SSE系列指令集。
但是4D矢量运算也有比较令人头痛的缺点,那就是指令发射能力与ALU的负载能力并不能达到完美的结合。操作中4D运算的分量比较重,但这并不意味着不存在1D、2D、3D的运算,一个4D的矢量运算单元被用来跑这类轻量级指令,运算能力的闲置就让人痛心了。特别是Unified Shader架构,前面已经提到过Vertex Shader和Pixel Shader在运算压力上的不平衡,让闲置状况更为突出。即使有Co-issue技术助阵,整体实际利用率还是只能在70%上下徘徊。
为了避免这种问题,在底层单元的设计上,NVIDIA公司的G80系列应对措施是选择了基于1D标量运算的Scalar ALU来替代传统的Vector ALU。虽然1D的标量单元,在利用率上不会出现矢量单元的闲置,但要达到4D SIMD运算单元的运算能力,运算单元的数量和频率都需要提升。也就是说,如果是同频的Shader单元,4个1D和1个4D才能基本形成均势。
可以简单计算一下R600和G80的运算能力,R600具备64个4D+1D的SIMD单元,如果它运行在750MHz下,那么它的理论吞吐能力为750MHz×64个×[(1+2)×4]Flops=576GFlops/s,而目前G80的MIME架构频率为1350MHz,那么它的理论吞吐能力就为1350MHz×128个×[(1+2)×1]Flops=518.4GFlops/s。
从目前CUDA上的信息来看,G80的Scalar做MUL+MAD运算还不完美,如此看来G80的理论运算能力还要打点折扣,那么即使R600的Co-Issue失效,面对G80,R600在Shader的运算能力上仍旧具有相当大的优势。64×4的架构面对128×1的架构,在目前的显卡应用中显得更为务实,这就是R600坚持继续使用较为传统的矢量运算单元的原因。
在晶体管的使用上,G80的架构看起来就没那么务实,4个1D的ALU必然要使用4个独立的发射端口,控制和辅助资源也同时需要4份,这比R600的1个4D+1D的矢量运算单元开销要高出不少。换言之,同样的性能下,R600所需要的晶体管更少,或者说使用同样多的晶体管,在Shader Power上R600会更为强悍。
带宽、应用与成本
在显存规格上,R600采用512bit的显存,在内部更是具备1024bit环状总线架构。搭配2.2GHz的GDDR4显存,数据峰值可以达到130GB/s以上,即使搭配频率低一些的GDDR3内存,也能有110GB/s的峰值带宽。G80最多只有384bit显存位宽,在峰值时也只有84GB/s的带宽。显存带宽的优势,使得R600在高分辨率下,进行AA等消耗带宽的操作时具有相当大的优势。
G80除了矢量运算单元以外,它的GigaThread流水线管理体系也深受好评,不过ATI对应的部分在R5XX系列时期已经比较成熟,而G80的1D运算单元事实上也比R600结构需要更多的资源,在这个方面R600依然没有落后。
在Shader部分的设计上,R600和它的主要对手G80思路分歧比较大,实际性能R600也应该能占据上风,在强调运算能力的应用/游戏中R600应该比对手有着更为出色的表现。
对于这一点我们可以回顾R5XX挑战G7X时候的情景,低延迟、高资源需求的Threading管理在R5XX系列上表现良好,但Shader Power较差的R520仍旧一败涂地,而“暴力”增加Shader数目之后R580在性能上打了个漂亮的翻身仗。延续着R5XX系列某些设计思路的R600依然“暴力”,那么性能的优势因此也可以得到保证。
在设计上,NVIDIA有把G80往GPGPU方向打造的思路,让可编程的部分(诸如Shader)尽量高效化和通用化。但从目前的工艺制程来看,Shader部分因为局部散热等问题在频率提升上还存在一定阻碍,而调度、控制等辅助资源的调配也需要更多时间的积累。“更像一款显卡”的R600,在“暴力”→“更暴力”的传统路子上,有了R5XX和Xenos的经验积累,至少目前能为用户提供比G80更多的实在。
如果要考虑成本,还有几点也不容忽视。在设计布线上NVIDIA是一贯的强势,而512bit的显存位宽对于AMD来说考验并不小,为了实现512bit位宽,需要超过10层的PCB,布线上的麻烦也相当多,这将带来成本以及很多方面的困扰。另外,G80面世已久,40万以上用户的基础还是占有先行之利,且G80的“暴力版”在消息中也已整装待发,R600或许会面临前后夹攻的不利市场局面。
在R600正式面世之前,一切预测和分析都存在着不确定的因素,但在DirectX 10时代PC显卡领域的第一战,R600必然会交出一份和对手G80思路大相径庭的答卷,这已然是铁一样的事实。
不同的设计思路很难简单的用优劣来作出判断,而技术也并不是产品成败的唯一决定因素。在R600正式发布并公开较多细节以后,时间和市场才能作出最终的评判。