推土機微架構

推土機微架構（英語：AMD Bulldozer）是AMD繼K10微架構之後推出的中央處理器微架構，由 IBM Power4 的總工程師 Chuck Moore 操刀。該微架構主要應用於桌上型平臺、伺服器平臺乃至超級計算機的微處理器核心上。Bulldozer在歷經數次跳票後於2011年9月19日發布，其首發產品是核心代號為“Zambezi”的AMD FX。
Bulldozer微架構從一個早期已擱置的微架構設計發展而來，主攻熱設計功耗為10瓦至125瓦的處理器平臺。AMD預期認為，基於Bulldozer架構的處理器在實際應用中每個「推土機」（Bulldozer）核心每瓦效能可達到高效能計算（High-performance computing，HPC）的水準。屆時每個“推土機”核心會支援Intel絕大部分的指令集（包括SSE4.1、SSE4.2、AES、CLMUL以及AVX），以及AMD自有的指令集（包括由SSE5拆分而來的XOP、FMA4、CVT16）。

**概觀**
2011年，AMD處理器開始導入32奈米製程，推出APU（加速處理單元）新形態處理器，應用在桌上型電腦與筆記型電腦。超微的處理器架構有兩大關鍵的調整方向，依用途區分成兩種系列，其研發技術代號分別為Bulldozer與Bobcat。Bulldozer架構針對主流伺服器、桌上型電腦、筆電的應用，提供高存取效能與高負載多執行緒的架構，並選擇以APU組態的高延展性來連結圖形處理器；Bobcat主攻低耗電的超輕薄電腦應用。
Bulldozer架構的處理器均使用格羅方德的32納米HKMG SOI製程，重新使用類似DEC的多任務計算的設計。根據AMD的發布說明，“平衡專用和共用的處理器運算資源，來提供一個易於成倍提升計算效能的，高度緊湊的單晶片多核心的設計”。換句話說，透過精簡處理器核心一些「冗餘」部分，輔以多核心/多線程的設計，超微希望籍此以更少的能耗，來充分發揮這些核心的特性和效能來提升整塊微處理器乃至整個平臺的效能。AMD研究員Tim Fischer表示，Bulldozer採用全新的控制結構和運算單元，其性能體現於整數運算、浮點運算、L1快取、電源管理，和時脈產生器等……均是開發重點，主要意義在於降低功耗並提升單位功耗的效能。
Bulldozer微架構的設計早在2003年已出現，由於AMD忙於K8微架構處理器的研發和推出而擱置，後來Bulldozer架構在該微架構的基礎上重新設計。可合併為1個256位的2個128位並且可進行融合乘法運算的浮點運算單元，這個主要特性在2003年的設計中已出現；一個Bulldozer核心單元中，除了前述的浮點運算單元外，還擁有兩個整數排程運算單元，每個整數排程運算單元各自擁有4條管線（另外的讀取、解碼這兩級管線為兩個整數運算單元所共用）；L1快取為每整數排程運算單元獨佔，但L2快取則為兩個整數排程運算單元所共用。AMD稱這樣的一個單元為一個“模組”，一個16線程的Bulldozer處理器中包含8個這樣的模組，但一個模組並不會被辨認為一個物理核心，而是根據一個模組中的2個整數排程運算單元的數量辨認為兩個邏輯核心（即作業系統會將1個模組辨認為兩個邏輯核心/線程）。一個“模組”包含2個邏輯核心，和Intel的超線程技術中1個物理核心被辨認為2個邏輯核心的做法似乎有類似之處，但事實上，兩者大相徑庭：AMD Bulldozer的“模組”為每條線程提供了各自的整數運算排程單元和一級指令快取，而英特爾的超線程則是兩條線程共用核心內所有可用的運算資源。
基於Bulldozer微架構，32納米SOI HKMG製程的處理器產品於2011年9月率先於桌上型平臺上發布，是為核心代號“Zambezi”（Socket AM3+，4至8線程）之AMD FX系列；緊接著的是10月12日發布伺服器平臺，核心代號“Interlagos”（Socket G34，16線程）、“Valencia”（Socket C32，4至8線程）之AMD Opteron系列重新啟用了AMD少有的“FX”品牌。首發的桌面級產品FX-8150，將有四個Bulldozer模組；伺服器級微處理器，代號Interlagos，是由兩個包含4個Bulldozer模組的MCM、共八個Bulldozer模組所構成。

