英特尔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并发运算架构的一个延伸。
与当时以及现时一般的图形处理器不同,一般的图形处理器是采用流式处理器作为核心运算单元/渲染器。而Larrabee采用x86架构的,称为“IA”的处理核心,概念上就是传统CPU核心,这些处理单元就是传统意义上的着色器或核心运算单元,不过就单个运算单元而言,一个“IA”核心的资料吞吐量要比单个流式处理器/算术逻辑单元要高得多。就单个核心而言,对比当下的CPU核心,“IA”核心也只是微核心。
事实上,每个“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)的形式共享一个指令发射端。
英特尔在旧有的奔腾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”。