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 並行運算架構的一個延伸。

### x86「IA」核心

與當時以及現時一般的圖形處理器不同，一般的圖形處理器是採用串流處理器作為核心運算單元 / 彩現器。而 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」。

## 參考

## 外部連結

* 開源 GPU 社群（簡體中文）