相信很多朋友很早就听说过Larrabee大名,但是大部分人对于Larrabee的了解仅限于“它是Intel的独立显卡方案”、“它是基于老奔腾架构”等等,而对于Larrabee的详细情况确实鲜有人知。那么Larrabee到底是什么呢?我们借此机会,就对Larrabee问个刨根揭底。首先,我们从Larrabee核心的基本架构开始说起。
Larrabee内部基本逻辑架构
Larrabee是按照有序CPU处理核心的多指令集而设计的,得益于内建的宽幅矢量处理器(VPU)单元,这种有序CPU核心运算性能得到了加强。Larrabee内部核心通过高带宽网络相互连接,在这个网络里,包含了固定功能逻辑芯片、内存I/O接口以及其他必要的I/O逻辑芯片在内的多种组件。至于核心与哪个组件相连,主要取决于Larrabee执行何种应用。比如说,如果Larrabee执行GPU应用的话,Larrabee内部核心将会与PCIe相连。
下图描述的是Larrabee与Intel Core 2 Duo处理器规格之间的对比情况。其中,中间一列表述的是Intel Core 2 Duo无序CPU的性能峰值,而右侧一列正是这款我们要向大家介绍的基于Pentium架构的Larrabee。
Pentium架构于1992年首度亮相,算得上是业绩经典CPU,该处理器采用双指令执行指令集。Larrabee虽然基于老旧的Pentium处理器核心,但是经过升级之后,Larrabee具备了可支持4线程同时运算的能力,已经变成了一种16宽幅矢量处理器单元。上图最后两排黑体字描述的是可以被单个CPU、每个时钟内执行一次的非矢量指令集的数量以及每个时钟内被执行一次的矢量操作的总体数量。值得一提的是,这两种配置所需的die面积以及功耗基本相同。
具体来讲,虽然在一个单指令流的程序中,10核心有序架构(Larrabee)的峰值每个时钟周期可2次操作,仅为2核心乱序架构(Core 2 Duo)的一半,但是在两者die面积以及热设计功耗基本相同的情况下,10核心有序架构的矢量峰值却是无序架构的20倍,而且由于Larrabee的宽幅矢量处理器可以支持积和熔加运算(fused multiply- add, FMA),而Core 2 Duo所采用的SSE指令集不可以,所以10核心有序架构的FLOPS(浮点运算次数,floating-point operations per second)是2核心无序架构的40倍。事实上,以上所说的10核心有序架构处理器还算不上是Larrabee,事实上,Larrabee内部架构更复杂。
以上所说的10核心有序架构并不等同于Larrabee架构。为了方便进行对比,以上所说的有序核心设计采用的是与无序核心(包括非固定功能绘图逻辑芯片在内)相同的操作以及时钟率。这个简单的对比告诉我们,一个具有简单有序核心的宽幅VPU可以让平行运算达到惊人的运算密度,Larrabee的设计灵感正是源于此。
下面我们着重介绍Larrabee架构的主要特点:CPU核心、标量单元和缓存控制器指令、矢量处理器、进程间的环形网络以及在固定功能逻辑芯片的执行过程中是如何选择的。