Intel Larrabee

英特尔Larrabee，是英特尔公司的通用图形处理器（GPGPU）的开发代号/核心代号。有别于英特尔当时的英特尔GMA系列整合式显示核心，「Larrabee」显示核心是英特尔继Intel 740以后又一独立式显示核心，研发团队、开发概念等都与英特尔的整合式显示核心的完全不同。原计划最迟于2010年作为消费级图形处理器产品推出市场，但由于多次的「跳票」、研发进度不如预期、图形效能不佳、功耗过高等因素，最终英特尔于2010年5月宣布取消发布相关显示卡的计划，而「Larrabee」研究计划亦无后续消息。但是，同样是2010年，英特尔公布的的Intel MIC多处理器架构中继承了大量由「Larrabee」研究计划而来的设计元素，最大的区别在于前者专注于为高效能运算而设计的多处理器协同运算，后者是作为图形处理器（GPU）而生。

**缘起**
英特尔最后的独立显示卡产品是I740。后来英特尔的平台化策略中，I740显示核心被整合于晶片组中的北桥晶片，成为Intel的一系列整合式晶片组产品。2006年以后，ATI/AMD和NVIDIA都推出了相关的GPGPU产品。英特尔为保持优势，遂计划重新推出独立显示卡产品，而核心架构与英特尔的整合式显示核心和超微、辉达的一般显示核心不同。

**架构**
英特尔的Larrabee图形处理专案完全有别于现时所有图形处理技术（包括英特尔自家的整合式显示核心），不同于超微以及辉达一直以来使用的仅有图形运算指令的流处理技术，而是基于自家的x86架构，指令方面除了拥有部分新的图形处理指令以外保有大量的x86指令，使得Larrabee拥有比竞争对手更为灵活的可程式化特性以及更为强大的通用运算处理能力，算是英特尔发展多核心x86并行运算架构的一个延伸。
Intel Larrabee的核心布局略图

**x86「IA」核心**
与当时以及现时一般的图形处理器不同，一般的图形处理器是采用流式处理器作为核心运算单元/渲染器。而Larrabee采用x86架构的，称为「IA」的处理核心，概念上就是传统CPU核心，这些处理单元就是传统意义上的着色器或核心运算单元，不过就单个运算单元而言，一个「IA」核心的资料吞吐量要比单个流式处理器/算术逻辑单元要高得多。就单个核心而言，对比当下的CPU核心，「IA」核心也只是微核心。
奔腾P54C核心的架构图
事实上，每个「IA」核心基于旧有的首代奔腾P54C核心改造而来，而非当时最新的Nehalem架构处理器核心，英特尔认为，当年仅具有五级流水线且仅能依序执行的奔腾P54C核心，相比拥有14级管线的拥有复杂的乱序执行结构的Nehalem，更有图形化改造潜力，而且奔腾核心即使经过改造使核心规模扩增，透过晶片制程工艺的发展改进，多x86核心更易于达成。预计将采用45奈米甚至是32或22奈米。2008年8月，英特尔称Larrabee晶片内的核心数量上可以随意增加或减少，以8的倍数改变，而且效能在8至48核心数量范围内基本上成线性关系，英特尔官方报称浮点性能可达到TeraFLOPS级别。所有的「IA」核心，运作频率会是2.0GHz。Intel声称，这个时脉下32个「IA」核心时的显示核心运算效能可以达到2TeraFLOPS。处理器仍采用顺序而非乱序执行架构。整个「IA」核心内部是多指令流多资料流（MIMD）形式布局，两个整数算术逻辑单元使用各自的指令发射端，而16个ALU的浮点单元则以单指令流多资料流（SIMD）的形式共用一个指令发射端。
英特尔公布的「IA」核心架构图
英特尔在旧有的奔腾P54C核心上，新增执行绪分派单元、二级快取、矢量运算单元及其暂存器、超执行绪等、删减前段汇流排（FSB）改以环形汇流排节点替代。即使是既有单元，也作了大量的修改变更。因此Larrabee并非单纯是奔腾P54C改进。

