R600架构潜力巨大!(内部架构分析)
纵所周知,统一渲染架构中,流处理器的数量相当重要。
R600拥有320个流处理单元,而8800只有128个流处理器,数量上大大超过了G80,但2者是完全不同的构架,数量上的对比是没有意义的.G80的每个流处理器均能在同一个周期中,进行浮点运算或函数运算,和处理整数指令,也就是说理论上一个周期内能完成128个数据及指令运算,而且G80的流处理器频率与核心频率并不同步,8800gtx核心频率为575,shader频率却高达1.35g,这大大提升了流处理器的处理能力。而ATI同步了2者的频率,即2900XT的shader仅为740,比G80几乎低了一倍
ATI采用了SIMD(single instrucion multiple data)的设计,核心拥有4组流处理器,并各自连接一组Texture Units,每组拥有16个流处理器,共计64个流处器。ATI宣传的2900XT拥有320个,是流处理单元不是流处理器!
还记得ATI的黄金3比1架构吗?每条渲染管线拥有3个pixel shader units,ATI的同一渲染架构跟前者有异曲同工之妙,实际上ATI的每个流处理器中拥有5组ALU,这里的ALU就是所谓的流处理单元,64个流处理器拥有320个流处理单元。
在ATI的每个流处理器中,1组闲置的ALU分支预测单元,配置了缓存器,可以存放输入/输出数据,5组ALU组多可以处理5份数据。所以2900XT的320个流处理单元,在一个周期能处理320分数据。不过,每个SIMD只能执行一份VLIM指令,因此,每个周期能够执行的指令数量在很大程度上取决于UTDP(ultra thred displath processor)能将更多的简单指令,集合成一组VLIM指令,填满一条流水线上的16个流处理器,80个ALU。为了提升SIMD运算效率,ATI在2900XT中加入了8KB的读取缓存,作为虚拟暂时存储空间,配合stream out buffer,存储一些不需要经过渲染后端处理的数据。
早在R580核心中,ATI在每个pixel shader unti中,集成了4个ALU,R580采用了标量+矢量运算的设计,所以没周期能处理2组scalar运算或一组vector和1组scalar运算。R600采用了经过革新的superscalar架构,不再分为vector和scalar,所以5个ALU最多可以处理5组scalar运算或1组vector和2组scalar运算。不过无论是5D,还是4D+1D,5个ALU并不是全功能的,5个ALU当中只有一个能够执行函数运算,浮点运算以及Multipy运算,但不能进行ADD运算,其余4个只能做Multipy ADD运算。不过,R600的优势很大一部分在于,每个流处理器都能够独立执行完全不同的指令,而G80每个流处理器只能在一个周期内执行完全相同的指令。2900XT最高可以达到475GFLOPs的运算能力,竞争对手的8800ULTRA可以达到576GFLOPs,但运算能力的差别,并不能代表一切,二者的流处理器设计完全不同,各自优势会根据软件不的不同而不同。
ATI为了提高R600的SIMD的执行效率,增加了指令合并的功能——每个不是完全独立的指令,将被合成一个较长的指令,再交给流处理器,提升了ALU的利用率。另一方面,ATI延续了Ultra Threaded Dispatch Processor的设计,在数据和指令交给流处理器和顶点/纹理单元之前,需要经过2个排序以及仲裁单元,决定哪些指令需要优先处理,哪些指令不需要等待运算结果,哪些指令需要为其他指令腾出空间,等等。另外,Shader Instustion Cache以及Shader Constant Cache,都存储了一些资源,当重复的时候,可以直接从缓存中提取,降低了延迟,从而提升效率。虽然,每一组SIMD都是完全独立的,Ultra Threaded Dispatch Processor却可以将相关的运算,同时放入相同的SIMD中,进一步降低运算延迟。
新一代的2900XT与上代的1950XTX相比,保持了4个Render-back ends的设计,理论上来说,一个周期能处理16个pixels,但是R600较上代产品多了一组Z/Stencil processor Unit, Z/Stencil处理单元的出现,有助于提高执行效率,所以在R600中,一个周期可以处理32个Stencil Shadow。另外,8比1的Z Compression压缩比提升到了16比1,这样能有效降低显存位宽的占用。纹理数据所占用的空间进一步降低,压缩比的提升,对z-buffer的要求也有所提高,ATI将R600设置的Z-buffer设置成可以独立进行压缩的运算,进一步提升效率。
很重要的一点,R600加入了RE-Z机制,在此机制中,pixel在进行渲染之前,会首先检查,滤除不被显示在画面上的pixel,而普通的图形显示核心,会在pixel渲染之后进行检查,大大浪费了系统资源。
G80图形核心整合了6个Render-back ends,从理论上来说,G80在一个周期内能够处理24个 pixels,G80拥有2组Z/Stencil processor Unit,因此,G80在一个周期内能够进行48个Stencil Shadow的运算。但从规格上来看,G80这部风强于R600,但16比1的压缩比和RE-Z机制的加入,可在软件的支持下,挽回一些差距。
Tessellation增益技术是ATI备受瞩目,且引以为傲的技术,这项技术首先出现在XBOX360主机中,Xenos图形核心就具备该技术。
该技术可以将数据在进入Vertex Shader运算前,以编成技术做出修补。Tessellation增益技术是微软的下一代DirectX的必备功能,由于和微软紧密地关系,ATI已经在R600中整合了该技术。
纹理单元方面,G80整合了32个Texture Address Units,64个Texture Filter Units,理论上每个周期可以进行32个Unfiltererd Texture Samples或者Filtererd Texture Samples的计算。R600最多只能在一个周期内,处理16个Unfiltererd Texture Samples和16个Filtererd Texture Samples,或者32个Unfiltererd Texture Samples。R600在技术规格上有一些劣势,但却能同时处理Unfiltererd Texture Samples和Filtererd Texture Samples,所以只要有软件的支持,R600的整体表现会更进一步。