
電腦的發展速度常常比我們想像的還快,似乎不久前大家還在爭論CPU是否有變成雙核心的必要,轉眼間幾乎所有的新電腦和Notebook都是雙核心了,單核心CPU只剩下最最低階的產品,而大家爭論的重點也升級成「原生四核 和 拼裝四核 CPU,到底誰比較好?」,最後總演變成藍綠陣營(Intel vs. AMD,別想太多)打架。誰好誰壞暫時先不管,我們是不是用得到四核心CPU更是沒有人在意,AMD和Intel的四核大戰已經開打,全民上四核也是遲早的事。
蜘蛛平台(Spider Platform)
AMD在上個月發表Spider平台,一口氣推出三大新產品,包含新的Phenom處理器、AMD 790晶片組和Radeon 3800系列顯示卡,會叫「蜘蛛平台」的原因是Phenom有原生四核心、790FX主機板可串連四張ATI顯示卡(CrossFireX),剛好變成八隻腳的平台......我只能說幸好AMD沒叫它「Octopus Platform」。

Spider Platform組成要件,Phenom、Radeon 3800和AMD 790晶片組,該怎麼說呢?好像ATI那邊出的比較好...

這篇文章出的有點晚了,有在關心AMD和Intel大戰的玩家應該都知道AMD新的Phenom被Intel電得吱吱叫,AMD最快的四核心Phenom 9600還輸給Intel最慢的四核心Core 2 Quad Q6600,搞得AMD顏面盡失,網路上一堆文章追著AMD猛打,有些國外媒體甚至建議直接裁掉AMD的CEO,AMD股價跌到四年來最低點,最近市值甚至比當初買ATI所花的錢還低。
落水狗人人都會打,但是不是真的該打?與其跟著大家一起罵,不妨趁這個機會好好研究一下Phenom,這是第一顆原生四核心的桌上型x86 CPU,大家都期待它會有如飛龍般咬死Intel,到底是哪邊出了問題?原生四核架構是個錯誤嗎?或是AMD缺少製程做後盾?還是有其他別的原因?
這篇專題將會拆成上下兩集,本篇先來看Phenom所用的新架構「Barcelona」,第二篇再來做Phenom的測試,只有被電爆的Phenom 9600當然不夠看,下篇會有目前AMD最高階的極品飛龍Phenom 9900。
Barcelona 微架構

Barcelona的die照片。
CPU的「微架構」(Microarchitecture)是一個設計的方向,它並不是單一產品,而是一整個世代、橫跨數年所有產品線的基礎,上到伺服器、下到Notebook所用的CPU都是以相同基礎去變化。一套全新的CPU架構是曠日廢時的研發心血,得投入數千萬以上的資金才能實際量產,所以研發出來之後都會延用好幾年,中間則配合需求做修改。AMD前一個K8架構(現在的Opteron/Athlon 64/Turion 64)已經用了快5年了,從只支援單通道DDR記憶體的單核心CPU,改到現在支援雙通道DDR2的雙核心,看起來改變很大,其實核心內部都一樣。而Barcelona就是繼K8之後的新架構,至少會用個兩年才會有更新的Bulldozer架構出來,眾所期待的融合處理器Fusion初期也是以Barcelona為基礎。
Barcelona並不是全新打造、從零做起的架構,而是把K8拿來大修一翻,Barcelona和K8之間的關係,就有點像Intel的Core微架構與原始Pentium M差不多,只剩房屋外觀類似,裡面則大規模翻修了。至於翻修列表,官方有自己的科技行銷名詞,什麼AMD Balanced Smart Cache、AMD Wide Floating Point Accelerator一堆繞口的花樣,下面整理成比較正常的名字。
Barcelona架構重點特色
.原生四核心(Native Quad Core)
.共用L3快取(Shared L3 Cache)
.雙記憶體控制器(Unganged & Ganged Mode)
.HyperTransport 3.0
.省電機制(CoolCore / Cool & Quiet 2.0)
.SSE128 & SSE4a
.其他單元強化
.虛擬化技術
原生四核心
Barcelona是原生四核心的架構,在一個晶粒(die)上就有完整的四個CPU核心,從下面的die照片可以看出來,這是業界第一顆、也是目前唯一的原生四核x86 CPU。雖然Intel老早就在賣四核心CPU,像Q6600、QX6850、QX9650等等,但它們是用MCM(Multi-Chip Module)的方式搞出來的,雖然外觀還是一顆CPU,但內容物是兩顆die封裝在一起,是兩個雙核心CPU包成一個四核心。