**微架構特性**

**Bulldozer核心/模組**
完整的Bulldozer模組之示意圖
完整的基於Bulldozer微架構的處理器示意圖，包含：4模組8核心8線程、L3快取以及I/O總線
Bulldozer伺服器的記憶體架構- AMD認為並對外聲明這種模組化的設計是“基於集群的多線程”或“兩個整數排程運算單元的集群”。這種基於集群的多線程技術一般稱為“集群多線程”（CMT，Clustered Multithreading），而AMD則定義：基於這種設計的處理單元為一個“模組”（Module）。從硬體的複雜性和功能性的角度出發，Bulldozer模組（集群多線程）介於兩個獨立的處理器核心和超線程之間。兩個獨立的處理器核心的設計中，每個核心擁有獨立的處理單元、快取等運算資源，一般稱這種多線程設計為晶片級多核心（CMP，Chip Multi-Processor）；而超線程則是兩條線程運作於一個運算排程資源足夠多、管線足夠長（但不可太長）的處理器核心上，兩條線程的運算資源是共用的，包括處理單元、快取，一般稱這種多線程設計為同步多線程（SMT，Simultaneous Multithreading）；而集群多線程中一般幾條線程或多或少共用fetch、寄存器甚至是浮點運算單元等運算資源，但主要執行單元——整數排程運算單元都是獨佔的。這種集群式多線程微架構的設計，綜合了晶片級多核心和同步多線程的特點，最早的實例是DEC在1996年研發後來推出市場的精簡指令集體系的微處理器Alpha 21264，後來的昇陽電腦公司和甲骨文公司開發的UltraSPARC T1（核心代號「Niagara」）、UltraSPARC T2（核心代號「Niagara 2」）微處理器也是採用類似的設計（UltraSPARC T2還同時使用了同步多線程技術）。
** 超微採用集群多線程設計的Bulldozer模組中，包含兩個x86整數運算排程單元並被辨認為兩個邏輯核心，每個整數運算排程單元各自佔有16KB一級指令快取；一個可拆分為兩個128位元的256位元浮點運算單元，fetch、解碼器、二級快取、I/O總線等為兩條線程所共用，即一個模組所有。- 每模組都擁有獨立的硬體資源：
** 2MB的L2快取（模組內兩個整數運算排程單元共用）；
** 模組內兩個整數運算排程單元共用2路32KB一級指令快取，每整數運算排程單元獨佔1路16KB一級指令快取和全數4路64KB一級資料快取，包含快取分支預測；
** 兩個獨立的整數運算排程單元/整數核心，
*** 每個整數運算排程單元擁有兩個算術邏輯單元（ALU，Arithmetic logic unit）和位址產生單元（AGU，Address generation unit），由此一個整數排程運算單元在一個時鐘週期內可完成4次運算操作和記憶體存取作業，即一個模組可達成8指令發射/處理作業；
*** 對一些偏重多線程的應用程式，兩個整數排程運算單元和更多的執行管線可提供更多的硬體資源予兩條並行的線程上，以提升這些應用程式的效能表現；
*** 兩個整數運算排程單元的Bulldozer模組比僅有1個整數運算排程單元的僅多出12%的電晶體數量以及5%的晶片面積增量；
** 一組兩個對稱的128位元FMAC（融合乘法加法）浮點運算單元，在接收到有256位浮點運算作業的指令（如AVX）或並行的（x87/MMX/SSE等）128位元浮點運算作業後可以合併為1個256位元的浮點運算單元，這種設計可以更好地相容一些不支援並行對稱浮點運算的應用程式；
** 共同的Fetch／解碼管線;- 所有模組共用三級快取和增強的雙通道DDR3-SDRAM記憶體控制器；- 一個模組共計2.13億個電晶體，佔用30.9平方毫米的晶片面積，這個數據包含了2MB的二級快取，四個模組共計約12億電晶體；- 按照超微的說法，基於AMD Bulldozer微架構的處理器上，一個雙線程的的處理器上有一個Bulldozer模組（2個整數排程運算單元），一個4線程的處理器有兩個模組（4個整數排程運算單元），一個8線程的處理器上有4個Bulldozer模組（8個整數排程運算單元），如此類推。

