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