● 不再拘泥于关联性
本次Graphics Core Next最引人瞩目的改进,就是AMD放弃了自R600以来一直坚持的VLIW打包吞吐模式。这个改动可以说彻底撼动了AMD GPU构架发展的基础。放弃VLIW不仅意味着GPU领域超长指令与普通指令分庭抗礼时代的终结,普通SIMD吞吐模式统一江湖,更标志着AMD正式“重归”GPU高性能计算应用领域。
Cayman的VLIW构架
长期以来,VLIW超长指令一直都是AMD提升体系吞吐能力的重要手段。通过将无关联性的若干指令以超长指令的形式进行打包,AMD可以以很简单的外部资源环境来供给多个ALU团簇,更少的发射端资源等所带来的晶体管优势是巨大的,这使得传统的RV构架每一次更新几乎都以暴力释放运算资源为基本特征。
VLIW虽然可以拥有极高的吞吐量,但其天生的对指令无关性的要求却成了其最大的软肋。无论图形领域还是通用计算设计的数学领域,条件分支的应用都能带来更好的性能以及更加方便灵活的编程方式。如果构架采用了VLIW模式,编程端就要大费周章的为代码找齐无关性,而且实际上绝对的无关性是不存在的,因此最终还是会有一定的条件分支流入构架中,VLIW构架执行这些条件分支类得程序的效率是非常低下的。假定一个VLIW包中的指令B需要指令A的运算结果作为起始条件,这种VLIW包对于所有的传统RV构架几乎都是噩梦。有介于VLIW天生的缺陷,AMD放弃它也可以说是意料中事。
在Graphics Core Next中,AMD重新使用了传统的原教旨SIMD吞吐模式,构架以CU为单位进行CTA级得吞吐,当CTA进入CU之后,CU内部的线程仲裁机制会进一步将CTA拆解成wavefront,vector ALU将不再要求指令遵循严格的无关联超长字节属性,wavefront拆解出来的指令将可以直接以原始形态进入vector ALU内部执行。
Graphics Core Next对吞吐模式的改进以及对VLIW的撅弃,不仅大大的提高了ALU的执行效率,尤其是条件分支的执行效率,更简化了对编程及编译器端得要求,这不论是对通用计算还是图形领域来说都是个好消息。