好的,終於來到現階段最後一篇 AMD 陣營的 CPU 發展史了,AMD Bulldozer 架構在 2011 年推出,取代了先前使用的 K10 架構,目前是 AMD 旗下全 x86 電腦處理器產品線共用的基礎架構 (照慣例本系列文章目前不談 Atom 與 Bobcat 等用於低功耗系統或客製化晶片的旁支架構),而 Bulldozer 架構前後有 Bulldozer (推土機)、Piledriver (打樁機)、Streamroller (壓路機)、Excavator (挖土機) 四個世代,但由於系出同門,彼此之間差異也不是很明顯,並且同屬 15h 家族因此將在本篇中一併介紹完畢。
Table of Contents
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 就曾經在旗下的處理器上使用過類似的設計概念。