**指令集**
 支援Intel的AVX指令集（Advanced Vector Extensions，進階矢量擴展），使處理器支援256位元的浮點運算作業。除此之外還支援Intel授權的SSE4.1、SSE4.2、AES、CLMUL、Multiply-Add/Accumulat等，以及AMD自有的XOP、FMA4、CVT16、SSE4a等，其中XOP、FMA4、CVT16是AMD原先的SSE5拆分而來（原本Bulldozer將會實現SSE5指令集，但是由於Intel選擇不支援SSE5而另立自己的AVX指令集，AMD最終決定將SSE5分拆），儘管這三者為並行對稱的128位元算指令，但可以相容於AVX的編碼方案。

**製程/製作工藝、時鐘頻率、熱設計功耗**
四模組八核心的AMD Bulldozer架構的處理器- 11層金屬、32納米SOI輔以格羅方德首代HKMG製程；- Turbo Core 2.0，和上代Turbo Core一樣可以根據處理器的負載狀態調整各處理器核心的時鐘頻率。在處理器核心閒置時可以降低其時鐘頻率乃至關閉核心；處理器核心滿載時可以提升其時鐘頻率，處理器半數核心處於滿負荷時可以有1GHz的提升幅度，全部核心滿載時也有500MHz的提升幅度，但是時鐘頻率的提升會保持在處理器的TDP限制（俗稱「熱牆」或「工作溫度牆」）之下。與上一代Turbo Core相比，Turbo Core 2.0可以使處理器核心關閉，而且可以調整各個核心的時鐘頻率，而首代Turbo Core則只能一次過調整半數核心的時鐘頻率而不能調整單個核心的，核心閒置也不能被完全關閉。- 處理器核心電壓在0.775V至1.425V，伺服器平臺的預設時鐘頻率最低1.6GHz，最高3.4GHz；桌上型平臺預設時鐘頻率最低2.8GHz，最高達4.2GHz；- 熱設計功耗最低25瓦，最高140瓦。

**快取、記憶體**
 單晶片最高8MB的路快取容量，4模組8核心共用；伺服器版本最高端型號的AMD Opteron 6200系列4模組8核心以上的則為16MB（兩個多晶片模組）。單晶片的8MBL3快取被劃分為4個容量相同的2MB的部分，可以和北橋（記憶體控制器）一併運作於2.2GHz的時鐘頻率上，於1.1125V的操作電壓；- 原生支援DDR3-1866記憶體；- 桌上型平臺的處理器，內建雙通道DDR3記憶體控制器，支援PC3-14900（DDR3-1866）、PC3-16000（DDR3-2000）、PC3-17000（DDR3-2133）以及更高規格的記憶體；伺服器/工作站平臺的處理器，則內建四通道DDR3記憶體控制器，可支援PC3-1280（DDR3-1600）暫存型記憶體（ECC記憶體，僅核心代號“Valencia”、“Interlagos”支援）。- AMD稱每通道支援兩條DIMM DDR3-1600（亦即每通道的兩條DIMM記憶體插槽可插滿DDR3-1600的記憶體），但單個通道兩條DIMM插上DDR3-1866記憶體時會降低記憶體時脈至1600MHz。