上面那顆就是Core 2 Quad拆掉鐵蓋的樣子,有兩個CPU的die封裝在一起,每顆die都是原生雙核心,封裝之後加上FSB通道就成了2x2的拼裝四核心。而Barcelona則像下面那顆,單一die裡就有四個核心。

這兩者的差別主要在各核心之間溝通的速度,原生四核全部都在同一個晶粒裡,有專屬線路相互連接,彼此溝通、交換資料的速度很快,而且四個核心可以同時對同一筆資料做運算,強化多執行緒效能。而Intel這種拼裝四核心,兩顆雙核心之間是透過前端匯流排(FSB,Front Side Bus)交換資料,FSB是Intel的CPU和主機板北橋相連的通道,平常就要忙著傳輸記憶體的資料,現在又得傳核心之間的資料,多執行緒的效能一定沒有原生四核來的好。
不過原生四核的缺點是製造不易,因為一顆die肩負著四個核心的責任,壞掉一個核心就沒了,拼裝四核則把製程風險分攤到兩個die上,Intel走的是容易生產、價格便宜的路線,明年的45nm新產品Penryn依然決定做這種拼裝四核;AMD則選擇有爆點、高效能的原生路線。
高效能?可能有人認為原生四核只是AMD自己喊爽的噱頭,因為Phenom的效能也不怎麼樣,但大家通常只看到最終的效能,並沒有注意效能上升的「幅度」,當程式從單執行緒變成多執行緒時,原生四核的優勢就會非常明顯,這在下一篇的測試就會看到,保証讓人印象深刻。而且,如果原生四核真的是噱頭,那Intel幹嘛在下一代的Nehalem架構也導入原生四核?
2MB共用L3 Cache
快取是CPU內部的高速記憶體,一直都是AMD的罩門之一,因為製程技術趕不上Intel,無法做出超大容量的快取,另一方面AMD K8架構之後已經內建記憶體控制器,也彌補快取的不足。Athlon 64 X2是128KB x2的獨立L1,512KB或1MB x2的獨立L2,相比之下,Intel Core 2雙核心有128KB x2的獨立L1、2MB或4MB的共享L2,Intel明顯大了不少。
不過AMD仍在Barcelona上設法加大快取,由於高速L2快取製作困難,而且AMD架構中的L2是多核心鏡像(每個核心的獨立L2放的資料都完全一樣),為了塞進更多快取資料,並在不大幅增加製造難度的前提下,他們選擇加上速度較慢、離核心遠但容量較大的第三層L3快取,總共2MB給四核心共用,L1和L2的大小則跟K8相同。原本AMD K8的快取都是exclusive型式,意思是L1和L2快取放的資料是不同的,因為快取空間有限,只能犧牲時間換取空間儲存更多資料,Intel Core 2的共享L2快取超大,所以是Inclusive型式,L2包含L1的所有資料,犧牲空間來加快多核心的速度。而Barcelona的L3則採用「Partially Exclusive」,視L2資料是否會被其他核心存取來決定要不要也擺一份到L3。
比較奇特的是,Barcelona的L3快取並非全速,L1/L2的時脈都和CPU一樣,但L3則跟內建的北橋同速,低於核心時脈,北橋就是Barcelona的記憶體控制器,之間的時脈關係有點複雜,我們下一篇再講。

