sduliding 2009-04-20
传统的x86架构
而Larrabee基于传统的x86架构,是一种可编程的多核心架构,不同的版本会有不同数量的核心,并使用经过调整的x86指令集,性能上将会达到万亿次浮点运算级别。值得注意的是,Larrabee中的处理核心为顺序执行核心,与CPU中的乱序执行核心不同。
Larrabee内部工作流程
在Larrabee的内部,每一个处理核心都可以发出2条指令,这种架构是继承了最初的奔腾处理器的设计。当然在老奔腾的基础上,INTEL的工程师们也作了许多修改和提升。首先Larrabee 架构具有衍生自双指令执行 Pentium 处理器的纯量管线,并采用具有完整连贯性高速缓存架构的短执行管线。Larrabee 架构提供显著的最新改良技术,如宽幅向量处理单元、多线程、64 位延伸指令,以及精密的指令预取功能 。这将促使可用之运算能力大幅提升,并能发挥程序设计师对英 特尔架构的熟悉度及容易入门的程序开发优势。同时Larrabee的执行流水线阶层非常的短,最初的Pentium处理器的执行流水线仅有5个阶层,这意味着拥有不错的运算效率。Larrabee 将包含数个支持绘图及其他应用程序的固定功能逻辑区块,这些运算单元被谨慎选用以平衡及强化每瓦效能,并对架构的弹性与可编程化能力有所贡献。Larrabee 的原生程序设计模式支持高度平行运算应用程序,亦包括采用非规则性数据结构的运算。这项特性将促使绘图 API 的开发、新绘图算法更迅速的创新,以及在绘图处理器上执行以现有个人计算机软件开发工具软件所实作 之真正的一般目的运算。
逻辑处理单元的分布
在算矢量处理单元的部分。Pentium由于设计年代久远,未曾出现过SIMD单指令多数据单元,而Larrabee在这方面有了巨大的飞跃,支持16路的矢量ALU算数逻辑单元。其运算效能非常强大,这16路可以同时执行32bit的浮点操作,这比INTEL所生产过的任何处理器都要强大许多。介于Larrabee本身的架构优势,这些矢量单元会更好的发挥其作用。INTEL的工程师们在指令的预取方面会为Larrabee做更多海量并行数据处理方面的优化。但究竟会对实际的效能产生多大的影响,目前仍是个迷。Larrabee所有超强的性能,都是基于这16路矢量ALU逻辑运算单元。请记住!这仅仅是Larrabee的一个核心,当它用于处理3D图像的时候,其内部还有很多的核心在并行工作。
此外,INTEL还对Larrabee架构指令集扩展进行了优化改进。比如16-Widevector指令,streamprocessing最佳化缓存控制指令等。另外64-bit指令也得到了支持。简单得说就是以x86基本指令集为基础加上适当的stream processing指令。另外据说当前的GPU原生指令集与CPU指令集非常相似。INTEL关于Larrabee指令扩展并没有进行详细介绍。不过估计可以有点,首先就是指令格式必须容易解码。x86指令解码多且复杂。因此为了解决这个问题,Larrabee的扩张指令最好是固定长度指令。
GPU也有L2缓存?!
由于基于Pentium 处理器架构,因此Larrabee同样沿用了完整的L1/L2缓存设计,这也是目前GPU所不具备的。
Pentium处理器架构
在L1高速缓存容量方面,其中指令缓存为32KB,L1数据缓存为32KB和,这个比各自为8KB的Pentium处理器相比提升了4倍。 同时每一个处理核心都具备256KB的L2高速缓存,未来Larrabee最初的二级缓存容量为4M,这意味着Larrabee最少有16个内核。
INTEL Core 2 Duo Hypothetical Larrabee
# of CPU Cores 2 out of order 10 in-order
Instructions per Issue 4 per clock 2 per clock
VPU Lanes per Core 4-wide SSE 16-wide
L2 Cache Size 4MB 4MB
Single-Stream Throughput 4 per clock 2 per clock
Vector Throughput 8 per clock 160 per clock
根据INTEL所述,这种256KB的缓存尺寸是专门针对Larrabee所设计的。一般来说在Larrabee进行OpenGL/DirectX渲染的时候,许多纹理都是基于64X64或128X128像素规格的,他们的色深一般为32bit,另带有32bit的Z缓冲,这些大约会消耗128KB的空间,同时Larrabee的处理核心还有128KB的空间可以加载其他的数据。
AMD RV770 NVIDIA GT200 INTEL Larrabee
Scalar ops per L1 Cache 80 24 16
L1 Cache Size 16KB unknown 32KB
Scalar ops per L2 Cache 100 30 16
L2 Cache Size unknown unknown 256KB