不看终身遗憾之二!08电源深度横评 | | 极限玩家专访:Onepagebook | VictorWang | CDKey | 绝望生鱼片 | Wing | WolStame
TP45 HP挑战四核新人Q8200 | | 享我所想—华硕P5Q PRO诠释人性化主板 | | 精彩视界,ASUS EAH4870 TOP实测
BLACKOPS X48上市解析 | | GIGA P45T EXTREME空冷659Mhz达成 | | 作弊?!极限玩家的博弈 | | 玩ABS超频软件,送LanParty主板
发新话题
打印

R600架构潜力巨大!(内部架构分析)

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的整体表现会更进一步。
E4300 OC 3G(333x9)+东海
海盗船 ddr667 1GX2 (4-4-4-12)
升技 IB9
迪兰恒进X1950PRO龙卷风
2900XT的地位是针对8800GTS,虽然从规格上看,已经超过了8800GTX,但实际性能测试中,战胜了8800GTS,但和8800GTX比还有些差距。
   2900XT拥有很多很特殊很优秀的特性,例如Tessellation增益技术,320个流处理单元。遗憾的是,不完善的驱动无法发挥这些优秀的特性的性能。ATI对于超标量架构的诠释还需要加强,同时,VLIW指令的整合也是需要解决的一个问题。相比G80,R600核心更加偏重于大数量Shader运算。不过在16XAF下的纹理过滤运算能力要低于8800GTS,目前只能期待驱动带来的改善。
E4300 OC 3G(333x9)+东海
海盗船 ddr667 1GX2 (4-4-4-12)
升技 IB9
迪兰恒进X1950PRO龙卷风
这是我说看的解析的最深入的文章,其中有些部分经过了我的删改,缩减。
E4300 OC 3G(333x9)+东海
海盗船 ddr667 1GX2 (4-4-4-12)
升技 IB9
迪兰恒进X1950PRO龙卷风
配上图片说明更好了
overclock your mind----->下场就是----->疯子
一群疯子----->在一起就是------->超频网编辑部
送一个就更好了
论述有偏颇,指令整合并不是改进而是弊端,因为仍旧基于旧的SIMD架构,所以迫不得已采用指令发射的模式
NV敢于冒险彻底革新架构的结果就是G80遥遥领先
G80的ALU全部是标量单元,属MIMD架构,确实提高了资源利用率,面对1D,2D,3D指令时可以更好的组织起并行运算,不需要考虑是对象是矢量还是标量,但当面对4D矢量运算,需要4个流处理器并行处理,所以G80要靠超高(相对R600系列)的shader频率来弥补
  ATI的SIMD架构在矢量运算中占优,但面对1D,2D,3D,指令时,就要通过指令整合,这样就对指令控制单元要求比较高。驱动可以针对方面进行优化,所以以后的驱动势必会进一步提升R600的表现
E4300 OC 3G(333x9)+东海
海盗船 ddr667 1GX2 (4-4-4-12)
升技 IB9
迪兰恒进X1950PRO龙卷风
很专业,学习了!
G80并非是依靠高SP频率,相反频率落差加大的内部的延迟,R600的SIMD在矢量运算中也不占优,除非所有的操作都是4D vector。官方PDF上的说词没有任何意义

回复 #9 possecat 的帖子

那么shader频率越高性能越强又如何解释呢?
当遇到4D矢量运算中,G80只能在一个周期内进行32次(128/4)也是事实

但最终影响消费者的还是价格,同样的价格,谁性能强就买谁
E4300 OC 3G(333x9)+东海
海盗船 ddr667 1GX2 (4-4-4-12)
升技 IB9
迪兰恒进X1950PRO龙卷风
G80的128个SPU分成8block,每个block可以维持512 thead,所以TCP可以维持庞大的65536 thread并行,G80的晶体管大多用在了控制运算上面,控制资源上的投入把利用率最大化,这是G80架构之所以高效的关键,高SP频率只是弥补ALU资源的劣势。
至于ALU的利用率方面,与其说谁更有效,不如说是谁更浪费,MIMD和SIMD的差别就是ALU周期 X 4与ALU 宽度 x 4 这两个谁更浪费,对软件的适应性决定了两者应用领域的优势。
对G80的架构不是非常了解,学习了

SIMD和MIMD架构的对抗,就是以资源和执行效率进行竞争了
E4300 OC 3G(333x9)+东海
海盗船 ddr667 1GX2 (4-4-4-12)
升技 IB9
迪兰恒进X1950PRO龙卷风
引用:
原帖由 悲伤の预感 于 2007-8-22 12:48 发表
对G80的架构不是非常了解,学习了

SIMD和MIMD架构的对抗,就是以资源和执行效率进行竞争了
SIMD架构在图形处理的优势较MIMD大,只是AMD没做好,R600的硬件架构虽强,但这个架构把大量的优化工作留给的编译器,R600本身硬件架构和编译器的效率却是个问题,很难编译出高效率的硬件代码,AMD和软件厂商的联系又没有Nvidia紧密

回复 #13 possecat 的帖子

确实,R600需要仔细优化才能发挥出强大的性能
E4300 OC 3G(333x9)+东海
海盗船 ddr667 1GX2 (4-4-4-12)
升技 IB9
迪兰恒进X1950PRO龙卷风
R600确实有硬伤,并且只能下一代R700才能解决了。
发新话题