救命稻草?剖析AMD Bulldzoer新品策略
AMD公司在最近召開的HotChips會展上終于透露了其新款分別面向服務器和移動市場的Bulldozer和Bobcat處理器產品的有關細節,這兩種處理器產品是AMD推出Opteron處理器之后最重要的一次產品升級,而其中Bulldozer更堪稱是自1999年推出K7處理器以來的最重要產品更新。
AMD推土機、山貓新架構官方視頻
以下,我們便為讀者簡要分析AMD在Bulldzoer中做出這些設計更新的主要背景。
AMD推出Bulldozer產品的主要目的和宣傳重點,是在這款處理器在傳統的多核心處理器和SMT同時多線程這兩種技術之外,又開拓出了一條新的多線程處理器設計道路。在傳統的多核心處理器設計(又稱CMP)中,每個處理器核心只能運行單個線程;而SMT則恰好相反,多個線程可以共享單個處理器核心的資源,并可以在單個處理器核心中被同時執行。
而Bulldozer則定位在CMP和SMT兩種技術之間,在Bulldozer中,兩個線程可以共享一個處理器核心的前端功能單元,但是整數執行資源部分則為線程獨享式設計。
在進一步探察Bulldozer內部架構之前,我們必須要看清楚的是,盡管AMD方面想極力撇清自己的產品與SMT的相似之處,并將他們的方案自稱為“第三種多線程處理器設計”,但是Bulldozer其實質其實是以SMT為基礎的一種改良設計。#p#
SMT處理器基礎
傳統SMT架構設計需要解決的主要問題是:“如何在處理器經常需要等待速度較慢的主內存傳送關鍵代碼或數據的情況下,保證處理器可以經常運行在滿負荷的工作狀態下?”在實際應用中,要想將某個線程的執行狀態保存下來,并將處理器的執行資源轉交給另外一個線程,是一個非常復雜而耗時的過程,而且通常需要進行大量的內存操作。因此,處理器通常會一次載入兩個或兩個以上數量的線程有關代碼和數據,然后再由執行機構在這幾個線程中根據線程的優先級進行動態切換。采用這種設計的處理器中,如果有某個線程處于停等內存數據的狀況,那么處理器便可以迅速切換為執行另外一個不需要停等數據的線程,而無需進行復雜的上下文開關切換操作。
基于這種思路,為了讓SMT設計的處理器能夠正常工作,處理器中所有的代碼或數據存儲機構所存儲的內容必須一致或采用分區的形式保存數據。這是大家必須首先牢記的一點,我們在文章的后面還會用到這個結論。
這里我們舉雙路SMT設計的處理器為例。這種處理器中需要設置兩套不同的架構寄存器組(architectural registers)和換名寄存器組(rename registers),其中一套供給線程A使用,另一套則供線程B使用;同時,處理器的指令隊列緩存器( instruction queues)的容量也需要設計得很大,這樣才可以讓指令窗口中存有足夠多的分屬兩個線程的指令條數,以便處理器的執行單元能夠時時處于較忙的工作狀態。
最后,SMT處理器中由兩個線程共享的功能單元(這些單元通常是執行管線上各個執行單元的指令緩存)必須被設計成任何一個線程都不能完全獨占的結構。也就是說,這些共享單元必須在兩個線程之間進行平衡,時刻保證供給某個線程使用的功能單元不會處在空置的狀態之下。
基于以上的原因,SMT處理器的內核需要增加許多額外的功能單元,系統的整體功耗也會因此而提升。不過由于采用以上設計之后,處理器可以不需要把大量的時間和功率耗費在等待慢速的內存傳送上,因此還可以算得上是物有所值。
#p#
SMT處理器的優勢與劣勢
SMT設計對多線程負載而言是較為適用的,多線程負載中的每一個線程通常都不會完全耗盡處理器的所有資源。對雙路SMT處理器而言,假如正在執行的兩個線程都需要花大量時間等待主內存的數據傳送,那么它的執行效率與不支持SMT的傳統雙核CMP處理器是類似的,而且由于SMT處理器的硬件功能單元總數要比傳統的雙核CMP少很多,因此其執行效率要比CMP更好。在這種理想狀態下,每個雙路SMT執行核心都可以比得上一對不支持SMT的傳統CMP核心,這樣處理器的總體功耗便會減小許多。
據AMD宣稱,由于無需在等待主內存傳輸數據方面耗費過多的時間,因此在實際應用中,一個雙路SMT核心的效率相當于1.3個傳統CMP核心。換句話說,如果主內存的數據傳輸操作不再是系統的瓶頸,那么SMT處理器會由于其中的執行單元數量相對較少而執行效率相比CMP核心降低,在這種情況下,SMT處理器會與傳統單核設計的處理器類似(主要執行單元數量與傳統單核類似),不過其中又比傳統的單核處理器設置了更多額外的硬件單元,這樣整體的效率相比傳統的CMP多核設計便會出現下降的現象。
AMD給出的1.3倍數據恐怕有點略顯悲觀,之前曾有人宣稱SMT的執行效率可能達到傳統CMP核心的1.7倍左右。不過這種效率值與處理器的實際工作負載是有很大依賴作用的,而這些效率倍數通常都是在比較極端的條件下給出的,所以大家不應該過分迷信這樣的效率倍數數字。實際上,在實際的工作中SMT處理器經常會由于執行單元數量的不足,而令其中執行的線程處于停等的狀態下。
Bulldozer方案:進一步增加整數執行單元的套數
面對以上SMT處理器的不足,AMD提出的解決方案是直接增加整數執行單元的數量,這樣每個線程都可以獨享一套整數執行單元。而傳統的SMT處理器則通常只會在執行單元的緩存部分進行擴容,比如為不同線程設置獨享的寄存器文件等;而Bulldozer中則在增加寄存器文件的基礎上進一步增加了整數執行單元的數量,這樣每一個線程都能獨享一套整數執行管線資源。
總體上看,Bulldozer設計與傳統SMT處理器設計的唯一區別就是增加了整數執行單元的套數。因此,我們說Bulldozer并不是真正意義上的“雙核”設計,而應該說是“1.5核”設計更為恰當一些,相比之下,傳統SMT處理器的設計則可以稱為是一種“1.2核”的設計。#p#
Bulldozer會是AMD的救命稻草嗎?
AMD自稱Bulldzoer的每個核心都可以平均按1.8核的效率執行雙線程任務,這樣的效率等級在外人看起來似乎有點過分樂觀。當然,這里需要再次提醒大家注意的是SMT處理器的執行效率與其所實際執行的工作任務是息息相關的。不過有一點可以肯定的是,盡管Bulldozer的執行效率會比傳統的SMT更高,不過這種更高是以增加了不少高功耗的整數執行單元為代價換來的。而且,在實際的應用中,Bulldozer架構能不能夠充分發揮自己執行單元上的數量優勢,還需要看Bulldozer在處理器緩存架構,處理器內部緩沖器和指令緩存方面的設計效果如何而定,而并不能僅僅看整數執行單元數量的多少來判斷執行效率的高低。
Bulldozer浮點執行部分的性能較高,在Bulldzoer中浮點執行單元采用的是雙線程共享式的設計,假如內存帶寬足夠的話,處理器執行浮點任務時的性能應當是比較高的。
Bulldozer架構的推出并不算是AMD在處理器架構設計領域的一次冒險之舉。在此之前IBM/Intel等公司曾推出過其它幾款寬位執行SMT產品,而這次的Bulldozer只是在這些SMT設計的基礎上進行了謹慎的改良化設計。
在處理器設計領域,改良型的方案通常要比徹底的改革方案效果更好。許多風格激進的改革派設計方案如安騰,奔騰四Netburst,IBM Cell等均很快戰死沙場,反而是許多改良型的設計方案最終贏得了勝利。
從漸進式改良的觀點看,AMD這次為Bulldozer加入四個整數執行單元可謂改良幅度較大。這樣的改良當然需要對處理器內部的其它功能單元進行許多微調和重新設計的配合才能充分發揮作用,比如緩存容量,緩存聯合路書,緩存延遲參數,指令緩沖區的大小,資源分區策略,解碼器帶寬等等。雖然在設計新處理器時通常都需要面對這些參數的調整,但對AMD而言仍然需要冒很多風險,一般在設計成熟的過程中,設計人員會逐步對這些參數進行調整,但留給Bulldozer的時間已經不多了,AMD的Bulldozer處理器很快便會上市,因此在這方面AMD不能夠出現任何的差錯。
不過,讓Bulldozer產品如期上市,并且能夠對Intel的產品在性價比,性能/功耗比方面形成較大的威脅,還算不上是AMD的終極目標。
#p#
前事不忘,后事之師
在與Intel的交戰過程中,AMD獲勝的場合通常并非硬碰硬的戰斗,而多數是“以己之長攻敵之短”的戰役。歷史上看,AMD的幾次重大勝利都是通過攻擊Intel的弱點和漏洞取得的。比如,當年Intel高調宣布開發EPIC指令集設計的安騰64位處理器時,AMD就推出了X86-64的方案,結果在服務器市場大獲成功;又比如,在Intel遲遲未能推出QPI點對點總線界面技術,而不得不繼續沿用老舊的共享式前端總線設計時,AMD就迅速向多插槽服務器市場推出了Hypertransport點對點互聯技術;再如當Intel不遺余力推廣成事不足敗事有余的RAMBUS內存技術,以及后來的高耗電型FB-DIMM內存技術時,AMD則堅守DDR戰線,因此保持了其系統平臺早性能/功耗比方面的優勢。
可以說目前Bulldozer攻擊的主要目標還是服務器市場,但目前為止,Intel公司的傳統服務器平臺產品線并沒有明顯的缺點和漏洞可以攻擊,其至強產品線目前正如日中天。(當然在移動平臺領域就是另外一回事了,不過這并非本文的主題,會放在另外一篇文章中介紹)。
不過,請大家注意我上面所說的是“傳統服務器產品線”,目前Intel的服務器產品中比較欠缺和忽視的是低功耗,高密度的云計算服務器,而目前ARM和一些新興企業如SeaMicro等則正在瞄準這個漏洞進行突破。
所以,假如讓我來運營AMD的話,我會把公司的主要精力放在用Bobcat產品為核心,構建一整套低成本,低功耗,高密度的云服務器平臺方面。連Intel高管Justin Rattner自己也承認,至強這類處理器運行某些云服務器應用時效率并不是很高。因此,我認為AMD此時不應該把過多的精力放在上網本和傳統的服務器處理器產品上,而應該把精力投放在云服務器市場。
只有這樣,才能成功擊中Intel當下的最大軟肋。Intel目前的有關產品還停留在實驗室的階段,而AMD如果能夠把Bobcat產品投放到云計算服務器市場,一定會取得不小的成功。
AMD會這么做嗎?如果情況不是這樣,那么Bulldozer的性能最好是能夠登峰造極,否則他們的出路將非常有限。
【編輯推薦】