接下來今天要談的是 Intel Nehalem 架構,或許 Nehalem 這個名字並不是那麼為人所知,但如果說他是第一代 Core i7 處理器的話相信大家就認識他了,這個架構在近十年內的 Intel x86 處理器演進中佔有幾乎與 Core Microarchitecture 同等重要的地位,今天我們所見到的 Sandy Bridge、Ivy Bridge、Haswell、Broadwell 與最新的 Skylake 上有很多特色都奠基於此代。
題外話,Nehalem 是當年 Pentium 4 的主導研發團隊-奧瑞岡州研發中心設計的,奧瑞岡州研發中心在當年 Netburst 失敗,被本來屬於旁支的以色列海法團隊打到趴在地上之後已經忍很久了 XDDDD
第二個 Tick-tock 循環
從 2006 年 Core 架構開始確立的兩年一循環,單數年大改架構,雙數年微縮製程的 Tick-tock 規律,在 2008 年正式迎來了第一個架構大改,也就是本篇要談的 Nehalem,Nehalem 這個代號對 Intel 來說有很大的意義,因為它曾經被用於指稱 Netburst 架構當年預想的理想結局-「10 GHz 版 Pentium 4」,當然最後這個計畫如同你我所知道的,根本還沒成形就胎死腹中,而同樣的代號在幾年後再次成為 Intel 核心產品的開發代號,想必背後是有相當的意涵存在的。
學走 AMD 的精髓
Nehalem 這一世代還蠻有趣的,基本上除了將一些當年 Netburst 擁有的技術特性移植到 Core 架構上之外,還有很大一部分是「模仿 AMD 的做法」,不過 Intel 抄歸抄但最後效果卻很好,AMD 架構的缺點則幾乎都沒有出現在 Intel Nehalem 上。
整合記憶體控制器 (IMC),系統架構大翻新
以往的 Intel 系統架構大致上是長這樣的 (以 X48 + Core 2 處理器為例),其實傳統的電腦架構也都是如此,中央由處理器、北橋晶片、南橋晶片組成,北橋負責頻寬需求比較高的記憶體與顯示卡,頻寬需求比較沒那麼高的周邊設備則由南橋晶片負責 (詳細的說明之後的章節會有):
至於下面這張圖則是 Nehalem 的系統基本架構圖 (搭配的晶片組是 X58 與 ICH10),從中你可以很明顯的發現,DDR3 記憶體除了從雙通道改為三通道 (伺服器級系統可以到四通道,消費性市場中低階型號則維持雙通道) 之外,最明顯的差異就是改成跟處理器直接連接了,就像 AMD 的 K8 與 K10 架構那樣,是的沒錯,Nehalem 學 AMD 把記憶體控制器整合到 CPU 裡面了 (Integrated Memory Controller, IMC)。
將記憶體控制器整合到處理器的好處自然是明顯的,如同過去的章節也說過,在電路板上的實體距離其實對於傳輸速率是有很大影響的,因此記憶體插槽才會必定設計在處理器或北橋晶片旁邊,快取記憶體也從主機板移到處理器晶片旁,後來更直接整合到處理器裡面,這些改變的目的就是為了盡可能縮短之間的距離以加快傳輸效率。
不過也因為記憶體控制器被整合到 CPU 裡面,所以 CPU 本體的針腳數突然增加不少 XD,腳位直接從原本的 775 暴漲到破千等級 (左起依序為 LGA1366、LGA1156、LGA775)。
Intel QuickPath Interconnect (QPI)
基本上這東西與 AMD 早在 K8 就開始用於處理器與北橋之間的 HyperTransport 匯流排,同樣是點對點、多用途的晶片互連架構,以 Intel 官方的說法是「跟 AMD 不約而同」的結果 (Intel 官方宣稱在 2004 年就已經開始研究發展 QPI,而 Nehalem 是第一款實作 QPI 的產品)。
以往多 CPU 系統的設計都是如上圖這樣的作法,所有 CPU 都與北橋 (MCH) 連結,記憶體也直接連結到北橋上,但這樣衍伸出來的問題是當處理器的性能越來越強大、數量越來越多的時候,MCH 的處理能力就會成為多處理器系統上很嚴重的性能瓶頸,而一開始廠商想到的方式是讓 MCH 的通道數增加,但確有造成 MCH 成本提高、能夠增加的數量有限的問題,所以採用直接連結的 QPI 或 HyperTransport 被發展來取代 FSB 可以說是必然的結果。
至於上圖右側則是四顆使用 QPI 連結彼此與北橋晶片的 Nehalem-EX 架構圖,可以看出當組成四顆 CPU 的系統時,每顆 CPU 會需要具備 4 條 QPI 通道 (3 條用於互聯,1 條用於連絡北橋),至於比較常見的雙 CPU 配置 (上圖左側) 則需要 2 條 QPI 通道 (1 條用於互聯,1 條用於連絡北橋)。
而 QPI 這東西基本上可以用於很多地方,目前已知曾經實作於 Intel CPU 中的就有多 CPU 之間的彼此互聯、CPU 中 Core (運算核心) 與 Uncore (核心以外的周邊電路) 之間的溝通、CPU 與北橋之間的連結等,值得注意的是 Nehalem 架構的高階款 (例如 Core i7 Bloomfield、Xeon 系列中高階款等) 也是目前為止唯一在消費性市場產品上有使用到連外 QPI 通道的世代,之後 QPI 基本上不再用於 CPU 與晶片組之間的連接,基本上都只使用 DMI 匯流排作為處理器與北橋晶片連結的管道。
與 AMD K10 類似的快取結構
以往 Core 架構是採雙層快取,L1 為核心各自獨立,L2 則為全體運算核心共享,稱之為 Intel Smart Cache,而進入 Nehalem 世代之後新的快取階層設計是三層,與 AMD K10 類似,L1 與 L2 都採核心各自獨立,而 L3 則是全體核心共享快取,且與 AMD K10 有類似的大型化 L3 快取現象。
Nehalem 世代的處理器每個核心都具有 32 KB 的 L1 指令快取、32 KB 的 L1 資料快取、256 KB 的 L2 快取 (延遲方面也因為 L2 快取被搬進核心裡面而比 Core 2 架構來得更低很多),至於 L3 快取至少 4 MB,最大則可以達到 30 MB。
模組化設計帶來可擴展性,平台分流於此確立
還記得我在「電腦達人養成計畫 2-13:近代中期 CPU 發展史 (二) Intel Core 架構」曾經提到過的「可擴展性」有兩個層次嗎?其中 Core 架構時期只做到第一層,也就是使用「複製」的方式來延展處理器的結構,例如將雙核心的 Conroe 延展兩份之後再經過少許修改就能造出四核心的 Kentsfield、把 Conroe 的 L2 快取折半就變成低階版本的 Allendale,這讓 Intel 的開發時程縮短很多,同時也讓消費者更能預測各等級 Intel 處理器的表現大概會落在哪邊。
而進入 Nehalem 世代之後 Intel 在開發時採用的思維更加前進,使用「模組化」的方式來設計各個功能單位,在製成成品的時候就像堆積木一樣可以瞬間造出好幾個版本,Intel 在進行模組化的過程中將處理器區分成 Core 與 Uncore 兩大部分,其中 Core 就是運算核心的部分 (除此之外還包含各自專屬的 L1、L2 快取),根據產品規劃的需要可以直接鋪出需要數量的運算核心,至於 Uncore 則是處理器電路上除去運算核心以外的部分,例如 IMC 記憶體控制器、QPI 連結通道、共用 L3 快取、HTT 電路等。
把各項規格設計成功能模組之後,要推出支援不同數量記憶體通道、支援不同種類的記憶體、提供不同數量的運算核心、不同大小的快取、不同的 QPI 通道數都變得很容易,甚至要塞整合圖形核心也簡單許多,變成當架構完成之後基本上當年度的所有處理器開發就同步進入收尾階段了 (而且因為這樣從此再也沒有原生核心與拼裝核心的問題了,想要多少核心就能放多少個模組,不管幾個都是原生核心)。
除此之外還有「平台劃分」(其實對消費者來說重點在於不同平台會使用不同腳位,主機板就不能混用了) 的概念也是從 Nehalem 開始確立的,消費性平台分為頂級玩家平台 (HEDT) 與一般及入門平台 (Mainstream),前者即後來的 Core i7-900 系列,後者則涵蓋 Core i7-800 系列與 Core i5 以降各系列的消費級處理器,之後 Xeon 家族也有類似的狀態,入門系列使用與消費性一般平台相同的平台、中階 (支援多處理器) 的系列則與 HEDT 共用平台,高階則使用更強大、延展性更強的 EX 平台。
2009 | 2010 | 2011 | 2012 | |
伺服器平台-頂級 | X | Nehalem (Beckton) | Westmere-EX | Westmere-EX |
伺服器平台-可延展 | Nehalem (Bloomfield) | Westmere | Westmere-EP | Sandy Bridge-EP |
消費性平台-旗艦 | Nehalem (Bloomfield) | Westmere | Westmere | Sandy Bridge-E |
伺服器平台-入門 | Nehalem (Lynnfield) | Westmere | Sandy Bridge | Ivy Bridge |
消費性平台-主流與入門 | Nehalem (Lynnfield) | Westmere | Sandy Bridge | Ivy Bridge |
之後則隨著 Intel 控制推出時程,逐漸演化成表上可以發現的現象,逐漸區分成高中低三大類平台,EP / E 平台會比無印來得慢上一代,EX 則又會比 EP / E 慢上一代。
運算核心的強化
不同於 AMD K10 在運算核心的部分大幅沿用上代 K8 架構的設計,Nehalem 除了核心外部有許多重大變革之外,運算核心本身也獲得了不少強化。
SSE4 指令集補完
Intel 陣營這邊的 SSE4 被拆成三大包,分別是 SSSE3、SSE4.1 與 Nehalem 新增的 SSE4.2,實際上 SSE4.2 只包含七條新的指令,並不算是很重大的變革。
巨集融合與分支預測能力強化
還記得在介紹 Core 架構時我們提過的巨集融合嗎?Core 架構在 64 位元模式下是不能進行巨集融合的,然而到了 Nehalem 架構,Intel 終於補上對 64 位元模式巨集融合的支援,因此從 Nehalem 開始就不太會有 64 位元表現比 32 位元差的情形了,除此之外也新增了幾種可以融合的指令。
除了巨集融合之外,在 Nehalem 架構中分支預測方面的能力也獲得了明顯的強化,從原本的單層預測機制改為二層,納入新的次級分支目標緩衝區 (Branch Target Buffer, BTB) 以提升資料庫等以往沒有辦法良好適應分區預測機制的程式的執行效率。
超執行緒技術回歸 Hyper-Threading
曾經被使用在 Netburst 架構中後期產品的 Hyper-Threading Technology (HTT),在進入 Core 架構時期被捨棄 (可能是因為 Core 架構誕生在很有時間壓力且兵荒馬亂的時期吧),但進入更為成熟的 Nehalem 技術之後,這項功能被加回來了。(不過也有可能是海法團隊單純不想放或不敢放就是了,畢竟 HTT 當初就奧瑞岡州團隊搞出來的東西 XD)
其實在初期 Intel 很猶豫要不要繼續使用 Hyper-Threading Technology 這一命名 (可能是不希望大家回想起 Pentium 4 後期的樣子吧),所以比較前期的 Nehalem 官方投影片都是使用 SMT (Simultaneous Multi-Threading) 來稱呼這項功能,但由於 Netburst 與 Nehalem 中使用的 HTT 其實只是 SMT 的其中一種,與 Itanium 上所使用的實作方法不同,因此最後還是回頭使用 HTT 這一名稱。
受益於 Nehalem 更大的快取、更強大的分支預測能力,Nehalem 上的 HTT 技術帶來的效果中,缺點比過去 Netburst 時期更不顯著,但優點卻變得更加明顯。
電源管理強化
從 Core 架構開始,電腦的發展就逐漸從一味追求性能上的具體提升,轉而追求性能/能耗比例,也就是「效率」的最大化,在 Nehalem 的電源管理功能中主要有兩項不同,第一項是 C-State 中的 C6 有些改變。
為了將處理器閒置時的耗能 (idle power) 降到最低,Nehalem 架構整合了稱為 Power Gate 的電源開關機制,概念上有點像在 VCC (處理器供電) 到各個 Core 之間的電路各加上一個總開關,可以在「指定核心閒置的時候」將該核心的耗電量降到趨近於 0,因此 Nehalem 是有能力在沒有用到的時候將特定運算核心完全關閉的。
另一項電源管理上的重大變革則是 Turbo Boost 技術,這個技術在今日的 Intel 處理器中幾乎都有,因此大家應該很耳熟能詳了,可以把他想像為 Enhanced Intel SpeedStep Technology (EIST) 的「逆向操作」,根據處理器的使用情形來「動態調整」CPU 核心的時脈,特別是在遇到「未完善對多核心或多執行緒優化」的程式時,可以將用不到的處理器時脈降低,集中電力供應將使用率較高的核心「自動超頻」到更高的時脈。
後繼者:Westmere 架構 (32 奈米製造工藝)
在隔年推出的 Westmere 架構基本上就是 Nehalem 的製程微縮版,將製造工藝由 45 奈米提升到 32 奈米,最大核心數提升到 10 個,除此之外架構本身的改進並不明顯,主要是虛擬化技術 (納入對真實模式的支援與轉換延遲降低) 與加密解密能力 (AES-NI 指令集,新增了 7 條與 AES 加解密有關的指令) 上的增強。
除此之外,在主流與入門的消費性平台上,Intel 開始將內建顯示晶片從晶片組移到處理器的位置,但在 Westmere 世代中,內建顯示晶片仍然是獨立的一枚晶片 (基於 45 奈米製造工藝),只是跟處理器晶片本體放在同一塊 PCB 上,稱為「Multi-Chip Package」 (MCP) 封裝,而處理器晶片與內建顯示晶片則使用 QPI 進行連接。
Westmere 在電腦歷史上的意義比較接近於讓 Nehalem 架構「飛入尋常百姓家」的角色,本身並沒有帶來太大的變革,但製程微縮帶來的成本下降,加上生產 Nehalem 累積的經驗,有效的將 Nehalem 架構推向中階甚至入門市場,因此 Intel 並沒有大規模將所有 HEDT 平台 (Core i7-900 系列) 的產品提升到 Westmere 架構 (僅有代號為 Gulftown 的六核心極致版處理器是 Westmere)。
值得注意的是中階與入門市場使用的 Nehalem / Westmere 架構處理器的系統結構與 HEDT 平台以上等級的有很明顯的不同:
在高階平台的 X58 等晶片結構中,晶片組仍然是由南北橋兩顆晶片所組成 (X58 與 ICH10),而 X58 北橋晶片實質上已經只剩下 PCI Express 控制器的功能,並且使用 QPI 與處理器連結,而北橋與南橋之間則是使用 DMI 做連結。
而在中階與入門平台的 5 Series Chipset 中,晶片組已經不再是晶片組,由於 PCI Express 控制器也被移入處理器中,因此實質上北橋已經沒有存在意義,剩下的這顆晶片其實是「南橋」,被稱為 PCH (Platform Controller Hub),同時也因為南橋的頻寬需求沒有那麼大,因此從此以後晶片組與處理器之間就不再使用 QPI 做連結了,而是使用特性上相當類似 PCI Express 的 DMI 介面。
簡單來說,在中階與入門平台的 5 Series Chipset 中你所看到的這條 DMI,其實是原先用來連接北橋與南橋的那條,並不是以前 CPU 與北橋之間連結的高速通道。