IBM Power 7 CPU
IBM Power 7處理器采用了IBM的45nm SOI銅互聯(lián)工藝制程,典型的Power 7處理器具有八個核心,晶體管數(shù)量達(dá)到了12億,核心面積567mm2,從這里可以明顯看出Power7的與眾不同,作為對比,同樣八核心的Nehalem-EX具有23億個晶體管,整整多了一倍。關(guān)于為什么具有這個差別后面將會談到。
早期的IBM Power處理器路線圖
距離上一代Power6推出已經(jīng)經(jīng)過了三年(2006年P(guān)ower6推出),三年的時間內(nèi),CISC,或者說x86處理器已經(jīng)有了不少的變化,Power7的情況又如何呢?請看下文。
和以往的IBM Power處理器不太一樣,IBM Power7是一個單晶片的八核處理器,而不是如Power5那樣由多個晶圓合體(Power7據(jù)說支持單個處理器兩個晶圓,也就是形成一個16核心處理 器)。IBM Power7是一個典型的多核心處理器,每個核心的架構(gòu)如下圖:
單個IBM Power7核心
IFU:Instruction Fetch Unit,指令拾取單元
CRU/BRU:Condition Register Unit/Branch Unit,條件寄存器單元/分支單元
LSU:Load/Store Unit,存取單元
ISU:Instruction Schdule Unit,指令調(diào)度單元
DFU:Decimal Fixed Point Unit,十進(jìn)制整數(shù)單元
FXU:Fixed Point Unit,整數(shù)單元
VSX FPU:Vector-Scalar Extension Floating Point Unit,向量/標(biāo)量擴(kuò)展浮點單元
通常,一條指令從左下開始順時針執(zhí)行到右下
Power7處理核心的最大特點是它具有12個執(zhí)行單元,以及4個同步多線程。這12個執(zhí)行單元是:
兩個FXU整數(shù)單元+一個DFU十進(jìn)制整數(shù)單元:十進(jìn)制整數(shù)單元的用途目前暫時難以看到
四個VSX FPU向量/標(biāo)量擴(kuò)展浮點單元:和傳統(tǒng)的FPU不同,它可以進(jìn)行向量計算。Power7基于Power Architecture版本2.06,擴(kuò)展了指令集以支持向量運算,對比于通常的SIMD,向量運算會具有更高的效率,它可以更好地利用寄存器 共四個LSU存取單元:內(nèi)存存取–Load兩個,Store兩個–因此它緊挨著L1,以及L2
一個CRU條件寄存器單元和BRU分支單元:POWER架構(gòu)和我們常見的x86不同,有些時候,一種特別的浮點運算是由額外的單元執(zhí)行而不是由通用整數(shù)單元執(zhí)行,這就是和POWER架構(gòu)的condition register條件寄存器相關(guān)的運算,它由CRU來執(zhí)行
BRU分支單元執(zhí)行分支指令,實際上,它和CRU結(jié)合緊密,因此合在一起;CRU和BRU都有點偏向于控制單元(如IFU和ISU這樣的就是徹頭徹尾的控制單元),控制著指令的走向,因此它們靠近IFU指令拾取單元,也靠近L1/L2的位置
Power7是OOOE(Out-of-Order Execution,亂序執(zhí)行)架構(gòu)的處理器,和上一代Power6的IOE(In-Order Execution,順序執(zhí)行)不同–有趣的是,Power5是OOOE的,也就是說,Power7又變回去了。
順序執(zhí)行的結(jié)構(gòu)簡單,可以獲得較高的運行頻率,亂序執(zhí)行則可以獲得更好的運行效率,但是設(shè)計會變得復(fù)雜–設(shè)計不是問題,問題是發(fā)熱量也隨之增大。從結(jié) 果來看,Power7的頻率應(yīng)該比Power6低一點。至于執(zhí)行效率本身,亂序本身顯然更好,Power7的流水線級數(shù)進(jìn)行了縮減和優(yōu)化以提升運行頻率。
Power7的內(nèi)核相對來說是非常復(fù)雜的,12個相對獨立執(zhí)行單元的設(shè)計可不常見,如Nehalem約有9個執(zhí)行單元(不過執(zhí)行端口只有6個:三個運算端口,三個存取端口。三個運算端口可以同時執(zhí)行三個整數(shù)運算和三個浮點運算)。Power7在每個時鐘周期可以分發(fā)6條指令,Nehalem則是4條,在單位時鐘的微指令執(zhí)行能力上,Power7大約是Nehalem的1.5倍。
強(qiáng)大的執(zhí)行能力讓Power7可以具有更多的多線程能力:每個Power7具有4個同步多線程,Power5和Power6都是兩個。同步多線程是充分 利用亂序架構(gòu)的好方法,相對來說,順序架構(gòu)利用起來就比較難。近年來處理器的發(fā)展是追求低功耗、大規(guī)模并行,越來越走向多路處理了,既然走向了多核心,那 么走向更多路的SMT同步多線程也就順理成章了,相對來說Power7的功耗并不高,見后。在并行編程方面,進(jìn)展比較緩慢,但進(jìn)步總是有的。
顯然,多線程技術(shù)將會越來越盛行,我們熟悉的x86世界:AMD已經(jīng)宣布要采用多線程技術(shù),而Intel的Nehalem將來可能會進(jìn)化到4個多線程。
商用處理器 | ||||||||||||||
類別 | IBM Power5 | IBM Power6 | IBM Power7 | Fujitsu SPARC64 VI | Fujitsu SPARC64 VII | Sun UltraSPARC T1 | Sun UltraSPARC T2 | IBM/Sony/Toshiba Cell | Intel NetBurst | Intel Nehalem-EX | Intel Atom | Intel Itanium 2 Montecito |
||
核心數(shù)量 | 2 | 2 | 8 | 2 | 4 | 8 | 8 | 9 | 1 | 8 | 1 | 2 | ||
線程數(shù) | 2×2 | 2×2 | 8×4 | 2×2 | 4×2 | 8×4 | 8×8 | 1×2+8(異構(gòu)) | 1×2 | 8×2 | 1×2 | 2×2 | ||
多線程 | SMT | SMT | SMT | CMT | SMT | FMT | FMT+SMT | SMT | SMT | SMT | SMT | CMT | ||
流水線 | OOOE亂序 | IOE順序 | OOOE亂序 | OOOE亂序 | OOOE亂序 | IOE順序 | IOE順序 | IOE順序 | OOOE亂序 | OOOE亂序 | IOE順序 | IOE順序 |
IBM Power7具有4層緩存架構(gòu)–這取決于你怎么看,我們暫且這么認(rèn)為。首先每個核心具有單獨的32KB的L1(筆者認(rèn)為應(yīng)該是L1-I和L1-D分別 32KB)和256KB的L2,以及32MB的L3(或者說L4)緩存,為什么說它有四層緩存呢?因為在這32MB L3(L4)當(dāng)中,有4MB的緩存,其延遲只是L3(或者說L4)的1/5,特別快,足以認(rèn)為它形成了一個新的緩存層。這個緩存層屬于L3的一部分,可以 被其他核心訪問。L2緩存的延遲為8個時鐘周期,比Nehalem的10個時鐘周期要快一些。
Power7的L3–L4緩存值得一提,它的容量達(dá)到了32MB(包括特別快速的L3或者說L2.5在內(nèi))!實際上,這些緩存(至少是大部分)屬于DRAM(Dynamic RAM,動態(tài)內(nèi)存),和通常CPU使用的SRAM(Static RAM,靜態(tài)內(nèi)存)不同,IBM稱之為eDRAM,embedded DRAM,集成動態(tài)內(nèi)存。DRAM也就是我們通常的內(nèi)存條使用的技術(shù)。
DRAM和SRAM的區(qū)別是:DRAM使用一個晶體管和一個電容存儲一個bit,由于電容會漏電,因此必須周期性地充電以維持?jǐn)?shù)據(jù),優(yōu)點是簡單、便宜;SRAM則用6個晶體管組成的雙穩(wěn)態(tài)觸發(fā)器電路來存儲一個bit,不需要周期性地充電,速度很快,然而占地面積大,耗電高,造價也高。
為什么要用DRAM呢?不是說DRAM的速度慢么?這要從多個方面來考慮:首先是容量,Power7本身的8個核心以及4路多線程要求具有大容量的緩存 以維持一定的性能水準(zhǔn),至少要達(dá)到30MB;其次是功耗,假如采用SRAM的話,其功耗將會非常高的:32MB的緩存會消耗大量的電力,并且設(shè)計更加復(fù) 雜,多個核心的內(nèi)部互聯(lián)也變得麻煩(4核心的Itanium 3 Tukwila具有30MB的SRAM L3,不過目前處于難產(chǎn)階段),使用DRAM的話,功耗將得到降低,同時占地面積也更小,互聯(lián)線路也簡單了。唯一的缺點是性能,這一點無法避免,這應(yīng)該就 是L2.5或者說L3存在的原因,這個特別快速的4MB區(qū)域可能仍然是SRAM構(gòu)成的。
大容量的L3通過內(nèi)部互聯(lián)結(jié)構(gòu)連接,據(jù)說處理器 核心互聯(lián)的帶寬達(dá)到了500GB/s!經(jīng)過了大容量L3(L4)的篩選之后,仍然需要大量的內(nèi)存帶寬,Power7提供了兩個DDR3內(nèi)存控制器,每個控 制器支持4個DDR3通道,大約支持到主流水準(zhǔn):DDR3-1600,這樣內(nèi)存控制器可以提供100GB/s的帶寬!內(nèi)置內(nèi)存控制器的設(shè)計并不容易,需要 提供各種RAS特性,并需要面對多種不同廠商不同型號不同參數(shù)的內(nèi)存模組。Nehalem支持三個DDR3通道,Nehalem-EX也只支持4個。
為了更好地支持多個內(nèi)存通道,并提高性能,Power7每個內(nèi)存控制器都具有16KB的重調(diào)度緩存來重新排序內(nèi)存存取請求。
Power7的一個重點是多路處理器,Power7實現(xiàn)了SMP的硬件一致性處理。一般而 言,隨著處理器數(shù)量的增多,處理器互聯(lián)總線的帶寬需求呈非線性的增長,受限于總線技術(shù),一般的SMP系統(tǒng)在4路到8路左右就已經(jīng)達(dá)到了飽和(x86的 SMP機(jī)器都在這個范圍左右),更大的系統(tǒng)就必須采用其它的拓?fù)浣Y(jié)構(gòu)了。
IBM Power 7 CPU:本地SMP連接(中上)和遠(yuǎn)程SMP連接(中下)
Power7通過三個方面的設(shè)計來達(dá)到32路SMP能力:巨大的帶寬、特別的拓?fù)浣Y(jié)構(gòu)和特別的一致性協(xié)議。Power7的處理器間總線可以提供360GB/s的帶寬。
Power7使用了一個兩層的拓?fù)淠P停?個處理器組成一個本地SMP組(需要7個本地I/O總線),然后8個SMP組之間兩兩直接互聯(lián)(每個SMP組 需要7個外部I/O總線),為了實現(xiàn)這個目標(biāo),Power7提供了兩個總線:一個用于本地SMP,一個用于遠(yuǎn)程SMP??偩€的位寬是120Byte。
此外為了支持這個拓?fù)浣Y(jié)構(gòu),Power7的一致性協(xié)議混合了兩種一致性消息的廣播方法:一種是全局廣播,一種是本地SMP組的猜測性廣播。這個一致性協(xié)議定義了13種狀態(tài),并通過緩存線上額外的設(shè)置位,Power7最終實現(xiàn)了復(fù)雜的結(jié)構(gòu),在32路處理器、8核心、總共256個處理內(nèi)核的SMP系統(tǒng)里,可以同時維持20000個緩存一致性操作。
顯然,Power7打造了新的一代的頂級處理器平臺:8核、4線程、32MB緩存,以及32路256核1024線程的大型SMP機(jī)器,Power7是目前處理器設(shè)計的巔峰之作。