● Cayman图谋线程处理器改进
我们经常把GPU的Shader单元称为流处理器,这一概念是在Geforce 8时代开始的,后来因为AMD在Radeon HD 2000时代也提出了流处理器的称谓,但是其流处理器的计算方式实际上是VLIW Core单元内部ALU阵列数量,所以线程处理器应该是对VLIW Core单元最贴切的形容。
R600开始每个VLIW Core是分“1大4小”,即一个全功能SP单元和4个仅能执行乘加运算而无法执行连乘运算的部分功能SP。R600为每个US配备了1个发射端,所以如果要保证指令吞吐不受限制就通过VLIW,也就是超长指令打包的形式将若干个短指令打包在一起。理论上可以做到1个4D+4个1D打成一个包一起丢进VLIW Core,这是VLIW结构的优势所在。
R600到R800统一渲染流处理器架构
由于内部的5个1D ALU共享同一个指令发射端口,因此宏观上R600应该算是SIMD(单指令多数据流)的5D矢量架构。但是R600内部的这5个ALU与传统GPU的ALU有所不同,它们是各自独立能够处理任意组合的1D/2D/3D/4D/5D指令,支持Co-issue(矢量指令和标量指令并行执行),因此微观上可以将其称为5D Superscalar超标量架构。
不过在GPU进化发展的过程中AMD看到了这种VLIW Core线程处理器的两个核心问题:
首先是打包方式容易造成拥堵;
其次是5个ALU阵列构成一个线程处理器还不是最为灵活和经济的选择。
AMD历代着色器演进
VLIW打包方式可以最大限度的避免发射端不足的问题,可是如果这个包里面有一个1D指令的结果很不凑巧是同一个包里另外一个1D指令的初始条件,效率就非常低下了。同样的2个关联1D,R600需要打包—在所有寄存器中转一圈,运算第一个1D同时第2个1D挂起等待,从寄存器出来解包,把第一个1D的结果和第二个等待的1D都释放进LDS,等待再次打包,打包完成进入线程处理器计算。
但是面对现实我们看到要想解决VLIW打包方式只有弃用VLIW结构,AMD目前的GPU资源充裕度特别是线程处理器发射端显然不能满足这一要求,解决的办法转移到了在线程处理器内部下功夫——VLIW4线程处理器应运而生。
三秦IT网的官方微信:更多资讯请关注:三秦IT网官方微博