推土機架構(gòu)分析
推土機”將采用32nmSOI工藝,這讓“推土機”相比“馬尼庫爾”皓龍?zhí)幚砥骺梢栽诓辉黾庸牡那疤嵯略黾?3%的核心數(shù)量、增加50%的吞吐量。與AMD之前所有處理器都有所不同的是,“推土機”采用了“模塊化”的設(shè)計,每個“模塊”包含兩個處理器核心,這有些像一個啟用了SMT的單核處理器。每個核心具有各自的整數(shù)調(diào)度器和四個專有的管線,兩個核心共享一個浮點調(diào)度器和兩個128位FMAC乘法累加器。 所不同的,在K10架構(gòu)中,ALU和AGU共享三個管線(平均1.5個),“推土機”中每個核心整數(shù)單元管線的數(shù)量增加為4個,2個AGU專有、2個ALU專有。L1緩存也有所不同,在K10架構(gòu)中,每個核心具有64KB L1指令緩存和64KB L1數(shù)據(jù)緩存;而“推土機”每個核心具有16KBL1數(shù)據(jù)緩存、每個模塊具有64KB雙向L1指令緩存,至于減小的L1緩存是否會影響性能還有待觀察。兩個核心共享L2緩存,模塊之間共享L3緩存及北橋。 AMD“推土機”模塊 “模塊”和“核心”,這讓我們不免會產(chǎn)生混淆,實際對于用戶們來說,沒必要去刻意的關(guān)注“模塊”的概念,這只不過是AMD在設(shè)計上的稱謂,而當產(chǎn)品投放市場的時候,依舊會以核心數(shù)量為標識,比如我們說采用推土機架構(gòu)的“Interlagos”服務(wù)器處理器具有16個核心,而不會說是8個模塊。對于為何采用這種“模塊”設(shè)計的主要原因,AMD表示是“為了減少CPU的冗余電路”。
如果采用CMP的方式,隨著核心數(shù)量的增加,CPU的核心面積也會越來越大,重復的電路也會越來越多,功耗也會隨之增加——因為CMP是采用復制核心的方式。而采用“模塊”設(shè)計可以大大減少冗余電路,這對核心的大量增加很有意義。比如“推土機”,兩個核心共享浮點部分,對于大部分服務(wù)器應(yīng)用來說,整數(shù)運算的部分要遠遠高于浮點運算(高性能計算除外),所以將浮點執(zhí)行單元共享并不會影響大多數(shù)應(yīng)用中的性能。而整數(shù)部分則不是共享的,否則會造成瓶頸。 上文我們回顧過CMP和SMT設(shè)計的特點,我們可以把AMD“推土機”架構(gòu)看做是介于這兩種之間的一種設(shè)計:兩個線程(核心)共享浮點執(zhí)行單元,但是各自具有獨立的整數(shù)執(zhí)行資源。這看上去像是SMT的另一種形式,或者說是經(jīng)過AMD改良的一種“AMD式的第三種方式”。但與傳統(tǒng)的SMT設(shè)計不同,SMT僅僅復制的是核心的存儲部分,一個線程一個存儲模塊(registerfile),而AMD“推土機”架構(gòu)中,每個線程復制的是完整的整數(shù)執(zhí)行單元硬件,一個線程具有一個存儲模塊(registerfile)和一組完整的整數(shù)執(zhí)行單元。 AMD“推土機”核心架構(gòu)的一些特性 每個線程具有獨立的整數(shù)執(zhí)行單元是AMD“推土機”和雙線程SMT設(shè)計的主要區(qū)別。不過從“推土機”的設(shè)計來看,這并不像真正意義上的“CMP雙核”,畢竟兩個核心還要共享浮點執(zhí)行單元,或者可以稱之為“1.5核”。這樣設(shè)計的好處就是能夠大大節(jié)省晶體管的數(shù)量、降低核心面積和功耗,同時降低成本。即使不是真正的“雙核”,但不難想象這樣的設(shè)計要比SMT更加高效,相比之下,傳統(tǒng)的SMT設(shè)計可以稱之為是一種“1.2核”的設(shè)計。 AMD表示平均計算下,一個單獨的“推土機”核心執(zhí)行兩個線程可以達到1.8核CMP的效率,但是,這樣的數(shù)字也是要依賴于負載情況。雖然“推土機”的模塊設(shè)計要比傳統(tǒng)的SMT設(shè)計在執(zhí)行效率上更高,但是增加的整數(shù)執(zhí)行單元也提高了成本和能耗。另外,沒有意外的話,AMD“推土機”應(yīng)該具備很好的浮點計算性能。AMD表示雖然FPU是被兩個線程共享的一個部分,如果給予足夠的內(nèi)存帶寬,芯片將具有很高的浮點運算能力。