
R600每个Stream Processing Units的结构
Branch Execution Unit(分歧执行单元)进行流控制和条件运算,BEU获得指令包后将会安排至它管辖下5个ALU执行,流控制效率非常高,几乎不产生延迟或者性能损失。General Purpose Registers(通用寄存器)存储输入数据、临时数值和输出数据,并不存放指令。
与传统GPU ALU架构不同的是,R600的5D SIMD矢量ALU可以在动态流控制的支配下自由的处理任何组合形式的指令,诸如1+1+1+1+1、2+2+1、4+1等组合形式。
换句话说,既然是5D SIMD矢量架构,那么内部的5个1D ALU就只共享一个指令发射端口,但是R600的Thread Processor可以智能的将各种离散指令(比如将5个1D指令)分类打包,然后通过分支执行单元交给5D SIMD矢量ALU处理,这样同样能够保证GPU所有的ALU资源不被浪费!
宏观上R600依然是SIMD矢量架构,但在微观上可以称之为超标量架构,完美支持Co-issue(矢量指令和标量指令并行执行),单时钟周期可以进行5次MAD(Multiply-Add,乘加)运算。另外还可以看到,5个1D ALU其中有个“胖”一点的,它除了MAD之外还能够进行一些特殊(SIN、COS、LOG、EXP等函数)运算,在特殊条件下提高运算效率!
现在R600的架构优势就完全体现了出来,它拥有如假包换的64×5=320个恐怖ALU阵容,说它是320个流
处理器毫不为过,尤其是在科学计算方面,320个流
处理器可以很容易就发挥出接近100%的效能,而普通多核心
CPU想要发挥出70%的效能都非常困难。
通过上图可以看出R600XT的理论浮点算术运算能力=320(SPU)×2(MAD指令)× 742MHz=475 GLOPS,而G80Ultra的理论浮点算术运算能力=128×2×1500MHz=384 GLOPS。R600的晶体管规模与G80相近,却实现了更高的理论运算能力,并且突破了传统GPU架构的瓶颈,提升了单位晶体管所实现的效能!但是,理论归理论,GPU在实际游戏中的表现还要受到多方面因素的制约,R600的动态流控制能否最大限度发挥320个流
处理器的实力,这还有待测试证明。
通过前面的分析我们可以初步得出这样的结论:G80纯标量架构的效能比较依赖于将矢量指令拆分为标量指令的效率;而R600超标量架构的效能依赖于将各种混合指令重新排序并且打包分配给SIMD单元的效率。R600虽然在流
处理器数量上有着绝对优势,但在架构执行效率方面受到的限制也比较多。
