●与GPU不同的程序编制模型
Larrabee在software stack上的构造与以前的GPU也很大的不同。大部分的GPU在host CPU上以原生指令集进行编译时大部分为软处理,而Larrabee现在则是在自己的micro OS上运行。这个应该说与今后GPU发展方向是一样的。AMD公司已经通过在R600之后的产品上配备通用的微控制器,从而将驱动程序的处理的一部分转移到了GPU上。NVIDIA公司则时间也会考虑做出同样的尝试。因此在编程支持更先一步的Larrabee可以说已经取得了领先的优势。
Larrabee在程序编制模型上与可编程GPU也有很大的。那么这就需要准备“Single Program, Multiple Data(SPMD)”模型以外的程序编制模型。GPU的SPMD(Single Program, Multiple Data)模型在编写数据程序的话,程序自动会展开并且在SIMD硬件上以multi-thread方式运行。比如编写的是单像素处理的话,程序会自动对几百万个像素进行处理。而在程序方面则不需要识别GPU硬件的vector。而在运行方面(驱动程序),则通过SPMD单元内的SIMD进行控制。
而且通用的CPU SIMD硬件可以进行直接访问。经如x86系列CPUS于SSE等SIMD指令可以直接处理SIMD硬件。Larrabee则通过“Larrabee Native C/C++”能直接处理16 way的SIMD。Intel虽然公开表示Larrabee并不支持nativeISA,不过通过提供SPMD以外的程序编制模型来看确实有很大的不同。
不过如果必须编写Larrabee通用应用软件的话也没有明确限定程序为16way SIMD。C/C++以及以SPMD模型实现的程序也可以进行通用处理。比如将会支持的面向DirectX 11的以通用处理为主导的“DirectX 11 Compute Shader”。
Larrabee的software stack