**浮点运算**
新增512位元SIMD矢量单元，由16个/宽幅，32位元的矢量ALU组成，共用一个指令发射端，相当于现在CPU核心内部的浮点运算单元，但对比当时的Core 2 DUO仅有的8宽幅的32位元浮点运算单元每核心每时钟周期仅能进行8次单精度浮点运算，各「IA」核心每时钟周期能进行16次单精度（32位元）浮点运算。若以Larrabee拥有10个核心去计算，每个周期一共可以支援160个单精度矢量运算；Core 2 Duo双核心处理器只可以支援16个。所以，Larrabee的浮点运算性能比传统的处理器强。核心亦支援一套新的矢量指令集，用作矢量记忆体、整数和浮点计算。浮点运算方面，支援IEEE标准的单双精度。
与NVIDIA的GeForce 8相似，每一个矢量运算单元在一个周期中，只会运算一个颜色数据，务求提升单元的使用率。不过，在数据流通方面，一切都是以代码形式出现。而传统的显示核心，一般都会使用专门的逻辑单元，去管理资料流通。

**整数运算**
但在标量/整数数据中，主流处理器始终较有优势。Core 2 Duo是单核每周期处理四个，Larrabee只是单核两个。二级缓冲记忆体方面，每一个核心将会拥有256KB。Larrabee并非是单纯建基于旧的Pentium核心，指令解码除了奔腾原有的指令以外，新增Larrabee专用纯量指令以及新的x86指令，纯量运算单元也加入对新指令的支援，在每一个纯量单元中，由两个负责纯量运算的算术逻辑单元组成，组成一个主要和辅助指令执行管线，拥有各自对应的指令发射端。一个可以处理x86或新引入的Larrabee标量指令集，一个用来处理简单的ALU计算或者x86指令集的子集命令。

**超执行绪**
Larrabee还会有特殊的超执行绪特性，支援单核执行四条执行绪。为支援单核四路超执行绪技术，矢量和标量单元各自拥有4组暂存器。

**快取架构**
原有的一级资料和指令快取均由8KB扩增至32KB，其位宽也扩增至512位元；二级快取容量为256KB，每核心独占；记忆体寻址能力亦达到64位元，与现代的处理器相若。

**图形引擎**
英特尔曾经聘请了专注光线跟踪的研究员，预计Larrabee显示核心可以支援相关技术。 在DirectX和OpenGL中，仍然会使用栅格化渲染，但将以软体实现。而且，这种以软体方式实现的光线追踪、光栅化等作业将简化程式码。
不过传统的纹理/材质的采样、解压缩、混合等作业仍由固定功能的纹理材质单元处理。但纹理/材质等快取则是以x86资料的形式暂存于IA核心内的二级快取上，须进入「IA」核心存取，因此，纹理单元亦具有虚拟位址转换特性来存取这些资料。

**图形程式介面**
Larrabee可以同时支援DirectX和OpenGL。由于是通用核心，亦可以支援物理加速。图形API方面，它支援主流的 DirectX和OpenGL，而Intel亦会推出自家的标准。目的是充分发挥多x86核心的性能。
消除混叠技术方面，除了传统的MSAA等抗锯齿技术，还会实作利用CPU进行的形态过滤抗锯齿（MLAA）。MLAA是一种后期抗锯齿技术，虽然由英特尔最先提出，但最先实作此技术的是AMD，AMD在发布Radeon HD 6000系列显示核心时率先引入，后来Radeon HD 5000也予以支援。

**通用运算以及硬体加速**
支援x86指令集、新增Larrabee指令集，使得普通的程式语言也能方便调用GPU以实现GPU加速，非常明确的GPGPU的设计方向。不同于对手辉达和超微需要专门的应用程式介面，而且还需要额外的学习过程方能方便使用。
针对影像方面，Larrabee显示核心内有专门的影像处理单元。

