Larrabee的标量管线(scalar pipeline)衍生自双指令执行(dual-issue) Pentium处理器,这种处理器采用一种阶层短、且造价低的执行管线。Larrabee架构支持最新改良技术,如宽幅矢量处理单元(wide vector processing unit, VPU)、多线程、 64位延伸指令以及精密的指令预取功能 (pre-fetching)。
Larrabee核心可全面支持Pentium X86指令集,所以也可以在目前的操作系统内核或者其他应用代码上运行。此外,Larrabee核心还新增了一些标量指令集,比如bit count(比特制)以及bit scan(比特扫描)指令集,它可以在一个寄存动作中对下一个比特集进行寻址。
除此之外,Larrabee还为explicit cache control增加了一些新的指令集和指令模式,包括用来把数据预先存储到L1或者L2高速缓存中的指令集,以及用来降低cache line(Cache line是Cache和Memory之间数据传输的最小单元)权重的指令模式。比如说,这些指令集可以让流数据清除缓存中已经存在的数据。在这些数据被清除之前,Larrabee将会标记每一个流体cache line。这些缓存控制指令同时可以让L2高速缓存充当scratchpad memory(暂时存储器)的角色,从而维持整个架构的连贯性。
在单个Larrabee核心内,(数据)通过多线程同步进入共享存储器是非常容易做到。由于单个核心内的线程共享本地L1高速缓存,所以L1高速缓存内的单个(atomic semaphore)原子信号量的读取是足够的。相比之下,在多核心之间进行这样的同步操作就要难的多。首先是非常耗成本,因为这种操作需要处理器间的lock 指令(inter-processor lock)。也就是说,在多核心CPU架构中让数据通过多线程同步进入共享寄存器是非常困难的。
由于某些可同时协作执行某任务的指令集很难被发现,所以多指令执行CPU核心在性能方面通常会有所损失。通过模拟测试我们发现,Larrabee的双指令执行解码器的效率还是比较高的。其主要(primary)指令管线和辅助(secondary)指令管线的分工非常明确,这样的话,在执行离线分析时,程序编译者将会比无序指令的编译者更加自由。
主要管线可以执行所有的指令集,对于程序编译人员而言无疑就最大程度降低了两种管线指令组合时产生的问题。辅助管线可以执行大量标量X86指令集的子集命令,包括加载、存储、简单的ALU操作、分支、缓存操作以及矢量存储。由于辅助管线相对较短、较便宜,所以辅助管线在每个时钟周期内的双指令执行报错时造成的功耗以及其他损失是非常有限的。通过我们的分析,对于程序编译人员而言,调用双指令执行指令就相对要简单些。