Barcelona加了2MB的L3快取,做為四顆核心之間的資料共享,至於L1和L2的規格則跟K8一樣。初代的Barcelona是2MB的L3快取,明年45奈米的Shanghai改版核心會加到6MB。
雖然Barcelona加了2MB的共享L3,但Intel在明年的45nm新CPU中,把雙核心的L2快取暴增到6MB(拼裝四核之後就12MB),所以同樣是四核心CPU,AMD與Intel的快取差距反而比之前的雙核心更大,因此AMD改良了記憶體控制器做彌補。
雙記憶體控制器
CPU需要記憶體做為運算的暫存區,但傳統架構的記憶體通常離CPU很遠,中間隔一個主機板的北橋做記憶體控制器,拖慢頻寬和延遲。Intel克服的方法是不斷加大CPU內部的快取來減少記憶體存取,但加大快取需要製程能力做後盾,AMD的製程能力遠比不上Intel,於是他們把記憶體控制器從主機板北橋抽出來,內建到CPU裡,強化CPU存取記憶體的能力,而這也是AMD K8架構的一大特色。
這是AMD引以為傲的重點功能,Barcelona當然也內建記憶體控制器,而且強化成內建「兩個」控制器,這可做到前所未見的功能,相當有趣!文字說明有點難,直接看下面的四格漫畫吧~

現在支援雙通道的記憶體控制器,無論是北橋或CPU內建的都是單一128位元的單元,控制器有Channel A和B兩個通道,每個通道可以插一或兩條的記憶體(DIMM 0和DIMM 1),若這種平台只插一根記憶體,或是兩個通道的記憶體總容量不一樣,就會變成單通道的模式,每個時脈週期只能傳輸64位元的資料。

若兩個通道插上「完全一模一樣」,包括容量、時脈、時序參數都相同的記憶體,記憶體控制器就會把它們視為一體(邏輯上組合),啟動雙通道模式讓傳輸頻寬加倍,每個時脈週期傳輸128位元。就算記憶體不同,兩個通道的容量一樣也能啟動雙通道(比如Channel A是512MB+512MB,Channel B是1GB),只是所有記憶體都得跑在相同的參數。

Barcelona的記憶體控制器並非傳統一個128位元的單元,而是「兩個」64位元,當兩個通道插上完全一樣的記憶體時,就跟一般雙通道模式相同,兩通道的記憶體會邏輯上連為一體,這稱為「Ganged Mode」。

最特殊的是這個,兩個記憶體控制器分別控制兩個通道的記憶體,兩個分別都是64位元,但因為同時啟動,總合起來每個時脈週期一樣有128位元的資料傳輸。這不是雙通道,也不是單通道,而是兩個單通道同時執行,稱為「Unganged Mode」。
Unganged Mode特別的地方是獨立控制兩個通道的記憶體,所以就算兩邊容量和時序參數都不同,也能啟動相當於雙通道的頻寬,目前唯一限制是時脈要相同,但就算一邊插1GB、另一邊插2GB,兩條的參數完全不同,照樣可以啟動128元的頻寬。這跟Intel的Flex Mode彈性雙通道不同,Flex Mode仍然有容量限制,它是把容量匹配的部分啟動雙通道,多出來的部分則還是單通道。Barcelona的Unganged Mode只要兩個通道都有插記憶體,不管怎樣都有雙通道的頻寬。