**輸出輸入總線、配套晶片組、處理器插座**
第一代Bulldozer的處理器之I/O界面示意圖- HyperTransport總線升級為3.1版本，預設運作時鐘頻率3.20GHz，傳送速率6.4GT/s，頻寬25.6GB/s，單向位寬16位元。新版本的HyperTransport，在上一代K10.5微架構，HY-D1步進的“Magny-Cours”核心（socket G34平臺，新步進版本於2010年3月推出）和“Lisbon”核心（socket C32平臺，新步進於2010年6月推出）AMD Opteron處理器上業已使用。- AMD官方接受媒體採訪時確認：“現有的G34、C32服務器平臺會支持基於推土機的新款服務器產品（核心代號為“Interlagos”/“Valencia”）。至於桌面上，為了充分發揮推土機架構的能力，會引入增強的AM3+接口，支持推土機並向下兼容現有AM3接口處理器。”
** 桌面版處理器使用的插座為Socket AM3+（也稱AM3r2）配套晶片組為900系列晶片組此代晶片組除了支援AMD自家的CrossFireX多卡互聯技術以外，還會支援NVIDIA SLI多卡互聯技術。
*** 處理器上共942個針腳，插座上也有942個腳位，但和同樣也是942個腳位的Socket AM3插座不同的是Socket AM3+僅支援DDR3-SDRAM記憶體、HT總線版本不同以及供電穩定性更強；
*** 可向下相容於800系列晶片組、使用Socket AM3插座（包括一些已使用Socket AM3+的）的主機板，但需要主機板廠商提供BIOS/EFI韌體更新，因為AMD官方沒有提供正式的技術支援，也沒有說明Socket AM3+接口的處理器可使用於Socket AM3插座的主機板，然而AMD卻說明瞭Socket AM3接口的處理器可以使用於Socket AM3+插座的主機板上。
** 伺服器/工作站平臺則繼續沿用既有的伺服器晶片組和既有的socket G34（LGA1974）和socket C32（LGA1207）。

**處理器**

**桌上型處理器**
基於Bulldozer微架構的桌上型平臺處理器為AMD FX，於2011年9月19日正式上市。使用GlobalFoundries 32nm SOI工藝，支持Turbo Core 2.0、Cool'n'Quiet、HyperTransport 3.1等技術。使用新的Socket AM3+（942）插座，支持DDR3-1866雙通道內存，分為8核、6核、4核三種版本，主頻從2.8GHz~4.2GHz不等。配套芯片組為AMD 900系列芯片組。
Bulldozer與Fusion APU“Llano”兩個系列處理器的上市時間定案，分別是2011年9月19日跟2012年第一季。最初有4個Bulldozer處理器在2011年9月19日發佈，分別是：四核心FX-4100、六核心FX-6100、八核心FX-8150、FX-8120。三核心型號（1.5個模組，微軟KB2592546修補程式的定義為“1.5核心”）只供OEM市場。

**伺服器處理器**
2011年11月14日，AMD宣佈推出針對伺服器等級效能的Opteron 6200與4200系列處理器（先前代號分別為：Interlagos與Valencia），主要將提供其擴充性，並且提供高出73%的記憶體頻寬，以對應更高階的虛擬化技術應用，同時在整體耗電量部份也讓每組核心減少原有一半，同時也讓主機使用空間減少三分之二，進而節省更多電力、空間等成本支出。
AMD也同步透露2012年將加入全新AMD Opteron 3000伺服器平臺，主要鎖定超高密度、超低功耗的1路網路主機代管（Web Hosting）、網路伺服器（Web Serving），以及微型伺服器（Microserver）等應用領域。其中將會先推出代號為「Zurich」的4至8核心架構的處理器系列，同樣採用推土機（Bulldozer）架構且對應AM3+插槽，並且預計將於2012上半年間出貨。