**汇流排以及记忆体介面**
Larrabee显示核心内部使用环形汇流排，与ATI的Radeon R600相似，但每个方向是512位元（双向1024位元），而显示记忆体与其控制器的连接仍采用CrossBar的形式，而Radeon R600是显示记忆体和其控制器之间使用单向256位元（双向512位元）的环形汇流排。 各「IA」核心、显示记忆体控制器、图形引擎、PCI-E介面等亦使用此总线互相通讯。系统介面为PCI-E 2.0/2.1 x16。记忆体将使用GDDR5显示记忆体，但也会相容GDDR3、GDDR4。Larrabee核心内部还会实现虚拟记忆体共享，可以使CPU存取显示记忆体中的资料，而GPU也可存取主记忆体中的资料。

**电源管理**
Larrabee面世时的产品并没有配备任何节能技术，原来英特尔x86 CPU上常见的C1E/EIST等节电技术并没有移植到「IA」核心上。英特尔声称第二代的Larrabee显示核心将会加入一些节电技术。

**制造和合作推广**
英特尔表示，Larrabee的晶片届时会采用自家的32奈米或22奈米制程，尽管2009年时发布的工程样品仍然使用45奈米制程，并且表示显示晶片的制造不会外包给台积电等厂商，但显卡的制造则效仿辉达和超微的做法，交给合作伙伴厂商来完成。2008年时英特尔也透露已经与一些显示卡制造商进行过洽谈，甚至有传言指索尼也在英特尔的积极游说下曾经打算在研发PS4时使用Larrabee专案，尽管索尼和英特尔并没有直接承认此事，但PS4的确改用了x86架构处理器，放弃POWER架构的Cell处理器以便于一般电脑游戏转为游戏主机电子游戏。除此以外任天堂的Wii U在开发初期也有类似传言，微软也不例外。

**计划状态**
原预计「Larrabee」会在2008年第三季度推出样本，在2009年正式发布，但实际上2009年才有工程样品，发布日期也推迟到2010年，但最终还是在2010年5月被突然宣布中止。
2009年11月4日，英特尔官方宣布首代「Larrabee」晶片不会有消费级图形核心产品发布。「Larrabee」最初发布时也只有一个软体平台，在这个消息发布后不久，尽管Larrabee项目本身并未取消，但已被转为一个图形处理和高效能运算的开发平台，变成纯粹的研发用途。英特尔对此的理由是，由于Larrabee的硬体和软体开发进度都比预期有所落后，英特尔需要根据目前的状况来作出未来的战略调整，英特尔亦表明在2010年「Larrabee」计划会作进一步的更新。
但其实在2009年的国际超级计算机大会中，英特尔已经只字不提Larrabee。而英特尔曾经展示的Larrabee样品，单精度浮点运算性能只有1TFlops。与此同时相对应的是，AMD的Radeon HD 5970的单精度浮点性能已经达到4.64TFlops。而采用x86指令集架构作为图形编程架构，硬体更要兼容旧有的一系列图形标准，如Direct3D、OpenGL等。核心架构设计对于图形处理而言过于复杂，相信亦是Larrabee项目改变的主因之一。在2010年9月，英特尔承认Larrabee架构「构想美好，但不现实」，它在图形处理方面存在缺陷，所以就算有成品出现，不仅图形效能都会不佳，连带影响浮点运算能力，而且功耗亦会比较高。利用软体实现一切过往硬体实作的功能，包括传统上的光栅化，效率将会很低。
由「Larrabee」专案中直接推出图形核心的计划于2010年5月被中止。2010年5月25日，英特尔通过官方网志宣布「Larrabee」不会作为图形处理器发布，但会推出与高效能运算相关的产品和辉达的Tesla运算加速卡竞争。