若主機板BIOS做的完整(圖中是MSI的790FX主機板),Phenom平台在記憶體部分可以獨立調整兩組時序,圖中的DCT 0和DCT 1就是各自調Channel A和B上記憶體的時序參數,超頻玩家應該會蠻爽的,不必再擔心混插雙通道的潛在不穩定因素,Barcelona原生就支援混插!
[註:DCT是DRAM Controller的縮寫]
Phenom預設是啟動Unganged Mode,不只是因為這在各種記憶體亂插的情況下都有等同於雙通道的頻寬,而且傳輸通道是切越細越好。單一時脈週期最多能傳128位元的單一資料通道,和單一時脈週期最多能傳64位元的資料通道有兩個,同時脈下雖然理論的總頻寬一樣,但若傳輸的資料小於64位元,前者仍然佔用單一通道的一次時脈週期,後者則只佔用其中一個通道,另一個通道還可傳輸另一份資料,增加通道的使用效率。換句話說,Barcelona有機會在一個時脈週期下同時做兩次記憶體的存取,而這兩次存取可分別屬於兩個核心,這種特殊設計是為了加強多核心/多執行緒的效能,有沒有效呢?下一篇就知道。
當然附帶的好處就是兩個通道記憶體可各自裝上不同容量,並且獨立超頻,雖然目前僅限調整時序參數,時脈一定要相同,而且必須是同一種類的記憶體,不能DDR2和DDR3混插或ECC和沒ECC的記憶體混插,但已經蠻酷的了!目前Barcelona支援DDR2,明年有新的AM3腳位支援DDR3。
HyperTransport 3.0
AMD的CPU是靠HyperTransport通道來連接北橋,由於記憶體控制器已經內建到CPU中,所以北橋基本上只剩下PCI-Express來連接顯示卡。之前K8是用HyperTransport 2.0,通道時脈最高到1000MHz,雙向最高頻寬為8GB。Barcelona升級到HyperTransport 3.0,最高可到2600MHz,目前的Phenom則在2000MHz左右,讓頻寬增加一倍。
HyperTransport對AMD CPU的主要意義是多CPU之間的串連,用於多顆CPU的伺服器,加大頻寬也就是加快CPU之間的傳輸速度,有助於增加整體效能。不過桌上型CPU就只有連接北橋而已,當然也會提高整體效能,尤其是顯示卡對外的頻寬,將來Fusion會融合CPU和顯示晶片,初代Fusion可能就是透過HT 3.0連接兩者,HT的頻寬也就等於內建顯示晶片的記憶體頻寬了。

另外,HyperTransport 3.0有特殊的「Link Splitting」模式,可把單一通道拆開變兩條,每條通道的頻寬減半,在AMD的CPU架構中,只有伺服器版的CPU(Opteron系列)才有兩條以上的HyperTransport做為CPU互連之用,而HT 3.0這個分離模式或許讓桌上型的Phenom也能雙CPU運作,至少可以確定AMD 790晶片組是有支援雙CPU的。
省電機制
製程越縮越小,省電機制也就越來越重要,Barcelona加入Cool n' Quiet 2.0和CoolCore兩個省電技術,差別在於C & Q 2.0在Windows XP下還是需要CPU的驅動程式,CoolCore則是自動的。

Barcelona是原生四核,可以根據各核心的負載不同,獨立動態調整每個核心的時脈,可惜電壓值不能各自調整,會以負載最高的核心為基準來決定CPU電壓。Intel這邊還沒有類似的機制,雙核心的時脈是同步的,45nm的Notebook處理器則是多了單核關閉、單核超頻的IDA技術。雖然說AMD的省電機制比較強,但省電這東西,製程的改良會比各種省電機制更有效。
另外,Barcelona用的是新的AM2+腳位,多了北橋(記憶體控制器)電壓值的獨立控制,雖然說AMD CPU的北橋就在CPU裡面,但AM2+的定義可讓CPU的核心與北橋處於不同電壓下,這樣CPU在待機狀態時,就不必遷就北橋的電壓而能進一步省電。這功能一定要AM2+的CPU搭配AM2+的主機板才行,若把AM+的CPU插在舊的AM2主機板上,CPU核心和北橋電壓值就會一致了。
SSE128 & SSE4a
以上是Barcelona比較大方向的改進,而在內部執行單元的強化上,AMD大概沒有夠多的資金、時間或製程能力做全盤翻新,所以AMD主要強化Barcelona的多媒體效能,期望至少能夠跟上Intel Core微架構的水準,這些強化都圍繞在SSE指令集上,官方統稱為SSE128。
在Core 2出來之後,我們看到Athlon64在多媒體效能上完全慘敗,尤其是影片轉檔的部分,雖然這是種種因素的總合,但主要原因就是K8架構在SSE效能上的不足。SSE是多媒體加速的指令集(詳細解說請參考這篇文章),K8的兩個SSE執行單元都是64位元,而Intel Core微架構則是三個128位元SSE單元,當K8遇到128位元的SSE指令就得拆成兩個64位元分別執行,這讓Core架構在SSE執行能力上至少是K8的兩倍,最後就反應在多媒體效能上的懸殊差距了。