**主要特性**
同價位伺服器處理器產品效能約較競爭品牌高出89％
*處理器陣容齊全、從4核心一路涵蓋到16核心
*與前代平臺相同的功耗曲線下，每顆核心功耗最低約可達4.375W
*處理關鍵雲端、虛擬化及高效能運算等作業時，效能可高出24％至84％
*擁有2路處理器最高的TPCC速度測試分數
*最低的虛擬系統（virtual machine，VM）單位成本
*最高可達4個記憶體通道，最高可支援1600MHz記憶體時脈
*支援1.25伏特超低電壓記憶體
*每顆處理器最高支援12組DIMM記憶體，最高可支援384GB記憶體
*最多可支援4個16倍速的HyperTransport（HT3）鏈路，每個鏈路傳輸速度達每秒6.4GT

**效能表現和市場反應**

**AMD FX系列效能問題**
首款基於Bulldozer微架構的消費級處理器AMD FX上市後，在微架構的設計上、效能上和能耗上飽受爭議。首發的頂級型號FX-8150，在倚重單線程的基準效能測試中，測試結果顯示FX-8150不僅落後於基於Nehalem、Sandy Bridge等微架構的Intel Core i系列，還不如基於K10微架構的AMD Phenom II系列；不過在倚重多線程的效能測試中，結果顯示勉強可以追平Phenom II X6 1100T和Intel Core i7-2600K。縱觀各媒體的效能測試結果，FX-8150綜合效能強於Intel Core i5 2500K，而零售價格則在其之下，這個結果並沒給市場預期留下好印象。在效能測試中，FX-8150在廠方預設時鐘頻率下運作，無論待機抑或滿負荷運作，能耗比與Intel基於SandyBridge的處理器不相上下，但是進行較大幅度的超頻後，FX-8150儘管效能提昇明顯但處理器會變得極其耗電，能耗比變得相當低下。
Tom's Hardware的網站評論認為，這種在多線程負載下仍然不如預期的效能表現，是由於目前Windows 7的線程和處理器核心一一對應的線程排程方式。他們指出，如果Windows首先把一條線程分配給一個Bulldozer模組，並在模組內分為兩條子線程以充分利用該模組內的整數排程運算單元，這將會效能最大化地使處理器同時處理四條線程。這種線程排程方式和帶有超線程的Intel微處理器的類似——Windows 7會在利用邏輯核心（超線程得到的）前把線程安排至物理核心上。
對於處理器在超頻狀態時誇張的功耗水平，業界相信由於格羅方德的32納米SOI HKMG製程仍舊不成熟，這個導致了處理器核心在更高時脈下運作時，漏電現象嚴重，使耗電量飆升以及核心發熱量大增。而且有效能測評指出，AMD為壓低FX系列的功耗，有意壓低部分型號處理器的最高工作溫度，而這個溫度的設定值，實際還低於處理器在預設時鐘頻率下滿負荷運作時的最高溫度，這樣一來在處理器過熱保護機制下，效能受到了不小的影響，從而使處理器效能不如預期。
而AMD FX的較低階的型號中，FX-4100系列與Intel Core i3系列之間的比較以及FX-6100系列與Intel Core i5系列（Core i5 2500K除外）之間的比較中，除了某些倚重單線程的應用程式和基準效能測試項目以外，其餘的差距不大。不過功耗方面仍然有些偏高，尤其是超頻以後功耗仍然大幅增加。
2011年10月13日，AMD在其官方部落格中回應了AMD FX系列處理器的效能、功耗表現不如市場預期的問題，除了指出由於微架構不同於以往的x86處理器的微架構，現行的應用程式以及基準效能測試程式沒有對Bulldozer微架構的特點進行充分優化，以至效能不如預期以外，也承認FX-8150效能不濟的事實：不少效能測試成績不如Intel的Core i7-2600K/2700K，甚至比不過AMD上一代的消費級頂級產品Phenom II X6 1100T。AMD同時表示，在2012年以後的發展規劃中，將提升Bulldozer微架構的效能，並降低功耗，目標是每一瓦電功率的效能提升10%至15%。格羅方德也表示繼續改進其32納米SOI HKMG製程。根據目前一些基於AMD Piledriver微架構的AMD Fusion（核心代號“Trinity”）的工程樣品的效能測試，結果顯示和AMD的預期效能一致。

