与普通GPU不一样的设计架构
跟今天一般的GPU相比,Larrabee采用了不同的设计架构。该芯片将一些X86内核通过一条高速的环总线(ring bus)相互连接在一起,在每个方向都是512位宽。这些核心源自于英特尔的奔腾(Pentium)处理器,带有较短、顺序的执行流水线(execution pipelines)。每个内核可以同时执行多达四个线程,同时包含一个标量(scalar )和矢量单元( vector unit),后者每一个时钟周期可以执行16条32位运算。由于Larrabee从根本上来说是一种CPU架构,所有很多特性如context switching, preemptive multitasking, virtual memory和page swapping都已经集成在里面。而且由于线程管理是在软件中完成的,通过传统的并行化技术,延迟就很小了。
每一个内核包含一级指令缓存和数据缓存,同时芯片上也有二级缓存。二级缓存是由多个内核进行共享的,每个内核可以分派到256KB。跟GPU不同,缓存的一致性会在整个缓存体系中得到保持,因此,在处理器间通信( inter-processor communication )方面,可以让软件通过一个有效的机制来在应用线程之间共享数据。内存控制器(或者是控制器)也是在芯片上的,针对特定应用的功能单元也一样。
总的来看,一颗用于图形处理的Larrabee会用到很少的特定功能硬件。几乎所有的处理都是在X86内核上通过软件来完成的。在某些情况下,最明显的是图像纹理阴影处理上,英特尔增加了特定的功能硬件来增强性能。而且根据应用不同,如vertex shading, rasterization, pixel shading等,会采用不同的功能单元。因此,跟专用的硬件不同,通过通用芯片和软件,负载均衡会更容易实现,这也意味着当在晶圆上放置新的内核时,应用性能可以实现更加均衡地增长和扩展。
为了顺利进行图形领域,英特尔将支持DirectX和OpenGL ,以支持现有的应用。对于那些喜欢创新冒险的程序员来说,英特尔也会提供专门针对Larrabee的API ,这样,软件开发人员可以充分利用这一处理器的所有功能特性。对矢量指令集的访问也会通过C语言来实现。矢量单元会支持IEEE单精度和双精度浮点运算,同时也支持32位整数运算。