● 又是指令集,又是救世主
有了突破光栅化阻碍的希望,又有了在CPU上实现图形功能的曙光,INTEL要让CPU帝国重新将图形处理以及GPU纳入自己的版图还缺什么呢?答案是shader。我们前面提到了,由于X86先天的SISD的处理模式,其吞吐量和吞吐宽度都远不足以让X87指令集来承担处理shader所需要的浮点重担,如果没有shader的执行能力,一切统一的梦想都是空话。怎样才能解决这个问题呢?
shader需要强大的浮点能力
INTEL是一名商人,商人与学者的一个不同之处,就在于商人能够更敏锐的意识到一些“老东西”的价值,这次也不例外。INTEL所看上的东西,就是指令集。
SIMD与SISD的区别
我们在《融聚的未来在哪里 APU构架方向发展分析》进行过指令集方面的讨论。为了解决X87指令集单进单出的SISD吞吐形式对寄存器及运算器资源的巨大浪费,INTEL从Katmai核心也就是PIII开始引进了一系列的SIMD指令集,用来完成并行多指令数据的吞吐工作,这就是我们今天看到的SSE。
SSE指令集
SSE这种SIMD指令集的出现,在很大程度上解决了CPU浮点吞吐能力不足的瓶颈,经过对应的优化之后,SSE在很多场合甚至可以取得比X87快几十甚至几百倍的速度。如果通过改进现有的SIMD指令集,让它能够达到现有GPU的吞吐能力,甚至哪怕只是接近,传统图形领域shader的高浮点要求都将得到很大程度上的满足。当初被shader彻底架空的CPU将重获介入图形过程并发挥领导作用的机会,CPU帝国再度统一也就指日可待了。
SSE优化示例
但SSE也存在需要特殊优化以及编译器极度配合的问题,如果没有编译器,指令集在强大也无法发挥作用。好在INTEL的编译器开发能力有目共睹,为了应对图形环节中shader对CPU内部吞吐的适应力要求,INTEL开发了专门的编译器——shader compiler。shader compiler是INTEL专门针对常规的HLSL shader开发的一套编译系统,该系统与D3D的HLSL-Asm compiler相对应。通过shader compiler,程序中的HLSL shader可以被翻译成特定的Asm shader或者其他通用处理器可以直接执行的形式,这为CPU和指令集吞吐现有的常规图形指令扫除了最后一道屏障。
shader compiler工作示例
CPU帝国的建立到GPU对帝国的分裂,之间间隔了21年,而GPU独立发展的时间已经达到了CPU帝国整个寿命的一半,漂泊在外的时间太长了,是时候让它重新回到帝国“温暖”的怀抱了。
于是,INTEL吹响了侵攻图形界并收复失地,使CPU帝国再度获得统一的号角——Larrabee。
三秦IT网的官方微信:更多资讯请关注:三秦IT网官方微博