**后续专案**
其后英特尔还首度承认MIC专案其实就是Larrabee专案的后续完善版本。
在Larrabee专案取消以前，除了Larrabee外，英特尔还有若干个其他类似的Many-Core项目，例如POD。Intel曾经推出过「Knights Ferry」，当时被认为属于Larrabee的产品线。不过，它被用来面向软体开发人员。目的是让他们充分了解Intel的多核心架构。「Knights Ferry」的核心频率是1.2GHz，拥有32个x86核心。支援特别的超执行绪技术，单一核心能模拟成四个核心。
Larrabee显示卡计划被取消后，同样是在2010年，英特尔MIC多处理器架构（「众核」架构）随即发布，更将此前的「Knights Ferry」专案也收归其中，尽管该架构亦沿用Larrabee专案的诸多设计元素（甚至连图形处理的电路单元也一并保留），但不再作为图形处理器使用，而是以实作高效能运算相关的多处理器协同运算为目的，在晶片上整合远比现行x86处理器要多得多的x86处理器核心。该新专案的首款工程样卡即是原有的「Knights Ferry」，仍采用45奈米制程；而实际正式发售的产品是使用22奈米制程制造，开发代号「Knights Corner」，拥有50个x86核心，已于2012年8月推出的Xeon Phi协处理器（运算加速卡），面向高效能运算市场，为主处理器提供运算加速。而2014年，英特尔公布第二代Xeon Phi，核心代号「Knight Landing」，采用不同于上一代的、基于Silvermont微架构的处理器单元设计，但仍然有AVX-512等上一代Xeon Phi采用的「Knights Corner」核心的特性，采用14奈米工艺制造，并且不再保留用于图形运算的电路单元，在2015年3月正式对外展示了相关硬体以及其演示。

**评价及影响**
辉达CEO黄仁勋经常对Larrabee大造文章，批评Larrabee的种种不合理之处，并称英特尔在IDF上认为「Larrabee的出现会使显示核心将在两到三年内消失」这番消息是不切实际的「笑话」，认为Larrabee的效能在老旧的x86架构的拖累下不可能有出色表现；也批评英特尔没能在可程式化和固定功能上作出合理平衡，过分强调可程式化，而图形处理任务过程当中并非全部都可以透过可程式化来实作，即使有但效能也会非常糟糕；还认为英特尔此举纯属对此故弄玄虚，企图利用幻灯片上的纸面资料忽悠图形处理行业，即使Larrabee有产品也只是急于求成的不良品。对这些批评，英特尔戏称他是Larrabee的公关经理，而且不带薪酬。
一些媒体还对英特尔利用x86核心作GPU存疑，认为英特尔仍然没能将图形处理放在首位，因为对于常用的图形程式介面诸如DirectX以及OpenGL都没有硬体上的支援而只是软体支援，即使是英特尔声称要开发自家的图形API，其实也不过是充分利用多x86核心而已，相当于多核心优化，由此看出英特尔研发Larrabee的目的更多地是照顾通用运算而非图形处理。也有媒体认为，英特尔利用自己专长的x86架构来开发显示核心纯属偷懒且急于求成之举。
优良的架构亦需要驱动程式的配合，但过往英特尔的整合式显示核心，由于驱动差，很多原本硬体支援的功能都不被支援，立体图像的质素亦较差。所以，纵使英特尔希望与不同的显示卡厂商合作推出「Larrabee」显示卡，但都只持观望态度。英特尔也承认，在高效能图形驱动程式的编写能力和经验上不如NVIDIA和AMD。为了提高厂商和公众的信心，英特尔特意强调Larrabee的驱动程式开发团队是独立于其IGP产品，而且，Larrabee的驱动程式编写将作为一个重点来攻关。
「Larrabee」专案的中止使得索尼决定以AMD的中央处理器和显示核心产品作为PS4游戏主机的CPU和GPU。日本媒体Impress Watch认为英特尔的Larrabee移植至游戏主机困难重重。
尽管Larrabee专案后来被中止，但是对辉达以及超微研发图形处理器的理念亦产生不少影响。NVIDIA在2010年推出的NVIDIA GeForce 400系列时所用的「Fermi」架构便参照Larrabee的一些设计概念，将GPU内部模组化，每个模组内部下辖多组流处理器（称为「SM」单元）以及一些特殊单元，构成一个称为「GPC」的模组，除了没有独立的记忆体控制器以及显示输出单元，每个GPC模组相当于一个小型GPU，各GPC模组的资料共用由新增的全域二级快取实作；AMD在2011年底推出的AMD Radeon HD 7000系列时所用的「次世代图形核心」（Graphics Core Next）架构更是大量参照Larrabee专案的设计概念，将一些流处理器以及一些指令分派单元合作一个模组，称为「CU」。

**参考**

**外部连结**
  开源 GPU 社区