Barcelona則把所有SSE執行單元都加大到128位元,但若只有執行單元加大,前後端指令或資料輸出輸入的通道沒有加寬的話也沒用,所以指令提取頻寬、L1/L2快取的頻寬、浮點運算的排程器等等位於SSE執行單元前後的通道或單元,也一併都改成128位元。而這些週邊單元的加強不止對SSE幫助,也會順道改善Barcelona的整體效能,當然SSE的部分是最明顯的。
另外,Barcelona也支援新的指令集SSE4a,在Penryn架構解析的文章中,有提到Intel明年45nm的CPU支援SSE4,好笑的是這兩家的「SSE4」指令集好像是各自叫爽的,AMD的SSE4a沒有包含在Intel SSE4裡面,也不確定之後有沒有軟體支援,而且SSE4a只有新增...呃...4個指令,相較於Penryn新增47個指令,Barcelona的SSE4a恐怕是做心酸的。
其他單元強化
Barcelona架構中的其他單元大致和K8類似,只有一些小改變,太細部的東西這裡就不談了,有興趣的人可直接參考官方的「Software Optimization Guide for the AMD Family 10h Processors」。
比較有趣的是Sideband Stack Optimizer和Load Forwarding兩個功能,前者是把x86中兩個特定指令單獨拉出來執行,讓後端執行單元可以更平行化;Load Forwarding則是在一些限制的情況下,讓「載入」的動作可以提前到「儲存」之前,由於CPU執行時大部分都是載入記憶體的動作,只要不相衝突,讓載入可以提前執行的話就能幫助整體效能。這兩個都是Intel在Core微架構所新增的功能,Barcelona雖然作法不完全相同,但算是學習對手的優點了。

Barcelona的架構圖,在x86指令解碼的部分跟K8一樣,單一週期最多能解碼3個指令,Core 2則是5個(在指令融合的情況下);而在微指令亂序執行的部分,Barcelona跟K8一樣最多暫存72個微指令做重新排序,Core 2則是96個;最後,Core 2的執行單元還是比Barcelona多,就架構來看,Barcelona的單一核心效能還是比不上Core 2(而且可能輸不少)。解碼、重排、執行這三部分是息息相關的,如果要加大,就得全部都改,那是浩大工程,因此在單一核心的部分,Barcelona選擇延用K8的設計,加上一點點細部的改進。
虛擬化技術
Barcelona另外一個大重點是虛擬化技術的加強,虛擬化就是在同一個硬體下同時跑兩個以上的作業系統,更加善用硬體資源,Intel和AMD雙方都已經有虛擬化技術。而Barcelona加入「Nested page」來加快多個作業系統下記憶體位址轉換的速度,讓虛擬化環境的效能幾乎跟實體一樣。雖然虛擬化在伺服器領域很常見,但就跟64位元一樣,目前在桌上型電腦還很少用到,筆記型電腦就更別提了,Intel和AMD先後有推廣Viiv和AMD Live!,號稱是用虛擬化技術來實現多工的多媒體環境,意思就是兩個作業系統,一個上網一個看影片,實在有夠無聊,所以最後也都不了了之。
Barcelona的重心
現在x86的CPU都不直接執行x86指令了,而是先解碼成更小的微指令,重排微指令的順序來加速平行執行,所以解碼、重排的單元對整體效能影響非常大,也是Intel Core微架構大放異彩的地方。很可惜,Barcelona這些幾乎沒動,單一核心的部分大多直接延用K8的架構,加上前述幾個更新重點,不難理解Barcelona的設計理念就是持續固守伺服器領域。這是K8過去幾年靠著架構優勢搶下來的高利潤市場,原生四核、內建記憶體控制器、HyperTransport 3.0、虛擬化技術都是為了在多執行緒、多CPU、多OS環境下有更好的效能,這些正好也是Intel Core架構目前最大的劣勢。
這些放到桌上型CPU時會有什麼表現?多媒體效能想都不用想,保証比K8系列好的多,但能跟上Core 2的高水準嗎?原生四核、L3快取、特殊的記憶體控制器、HT 3.0和其他細部加強,能對整體效能帶來多少幫助?現在的軟體已經不像雙核心CPU剛出現時那樣了,許多需要CPU運算的程式都已經改成多執行緒運作,或許Barcelona架構真的可以發揮原生四核的優勢?
或許,Phenom並非一無是處。