好的,終於來到現階段最後一篇 AMD 陣營的 CPU 發展史了,AMD Bulldozer 架構在 2011 年推出,取代了先前使用的 K10 架構,目前是 AMD 旗下全 x86 電腦處理器產品線共用的基礎架構 (照慣例本系列文章目前不談 Atom 與 Bobcat 等用於低功耗系統或客製化晶片的旁支架構),而 Bulldozer 架構前後有 Bulldozer (推土機)、Piledriver (打樁機)、Streamroller (壓路機)、Excavator (挖土機) 四個世代,但由於系出同門,彼此之間差異也不是很明顯,並且同屬 15h 家族因此將在本篇中一併介紹完畢。
AMD Bulldozer
最早 Bulldozer 架構的設計概念可以追溯到 2003 年就已經有初步的雛形,但當時的 AMD 最後選擇發展 K8 架構,因此最終該雛形的研發計畫被擱置,但在 K10 完成之後則被重啟,成為接替 K10 架構地位的新世代架構設計,初代產品號稱性能上能勝過自家上代的 Phenom II X6 1100T (六核心) 與 Core i7-950 (4C8T) 超過 50% 以上 (well, 時至今日看起來像笑話就是了)。
開發過程中歷經無數次的跳票,最後在 2011 年 09 月 19 日發佈首款產品,因此主要對手從 Westmere 變成了 2011 年 01 月就已經發佈的 Sandy Bridge 與緊接著在 2012 年 02 月推出的 Ivy Bridge。
組成多執行緒的第三種方法……
通常來說處理器的多執行緒設計可以有兩種做法,分別稱為 SMT 與 CMP,前者的全名是 Simultaneous Multi-Threading,指得是不實質增加處理核心,透過增加一組前置單元電路的做法來讓單一處理核心被視為「兩個邏輯核心」,可以透過提高單一運算核心的利用率來提高性能 (因為絕大多數時候我們不會 100% 利用處理器的性能),最成功的案例就是 Intel 的 Hyper-Threading Technology,概念上有點類似在高速公路上加蓋第二個交流道。
後者的全名則是 Chip Multi-Processor,其實就是當今成為顯學的多核心處理器,透過直接增加核心的方式來提高性能,概念上類似直接給高速公路增加一線道,在 Intel 世界來說,從 Nehalem 開始就是同時並用 CMP 與 SMT 的作法。
至於 AMD Bulldozer 的作法則是從 SMT 與 CMP 兩種做法中截長補短的結果,號稱能夠同時享受 SMT 與 CMP 的優點,並且不像 CMP 需要那麼大的晶片面積與那麼多的電晶體數,也不像 SMT 在高負載狀況下可能效能不增反減。
「運算模組」挑戰傳統的核心數概念
在討論 Bulldozer 家族的時候一直以來都有一個問題很難解釋,那就是「這顆 AMD 處理器到底是幾核心的?」,本來這個問題應該是很簡單的,我們認知上就是完整的運算單元與專屬核心的快取合併起來的單一模組就叫做「一個核心」(類似下圖右者),也就是傳統的 SMT / CMP 設計。
但在 Bulldozer 上卻不是這樣,AMD 創造了一個名詞「模組」來描述 Bulldozer 處理器上的運算單元,不同於以往我們認知的「一個運算核心由一組整數運算單元與一組浮點運算單元組成」,Bulldozer 核心 (上圖左半邊) 則是設計成每個模組有 2 組具有四條管線的整數運算單元 (各自獨享 L1 資料快取) 與 1 組浮點運算單元,而這三組運算單元共同使用屬於這個模組的 L1 指令快取與 L2 快取,使用相同的 Fetch、Decode,這樣的設計又被稱為 CMT (Clustered Multi-Threading),於是爭論就由此產生了,在面對浮點運算的時候,一個 Bulldozer 模組實際上只能發揮類似單一核心 + HTT 的效果,但在面對整數運算 (AMD 認為日常情況下有 80% 的時間處理器都在做整數運算) 的時候卻幾乎可以被視為兩個核心,那一個 Bulldozer 模組到底要算是單核心還是雙核心呢?
AMD 官方的答案是,單一一個 Bulldozer 模組是雙核心,只是這兩個核心共用快取與一組浮點運算單元,之所以不直接使用 CMP 設計是因為多核心會造成電晶體數的大幅增加 (耗電)、晶片面積的大幅上升 (成本),在宣傳四模組 Bulldozer 處理器的時候,AMD 是宣稱其為「八核心處理器」,不過也因為這樣所以在美國惹上了標示不實的官司。
不過值得注意的是 CMT 設計並不是第一次出現在處理器發展史中,早在 1996 年 DEC 就曾經在旗下的處理器上使用過類似的設計概念。
模組化設計
AMD 在 Bulldozer 中也效法 Intel Nehalem 導入了模組化設計,所以在設計伺服器用、個人電腦用、筆記型電腦用的 Bulldozer 處理器時其實並不用耗費太多力氣,同樣大略可分為 Core 與 Uncore 兩大部分,Core 就是前面提過的運算模組,Uncore 則包含共享的 L3 快取與記憶體控制器、HyperTransport 通道。
不過說是這麼說啦,但 Bulldozer 的彈性其實遠低於 Intel 的 Nehalem,基本上最多只能塞四組運算模組而已,最高可達 16 核心 (8 模組) 的改良版 Bulldozer - Piledriver 就得做成兩個 Die 的 MCM 封裝了。
指令集大亂鬥結束
Bulldozer 同時也標誌著 AMD 與 Intel 之間的指令集大亂鬥正式結束,並且由 Intel 取得勝利,AMD Bulldozer 中內建了同期絕大多數 Intel 處理器具備的指令集 (新增 SSE4.1、SSE4.2、AES-NI 與 AVX),並且取消在 K10 架構中只為了搶佔 SSE4 這名號的 SSE4.A 指令集。
除此之外 Bulldozer 還額外加入了 FMA4 (四操作數融合加法)、XOP 兩種 AMD 專屬的指令集,主要與向量矩陣有關,但卻不支援 Intel 後來內建於處理器中的 FMA3 (三操作數融合加法,要等到 Piledriver 才支援),很遺憾的是這些指令其實不怎麼實用,在 Zen 中也將被拿掉。
FMA4
系統架構大致上不變
Bulldozer 家族的系統架構基本上維持與 K10 時代相同,仍然維持南北橋兩顆晶片的組成,記憶體控制器整合在處理器內,但 PCI Express 通道控制器仍然位於北橋晶片中,北橋與處理器之間也依舊使用 HyperTransport 連結但升級至 3.1 版本 (時脈由 2.6 GHz 提升到 3.2 GHz,頻寬可以從 5.2 GT/s 提高到 6.4 GT/s)。
TurboCore
這功能基本上可以當成 AMD 版本的 Intel Turbo Boost,運作方式與原理幾乎都如出一轍,判定升頻檔位的依據是採用負載率而非溫度,且與 Intel 的 Turbo Boost 一樣具有能在關閉部分核心的時候,將運作中核心的時脈拉高到更高檔位的能力。
近乎悲劇的性能表現
還記得本篇一開始我曾經提到 AMD 曾經宣稱第一代 Bulldozer 在性能上能勝過自家上代的 Phenom II X6 1100T (六核心) 與 Core i7-950 (4C8T) 超過 50% 以上嗎?
當年 AMD 在 Cebit 2011 大會的議程上也這麼寫道:「The U.S.-based CPU and chip maker AMD will present at CeBIT 2011 processors, which performance exceeds the current top models of the Phenom-II series by 50%」。
姑且不論在 Sandy Bridge 已經推出之後卻只敢拿上一代的 Nehalem / Westmere 比較這件事情,其實 Bulldozer 最後成品的表現,尤其是單核同時脈的性能,別說是要追上 Intel Nehalem 了,甚至連自家上代 K10 架構的尾聲 Phenom II 都不如,在這個世代中 AMD 也正式被大家冠上「投影片製造業」的稱號,畢竟寫得一手好投影片最後產品卻是如此不堪一擊,確實挺難堪的。
至於當時 AMD 為 Bulldozer 的表現開脫的說法則是「Windows 7 沒有辦法發揮 CMT 新架構的實力,因為 CMT 架構實在太先進了」,不過後來即使微軟為 Bulldozer 特別製作了兩個修正程式 (KB2646060、KB2645594),雖然可以針對 Bulldozer 改善 Windows 7 對執行緒的分配方式與 CPU 進入 C6 深層省電模式的頻率,但也只能在某些項目帶來不到 15% (且在某些情況下甚至會倒退) 的性能增長,表現仍然遠不及競爭對手,在後來的 Windows 8 上面也沒有甚麼長進。
AMD 高層承認 Bulldozer 是個巨大的失敗
關於 Bulldozer 的成敗其實已經差不多可以蓋棺論定了,時任 AMD 伺服器晶片事業群資深副總裁的 Andrew Feldman (同時也是原 SeaMicro 的 CEO,AMD 把 SeaMicro 買下來想發展微型伺服器,結果徹底失敗就算了,砸了這筆聘金之後差點連財務狀況都毀了) 曾公開表示「推土機架構無疑是個巨大且難以止血的失敗 (unmitigated failure),我們是知道的」、「Bulldozer 的失敗連帶也讓 AMD 在伺服器市場錯失許多機會」、「Bulldozer 的失敗讓 CEO 丟了工作、絕大多數的管理階層丟了工作、研發技術副總裁也丟了工作,現在 AMD 有幾乎全新的團隊,我們都非常清楚這樣的失敗是絕對不被允許的。」
在 Bulldozer 失敗之後 AMD 曾經試圖半放棄 x86 處理器,全力發展代號稱為 K12 的 ARM 伺服器用處理器力圖在低功耗伺服器市場上有所斬獲,不過很快的他們也發現 ARM 市場或許比他們想像得還要險惡很多,於是重心又轉回 x86 處理器的 Zen,至於後來的故事,相信我們很快就會知道了。
Bulldozer 後續改進版本
從 Bulldozer 開始 AMD 便採用「一年一改版」的方式推出 Bulldozer 的改進版本,並且早在 Bulldozer 發佈當時就已經確立四個世代的代號,但由於結果論而言,最終 Bulldozer 架構獲得了相當大的失敗,因此 AMD 也已經確認 Bulldozer 架構將在四個世代出完之後宣告結束,下一世代的處理器將回歸傳統的 SMT / CMP 設計。
不過失敗的 Bulldozer 自然後續改進版本也不會像 AMD 預設的那麼順利就是了,最後 2013 ~ 2014 年的 AMD 實際上是這樣的:
第二代 Bulldozer:Piledriver
整體來說,推出於 2012 年的 Piledriver 主體架構與 Bulldozer 幾乎是一樣的,主要的差異在於 (下圖中橘色部分) 在增加 IPC (Instructions per clock,每周期執行指令數) 與降低漏電流、拉高時脈 (很有 Netburst 的既視感吧?同頻單核心效能低落那就靠拉高時脈來救回來),分支預測有強化,並加入 Intel 主導的 FMA3 (三操作數融合加法)、AVX 進階向量擴展指令集 與 AES-NI 加解密指令集的支援,把 L1 的 TLB (轉譯後備緩衝區) 大小加倍並加入硬體除法器,浮點數與整數的排程器 (Scheduler) 也有強化,L2 快取跟資料預取機制有優化等。
至於製造工藝上則是延續過去 Bulldozer 使用的 32 奈米 HKMG SOI 製程,由格羅方德 (GlobalFoundries) 提供,回顧過去歷史與近期,AMD 有很多次都是被 GlobalFoundries 拖住良率與上市時程,造成產品一再延期,GlobalFoundries 的前身其實就是 AMD 的製造部門,但在 2009 年獨立,並且從 2011 年開始 AMD 已經不再持有任何 GlobalFoundries 的股權,但 AMD 與 GlobalFoundries 背後的大老闆其實是同一人。
而在 Piledriver 推出當時有傳言表示 Piledriver 將會是最後一代面向主流效能級的 AMD x86 處理器,之後 AMD 只會在 APU 產品線推出新品,當時有很多人跳出來駁斥,不過在三年之後的現在證實這是正確的,接下來要介紹的 Steamroller 與 Excavator 都只有 APU 型號,FX 產品線直到 2016 年的今天仍然是 Piledriver。
目前消費性市場中最高階的 Piledriver 是 FX-9590,預設時脈足足有 4.7 GHz,開了 Turbo Core 之後甚至可以來到 5.0 GHz,工作電壓也是近五年來所看到的 x86 處理器中最高者,來到了 1.91 V,TDP 更是高達 220 W,由於功耗過高甚至還要特挑支援的主機板,嗯?要說 Piledriver 是 AMD 的 Netburst 或許也不為過了吧。
不過呢,這樣等級的時脈,實測性能只落在 Intel Xeon E3-1231v3 與 Core i7-4790K 之間,剛上市的時候開價新台幣 28,000 元 (現價約 8,000 元) ,價格、性能、耗電量全輸,只能說這東西基本上只是出來給大家看笑話的而已吧?
不過說不定哪天 FX-9590 會以最耗電或最高時脈之姿成為收藏家的目標,搞不好會漲價也說不定 XD
第三代 Bulldozer:Steamroller
原本排定要在 2013 年取代 Piledriver 的第三代改進版推土機架構 Steamroller,因為許多原因最後被延遲到 2014 年初,而且自始至終都指出現在 APU 產品線上。
Steamroller 的主要改進有兩大方面,其中第一項是製造工藝上的改進,Steamroller 採用了格羅方得新開發的 28 奈米 HKMG SOI 製程,另一項則是架構上關於多線程之間「並行化」的強化,號稱可以提升 14.5 % 的 IPC。
從下圖的架構比較中可以看到,最明顯的變化大概要屬前端的指令獲取與解碼的部分,從 Steamroller 開始指令解碼器改為兩組,意味著單一模組內的兩個整數運算核心不必再共用指令解碼器了,這可以有效解決以往 Bulldozer 指令處理在解碼階段時塞車的問題,除此之外 Steamroller 還引入了早已在 Intel 陣營行之有年的 radix-8 除法器 (不過 Intel 早在 Core 的時代就又升級到 radix-16 除法器了)。
不過要注意的是,即使 Steamroller 已經再次針對同頻單核心運算性能進行提升,仍然只有大約是 Phenom II K10 架構的九成。
第四代 Bulldozer:Excavator
Excavator 是第四代的 Bulldozer 架構改進版,同時也是目前已經規劃的最後一款 Bulldozer 衍伸架構,由於僅在極少型號出現,加上大家比較關注未來將要扮演協助 AMD 絕地重生角色的 Zen,因此相關的資料並不是那麼多,而且 Excavator 推出的型號很少,大半又以行動版為主,能見度又更低了,現在根本找不太到搭配 AMD 處理器的筆記型電腦。
基本上改進的脈絡與過去幾次改版相當相似,不外乎就是加大快取 (本次擴充的是 L1 資料快取)、加強分支預測的命中率與降低延遲 (這次將 BTB 的大小又增加了 25%),加入新的指令級 (AVX2) 支援,換取大約 4~15% 的 IPC 成長,不過如同我們過往對 AMD 的認識,連 AMD 自家的歡樂投影片都只寫 4 ~ 15%,可能成長應該還是很有限吧。
值得注意的是,後期的 Excavator 可以支援 DDR4 記憶體 (AM4 腳位),而初期產品則僅能搭配 DDR3 使用 (FM2+ 腳位)。