簡介
推土機(bulldozer)是AMD全新微處理器架構。“推土機”將採用32nm SOI工藝,採用了“模組化(Module)”的設計,每個“模組”包含兩個處理器核心。每個BulldozerModule將會集成2M L2快取, 8MB的L3快取,核心面積為30.9平方毫米。推土機架構採用了全新的控制結構和運算單元,其性能體現在整數運算、浮點運算方面。推土機架構的時鐘發生器、電源管理器、L1快取等……均是開發重點。AMD計畫在2011年推出基於該架構代號為Interlagos伺服器級處理器和代號為Zambezi桌面處理器,其中 Zambezi桌面處理器將是針對中高端市場推出的產品,採用新的Socket AM3 r2接口插槽。新處理器將支持新的記憶體控制器,將可帶來更高的記憶體頻寬表現,支持動態頻率提升技術(turbo core)等。
推土機架構新技術介紹
一、革新的Turbo Core技術——全核心加速技術
Turbo Core技術:主要是指對於一些沒有完全消耗到最大程度的工作負載,去加快時鐘速度。在多種不同工作負載上,使用了TurboCORE可以最大增加500兆赫茲的性能。最重要的一點,TurboCore加速指的是所有核的加速,和有些核加速技術明顯不同,以往的核加速技術可能需要關閉一些核,只對部分核進行加速。採用TurboCore技術,最多可以使所有核增速500兆赫茲,如果再關閉一些核運轉的情況下,加速將會超過500兆赫茲。同時我們還對記憶體控制器進行了進一步最佳化,從而提高記憶體的吞吐量。
除了每個核心獨享4個整數計算管線,在浮點運算上,“推土機”採用了“FlexFP”技術,兩個核心共享一個浮點調度器和兩個128位FMAC乘法累加器,可以進行組合,每個時鐘周期可以完成兩次64位雙精度計算或4次32位單精度計算。如果一個核心沒有進行浮點運算,那么另一個核心可以占用這兩個128位的FMAC,在一個時鐘周期完成4次雙精度運算或8次單精度計算,AMD將其命名為 AVX模式。這種技術保證了“推土機”的浮點運算能力,在高性能計算中並不會因為“共享”而犧牲性能。
二、新接口新工藝
推土機處理器將採用SocketAM3+接口,941個針腳,不同於目前938個針腳的Socket AM3接口,其好處是可以支持DDR3-1866記憶體和高級節能技術,而且AM3+將是AM3+將是AMD的最後一代針腳柵格陣列(PGA)封裝,之後將改用觸點柵格陣列(LGA),等到Fusion融合處理器降臨的時候就會使用LGAAF1新接口,觸點多達1591個,支持DisplayPort 1.2標準、PCI-E 3.0規範(32條信道)、四通道記憶體。
三、加強型記憶體控制器
8年前AMD首家推出集成記憶體控制器,根據AMD在這一領域的經驗和非常好的技術,又在這一代產品中全面提升了記憶體控制器的性能。首先對記憶體控制器在效率方面進行了針對性的重新設計和完善,因此實現30%的記憶體性能提升。在提升30%性能基礎上,讓記憶體支持1600MHz頻率,可以獲得額外20%的性能。兩項加起來,可以實現記憶體控制器50%吞吐量提升。
四、同時支持AVX指令和SSE指令
FLEX FP是AMD至今為止最有創新意義的浮點計算技術,每一個模組都有一個FLEXFP進行浮點運算。如果使用傳統128位編碼,意味著每個核會有單獨的浮點運算單元。與友商相比,如果在128位編碼前提下,AMD所執行的數量多一倍。如果是256位AVX編碼,Bulldozer可以把兩個浮點運算單元放在一起執行。所以在256位編碼執行模式下,與友商比較,執行的數量是一樣的。但是Bulldozer有一個非常大的優勢,就是可以同時執行256位AVX指令和SSE指令。而友商就不能做到這點,他們只能在AVX或SSE中選擇其一,這樣的優勢能夠讓Bulldozer在高性能計算、媒體編解碼以及在一些技術型運算方面有更高的性能。
五、更先進的電源管理技術
每個模組內第二個整數核心所需要的電路只占總核心面積的12%,從晶片級別上講這只會給整個核心增加5%的電路。更多的核心、更少的空間,這顯然有利於提高單位功耗、單位成本的性能。
能耗大小是由被通電時鐘數量決定的,它取決於執行一個普通指令(運算)需要讓多少電晶體處於通電狀態。在最大時鐘供電的百分比下,正常套用狀態和閒置狀態下,Bulldozer都具有非常好的能耗表現。同時在各能耗單位上進行了最佳化,可以在各種單位下進行電源關閉。高性能運算能耗之所以高,主要是由於浮點運算,而一般套用運算主要是在執行單元消耗得最高。同時還有閒置狀態下,AMD的技術可以做到對於那些完全用不著的核,把電源完全關閉。去年AMD產品有一個大轉型,AMD推出了新插槽,2011年推出的推土機可以使用2010年的插槽。而友商為推出新平台,同時推出了新插槽,這也使得AMD更占優勢。
總結:推土機重點改進的地方包括功耗/核心面積效率、新的ISA支持、核心擴展性、模組化設計理念,有望顯著改善單位功耗和面積的性能。
推土機架構特點
1、核心設計全面模組化
AMD的“Bulldozer”是在K10之後推出的全新一代處理器架構,對AMD來說,這是自K7以來AMD處理器架構的一次根本性變革,在核心架構及功能性上都較K10有較大的改變。相對於目前AMD主流處理器的架構,Bulldozer核心最大的亮點就是引入了模組化設計,這讓處理器在功能更加靈活的基礎上更容易控制成本。我們都知道AMD在目前無論是羿龍(Phenom)四核,三核還是雙核的核心結構都是固化的——統一採用四核(或者更多核)的物理結構,再根據市場價格策略來決定對核心進行有選擇的禁止。這對產品的性價比取勝的AMD來說難以控制成本,而且要向在目前架構上開發出更多的核心的產品幾乎要更新設計基板布局。
而Bullbozer處理器所引入的模組化設計剛好可以解決這個問題。Bulldozer在核心設計方面每兩個核心組成一個單獨的單元(稱之為“核心模組”,兩塊物理核心集成到一個模組中),比如雙核處理器直需要集成一個模組就可以了,即使是八核處理器也只需要集成四個模組,這讓產品生產及成本控制更加具有靈活性,處理器核心模組的兩個核心各自擁有一級快取,但是共享二級快取和預取,解碼單元,所有的“核心模組”共享8MB三級快取和北橋模組。
那么以後AMD處理器核心數量如何定義呢?未來的新架構四核心處理器指的是四個這樣的模組呢,還是四個計算核心呢?AMD對此給出的回覆是:“將每個擁有雙整數核心的推土機模組視為一個獨立的單元就對了。”顯然,AMD在這裡可以的迴避了單純的核心數量問題,更強調兩兩組成的有機整體,所以在面對推土機架構處理器的時候我們可以說它是四核心,八核心的,也可以說成是雙模組,四模組的。只不過未來AMD或許不會再有奇數核心的處理器了。
2、高效的集群多執行緒架構
Bulldozer架構中的另一個新元素就是採用了基於集群的多執行緒技術。Bulldozer的核心模組是一個可以同時運行兩個執行緒的處理組件,兩個核心可以執行兩個完全不會相互干擾的執行緒,有點類似於Intel的雙核處理器的超執行緒奇數。
儘管雙核、多執行緒和Bulldozer線上程並行執行方面是相同的,但是核心的分區卻截然不同。多執行緒就是在一個單個的處理核心內同時運行多個工作執行緒的技術,和CMP晶片多處理器技術不同,後者是通過集成多個處理核心的方式讓系統的處理能力提升,現在主流的多核處理器都是用了CMP技術,而像Pentium 4、Corei7這樣的處理器帶的“超執行緒技術”則屬於多執行緒奇數,而Bulldozer是基於集群化多執行緒架構,Cluster-BasedMulti-threading:CMT,也稱多簇式多執行緒技術。
在Intel的超執行緒方案中,採用的是複製處理器架構狀態的方法來實現超執行緒,核心內部並沒有增設一套額外的硬體執行單元來處理多執行緒,只是增加了處理器中存儲執行緒有關數據的單元數量,並在硬體執行單元空閒時將這些數據送往其中處理,一邊增加處理器執行單元的利用率。這種設計有一定的缺點,比如它只使用了一個指令視窗來負責兩個執行緒的調度、執行和引退,效率並不高。這就像是生產線只有一名管理調度人員,一個人很難同時處理兩個任務,這樣有時候便會出現生產線故障,而處理器在碰到這種情況時性能則會出現明顯的下降。
相對於傳統超執行緒或雙核技術,Bulldozer這種設計集群化架構的理念是讓雙核模組在多執行緒運算中更高效。Bulldozer每一個模組中加入了額外的執行單元,每一個模組都具備可以將一個大任務細分為多個並行任務的能力,這些生產線可以按需要任意整合,不會對整個裝配線的效能造成影響。因此CMT技術的效能要高於傳統的多執行緒方案。根據AMD介紹,單個“推土機模組”可以達到80%左右的多執行緒性能提升,而且所用的電晶體數目似乎並不比Intel的超執行緒奇數更多,這是一個相當鼓舞人心的成就。
根據路線圖,Bulldozer架構會推出四核心、六核心和八核心的版本,其中四核心的證書性能大約比頻率類似的Phenom II X4高出10%~35%。需要說明的是,CMT並不是AMD獨有的技術,例如Sun和Oracle開發的Niagara/Niagara2(Ultra-SPARCT1/UltraSPARC T2)伺服器處理器,尤其是Niagara2都採用與Bulldozer類似的執行緒設計。
3、更強的浮點和整數計算性能
Bulldozer所採用的集群化多執行緒架構之所以能實現如此高的性能,其中一個大原因就是AMD增加了CPU的運算單元——每個模組中的兩個執行緒都具有獨立的整數運算單元,只有浮點單元是共享的,這被稱為具有兩個證書運算單元“簇”。Bulldozer這種將兩個執行緒的整數運算獨立開來的設計可以更有效的提高處理器在基本套用中的性能。由於Intel的Nehalem架構的超執行緒奇數是兩個硬體執行緒共享3組運算單元,衝突在所難免,而Bulldozer則是兩個硬體執行緒獨享4個整數運算單元,性能提升將會更加明顯。根據AMD公布的Bulldozer執行單元的結構圖,負責整數運算的整數執行單元和負責地質計算的載入/存儲單元一共有4組(每單元2組)。(在K7/K8/K10中這樣的單元也僅有3組,剛好對應K7/K8/K10的每周期處理3條宏指令的能力。)
需要說明的是,Bulldozer這種雙“簇”也讓AMD在產品設計上具有更高的靈活性上,未來處理器的分級可以通過控制“簇”的數量來實現:比如以後的Bobcat處理器就是切掉一個整數運算“簇”的Bulldozer。此外,Bulldozer的每個模組還具備兩條128Bit FMAC(乘法累加運算)流水線,浙江能夠滿足Bulldozer中信加入的AVX指令集擴展的需求,這種指令集擴展中包含了大量的128Bit多媒體指令集。
4、製作工藝“兩級跳”
隨著核心的倍增,處理器對生產工藝也提出了更高的要求,因此近幾年來半導體廠商也會通過各種各樣的信技術的是是用來維持摩爾法則的“More Moore“。在處理器生產工藝套用上,Intel一直走在AMD的前面,酷睿採用32nm製程已經差不多半年,但AMD的產品目前仍停留在45nm!這種情況將隨著Bulldozer的誕生而得到改變,Bulldozer將採用32nm製程。預計32nm工藝將於2010年第三季度開始試產,病在2011年為AMD提供產能,28nm工藝於2010年第四季度上馬,超低功耗版28nm工藝則排在2011年第一季度,它們都會是用HKMG技術。這意味著AMD將在2010年完成產品生產工藝升級的“兩級跳”,從45nm進化至32nm後迅速再次進化至28nm,追回被Intel落下的時間。
此前,AMD已經展示了它們28nm產品的晶圓圖,看來新技術似乎已經非常接近最後可用的程度。如果真的能夠實現工藝兩級跳,那么長期困擾AMD的工藝製程問題有可能得到巨大改善,AMD將走出目前的窘境,進入全新發展的時代。
5、AMD推土機接口又升級
Bulldozer架構將採用新的AM3+接口,擁有941個針腳(AM3是938針、AM2+/AM2是940針),不同於目前938針腳的SocketAM3接口,其好處是可以支持DDR3 1866記憶體和高級技能技術。需要說明的是,AM3+是AMD最後一代針腳柵格陣列(PGA)封裝,之後將改用觸點柵格陣列(LGA),等到Fusion融合處理器降臨的時候就會使用LGA AF1新接口,觸點多大1591個。針對兼容性方面,按照AMD的說法,AM3+新接口處理器不能使用在目前的AM3插座主辦上,但是現在的AM3接口處理器卻能夠用於未來的AM3+新插座主機板。
其實AMD最初也考慮過讓Bulldozer沿用AM3接口,但是隨後意識到必須做出一個選擇,是繼續提供AM3而損失新架構的一些新特性,還是升級接口帶來更好的性能和功能?最終為了長遠利益,AMD選擇了後者。Bulldozer處理器將會首先用於伺服器,預計首批晶片將是代號為“Interlagos”的伺服器處理器,核心數在12個~16個之間,預計在明年發布。而針對桌面伺服器市場,Bulldozer將會有4/6/8個核心的三個版本,三級快取容量為8MB,支持DDR3 1866,首款採用Bulldozer架構的桌面處理器產品代號Zambezi,將成為AMD下一代高端桌面平台Scorpius的核心。
推土機架構解析
一、CMP和SMT
首先有必要來回顧一下CMP和SMT的優劣勢:
CMP:CMP的方式非常直接,簡單來說,CMP是通過“複製”物理核心來擴展處理器在多執行緒軟體中的性能,這是獲得最佳性能一種最簡單和最有效的方式。但CMP的缺點是製造成本很昂貴,並且也要受到處理器製造工藝的限制,畢竟不能將晶片做的越來越大。並且CMP的方式對負載要求也很高,只有經過適當並行最佳化的負載才能充分發揮CMP的性能,很多核心的CMP常常會浪費資源,在一些套用中,主頻更高、結構更簡單的雙核和四核處理器就往往可以獲得更好的性能。
SMT:SMT是一個相對廉價的技術,比如英特爾的Hyper-Threading,允許每個物理核心運行兩個同步執行緒。SMT的設計思想是充分利用每個核心的資源。如果一個物理核心只有一個執行執行緒,那么在等待記憶體中的關鍵代碼或數據的時候,執行緒處於停頓狀態,這樣核心的利用率是低下的。而SMT技術允許一個物理核心運行兩個或更多的執行緒,可以根據當前的狀況動態進行切換,如果一個執行緒處於停頓狀態等待記憶體,另一個執行緒的指令則可以使用這個物理核心的所有執行單元,讓物理核心利用的更加充分。
為了讓SMT正常工作,處理器的所有代碼和存儲部分需要被複製或分區。例如,一個雙執行緒SMT處理器需要兩套架構暫存器和重命名暫存器,一套給執行緒A,一套給執行緒B。另外組成指令視窗的共享指令佇列要具備很大的空間,這樣指令視窗才能容納足夠多的來自兩個執行緒的指令,讓執行單元可以保持在忙碌狀態。最後,兩個執行緒任何共享單元,比如處理管線不同部分的指令快取,都不能被任一個執行緒獨占。換句話說,SMT核心的兩個執行緒需要和另一個緊密的共享資源,保證核心的快取單元不會空置沒有執行緒利用。
SMT技術對那些不需要核心執行緒(threads)全負荷運行的多執行緒負載比較有意義,對於一個雙執行緒SMT設計來說,如果這兩個執行緒都需要花費很長時間等待主記憶體,那么這個雙執行緒SMT會表現的就一個CMP雙核處理器,甚至更加高效——因為它比CMP雙核成本要低得多。在這種理想的狀況下,一個雙執行緒SMT核心幾乎可以等同於一個雙核處理器,並且能耗上還要低的多。
但SMT的效率根據負載不同會有很大差異,AMD認為在真實的套用情況中,一個雙執行緒SMT核心僅僅等同於1.3個常規核心的效能,因為很多時候執行緒都在執行資源而不是等待主記憶體回響,換句話說,如果主記憶體不再是瓶頸,SMT的執行單元就過剩了,而一個SMT核心也就不再比一個單純的核心更高效,畢竟SMT核心需要增加一些電路設計,比一個單純的核心成本要高一些。
二、推土機架構分析
AMD“推土機”將採用32nmSOI工藝,這讓“推土機”相比“馬尼庫爾”皓龍處理器可以在不增加功耗的前提下增加33%的核心數量、增加50%的吞吐量。與AMD之前所有處理器都有所不同的是,“推土機”採用了“模組化”的設計,每個“模組”包含兩個處理器核心,這有些像一個啟用了SMT的單核處理器。每個核心具有各自的整數調度器和四個專有的管線,兩個核心共享一個浮點調度器和兩個128位FMAC乘法累加器。
所不同的,在K10架構中,ALU和AGU共享三個管線(平均1.5個),“推土機”中每個核心整數單元管線的數量增加為4個,2個AGU專有、2個ALU專有。L1快取也有所不同,在K10架構中,每個核心具有64KB L1指令快取和64KB L1數據快取;而“推土機”每個核心具有16KBL1數據快取、每個模組具有64KB雙向L1指令快取,至於減小的L1快取是否會影響性能還有待觀察。兩個核心共享L2快取,模組之間共享L3快取及北橋。
AMD“推土機”模組
“模組”和“核心”,這讓我們不免會產生混淆,實際對於用戶們來說,沒必要去刻意的關注“模組”的概念,這只不過是AMD在設計上的稱謂,而當產品投放市場的時候,依舊會以核心數量為標識,比如我們說採用推土機架構的“Interlagos”伺服器處理器具有16個核心,而不會說是8個模組。對於為何採用這種“模組”設計的主要原因,AMD表示是“為了減少CPU的冗餘電路”。
如果採用CMP的方式,隨著核心數量的增加,CPU的核心面積也會越來越大,重複的電路也會越來越多,功耗也會隨之增加——因為CMP是採用複製核心的方式。而採用“模組”設計可以大大減少冗餘電路,這對核心的大量增加很有意義。比如“推土機”,兩個核心共享浮點部分,對於大部分伺服器套用來說,整數運算的部分要遠遠高於浮點運算(高性能計算除外),所以將浮點執行單元共享並不會影響大多數套用中的性能。而整數部分則不是共享的,否則會造成瓶頸。
上文我們回顧過CMP和SMT設計的特點,我們可以把AMD“推土機”架構看做是介於這兩種之間的一種設計:兩個執行緒(核心)共享浮點執行單元,但是各自具有獨立的整數執行資源。這看上去像是SMT的另一種形式,或者說是經過AMD改良的一種“AMD式的第三種方式”。但與傳統的SMT設計不同,SMT僅僅複製的是核心的存儲部分,一個執行緒一個存儲模組(registerfile),而AMD“推土機”架構中,每個執行緒複製的是完整的整數執行單元硬體,一個執行緒具有一個存儲模組(registerfile)和一組完整的整數執行單元。
AMD“推土機”核心架構的一些特性
每個執行緒具有獨立的整數執行單元是AMD“推土機”和雙執行緒SMT設計的主要區別。不過從“推土機”的設計來看,這並不像真正意義上的“CMP雙核”,畢竟兩個核心還要共享浮點執行單元,或者可以稱之為“1.5核”。這樣設計的好處就是能夠大大節省電晶體的數量、降低核心面積和功耗,同時降低成本。即使不是真正的“雙核”,但不難想像這樣的設計要比SMT更加高效,相比之下,傳統的SMT設計可以稱之為是一種“1.2核”的設計。
AMD表示平均計算下,一個單獨的“推土機”核心執行兩個執行緒可以達到1.8核CMP的效率,但是,這樣的數字也是要依賴於負載情況。雖然“推土機”的模組設計要比傳統的SMT設計在執行效率上更高,但是增加的整數執行單元也提高了成本和能耗。另外,沒有意外的話,AMD“推土機”應該具備很好的浮點計算性能。AMD表示雖然FPU是被兩個執行緒共享的一個部分,如果給予足夠的記憶體頻寬,晶片將具有很高的浮點運算能力。