XX
1D+4D廉颇老矣 AMD毅然决然VLIW4
● VILW5规模大但不利于通用计算—代表产品:RV870(HD5000)
VLIW中文名全称是“超长指令字(Very long instruction word)”,代表一种可以利用指令级并行优势的计算体系结构。如AMD从HD2000系列一直到HD6800所用的1D+4D SIMD架构便称为VILW5。在通用计算GPGPU普及之前,这种从传统架构中提取出的设计适应的很好,尤其是在DX9顶点着色中。
但是这种核心架构非常依赖于指令级并行计算,最理想的情况就是5个指令能在每个时钟周期里,每个ALU上一起调度执行。遗憾的是在DX10/DX11下这种概率非常低,计算指令并不总是4D的,也有很多1D、2D、3D的情况,一旦4D矢量单元收到了这类较短的指令,流处理器单元便只能发挥一部分能力,其余部分成为浪费。由于计算指令最终是由驱动程序中的编译器发出,所以VILW5模式同时也增加了驱动编写的难度,它必须尽可能3D程序中那些较短的指令重新编排打包,以提高流处理器资源的利用率。
GPGPU通用计算现在已经开始大行其道,Windows 7、DX10/11也正在将DX9挤下历史舞台。根据AMD的内部数据,VLIW5架构的五个处理槽中平均只能用到3.4个,也就是在游戏里会有一个半浪费了。显然,DX9下非常理想的VLIW5设计已经过时,必须缩短流处理器单元,重新设计里边的逻辑流处理器布局。
● VILW4提高了SIMD效率,适应未来需求—代表产品:Cayman(HD6900)
VLIW4相比于VLIW5最明显的区别就是去掉了体积最大、可同时处理普通整数/浮点操作和超越操作的第五个逻辑流处理器:特殊功能T单元(SFU)。这样每个流处理器单元中可以一次性处理的普通整数/浮点操作数从五个减少到四个,原本SPU负责的指令(如超越指令)可由其中三个流处理器合并起来代替。
现在四个流处理器性质相同,编译器不需要考虑它们和T的差别,使资源调度更加简单,转化为更高的效率。
VLIW5变为VILW4的好处还不止于流处理器单元内部,从宏观角度上看,此前用于T单元的核心面积可以用于设置更多的SIMD引擎。HD5800的R870有320个流处理器单元,而HD6900的Cayman增加到了384个,核心面积只提高了59mm²,晶体管数量为26.4亿,随之可并行执行的线程数量、纹理单元数量等都相应提高。
不过鱼和熊掌不可兼得,一种架构基本只能为一个时期的3D应用形式做最优设计,VILW4的转变难免不会有损失。HD6900和HD7000系列可能将不会像以前那么高效地处理以VILW5指令为主的游戏,但这种游戏大多数基于DX9甚至更低阶的DX环境,运行速度的绝对值已经相当高了,即便帧率下降一点也丝毫不影响游戏体验。另外,因VILW缩短,驱动程序编译器必须也跟着转变,AMD通过HD6900试水逐渐熟练,现在HD7000系列的技术应该更加成熟。
网友评论