**超級電腦**
AMD於2011超級電腦展（Supercomputing 2011）上，宣佈基於Bulldozer微架構的新款AMD Opteron 6200系列處理器已被HPCwire雜誌的編輯與讀者評選為2012年最受矚目的五款新產品之一，並被美國國家科學基金會（National Science Foundation）的Blue Waters計畫採用，將在伊利諾州的國家超級電腦應用中心（NCSA）建置此部超級電腦。
超過235部，搭載近5萬顆AMD Opteron 6200系列處理器的Cray XE6機櫃，使Blue Waters超級電腦能提供超過每秒千兆次（petaflop）的充裕效能，在各種現象研究上的獲得突破性進展，包括：宇宙大爆炸（Big Bang）之後的演進、龍捲風的形成、病毒侵入細胞的機制，與其他眾多科學工程方面的應用。
2012年12月，搭載18,688顆8模組16核心的AMD Opteron 6274為任務分配單元，18,688顆NVIDIA Tesla運算加速卡（GK110通用圖形處理器）的泰坦超級電腦以17.59petaFLOPS的記錄榮登TOP500第一名，Green500（超級電腦效能功耗比前500強）第三名。

**效能優化修補程式**
2011年12月16日，微軟發佈了KB2592546，即傳說中的推土機線程調度補丁。而當天上午微軟就已經撤下了補丁，對於這一點BSN網站聯繫了微軟和AMD，得到了AMD方面的官方回應：
微軟在KB2592546之後，針對以Win7、Windows Server 2008 R2的電腦為基礎，進行最佳化。目前，AMD推土機處理器比預期的慢。因為在該兩種作業系統的執行緒邏輯，只對同步多執行緒（Simultaneous Multithreading, SMT）的排程特色進行優化，而沒對集群多線程（CMT，Clustered Multithreading）一類的多線程設計的處理器進行特別優化，來讓效能最有效地運行。
後來完整版的修補程式（KB2646060以及KB2645594更新檔）發布，不少效能測試結果顯示這些效能優化修補程式效用有限，無論是伺服器平臺還是桌面平臺，最多僅在某些項目上有15%的效能增長。
2012.09.21 AMD的驅動程式已有內建修補無需安裝微軟的修正程式

**金氏世界紀錄**
AMD全球副總裁暨終端產品事業群總經理Chris Cloran表示，等級最高的FX-8150八核心處理器，在2011年8月31日，由AMD團隊超頻達到8.429GHz，超越同廠處理器先前的被「Team AMD FX」締造的8.308 GHz成績，榮登金氏世界紀錄「最高時脈的電腦處理器」。

**改進版本**
AMD在2011年發布2012年的財政預算以及2012年的產品路線圖時宣佈，在2012年的第三季度發布Bulldozer微架構的改進版Piledriver。首批基於Piledriver的處理器是核心代號「Trinity」的AMD A系列處理器（APU）行動版本和桌面版本；新FX和Opteron在2012年9月發布。

**參考文獻**

**外部連結**
 2011至2012年最新AMD產品發表時程大公開- AMD Opteron 6200系列重裝上陣fix-attempted=yes - AMD Bulldozer推土機十大熱門問題，且看AMD官方細細解答！date=20140826120832 - AMD Bulldozer/K10架構對比fix-attempted=yes - AMD Bulldozer解析date=20111115180426 - AMD FX處理器官網
*https://archive.today/20130424224040/blogs.amd.com/unprocessed/tag/bulldozer/
** "Bulldozer" 20 Questions, Part 1
** "Bulldozer" 20 Questions, Part 2
** "Bulldozer" 20 Questions, Part 3
*accessdate= 2010-12-16 
*archivedate= 2011年7月11日 - access-date=2012-10-16 

**參見**
 AMD CPU微架構列表- AMD FX- AMD Piledriver- AMD Fusion- AMD Bobcat- SSE5- 多晶片模組