因為雜誌篇幅的限制,當初筆者在編輯稿件時,將一部分的文章內容割愛。雜誌出刊後,原外稿作者認為當初被砍的內容有價值,希望能在「ADV實驗室」補上,並藉此抒發一些個人的意見,今天筆者就將這段文字放上,供各位讀者參考。

沒錯,你沒看錯,這是Nehalem。
沒錯,你還是沒看錯,這是QPI。
沒錯,你絕對沒有看錯,這是Intel史上最巨大的系統架構變革與最重要的市場戰略重整。

按照正常的反應,讀者們應該歡呼「喔耶~電腦王們竟然不怕死,膽敢撥弄虎鬚,搞出這種如同關在自家地下室自製核子彈,還不怕炸死自己的封面故事耶!好棒喔~好棒喔~給你拍拍手,幫你放煙火,送你出國比賽,耶耶耶~(邊撒花邊轉圈圈)」

寫文章的人這樣講似乎有點自慢,不過我還真的有點驚訝呢!沒想到,竟然這麼快就有機會剪剪貼貼東拼西湊過去的斷簡殘篇,變成看似有模有樣的催眠文哩。(挺)

但問題是,原作者內心的吶喊…(低頭)

靠~到底是誰到了排版前「一週」才跟我講20頁的封面故事快要開天窗啊!這速度也太快了吧?(邊吐血邊說)
誰!到底是誰,要我這個MSN好友清單上的無辜路人,在這麼短的期限內,生出Nehalem封面故事的三分之一內容啊?(抓狂)

結果害我每天下班回家後日以繼夜焚膏繼晷臥薪嘗膽挑燈夜戰…(大概每天少睡一小時吧),嚴重受限的篇幅和字數,卻讓Intel未來時程表中的Westmere、Sandy Bridge、Ivy Bridge和Haswell外加AVX指令集都「還沒開始就結束了」,鉅細靡遺的QPI/HyperTransport規格比較表也不見了,排版時還給我砍了四千字!這完成度根本只有1/3啊!(翻桌)

交稿之時,我就附上一句預言式的註記:恐怕11/3 NDA解禁時,電腦王的封面故事極可能被無數「專業」網站和「技術能力強大」月刊競爭者圍毆。說真的,看在我連資料都懶得看就一路敲擊鍵盤到底的分上,實在一點信心也沒有。(啜泣)

是誰!害我如此之慘!給我過來體育館倉庫後面!(暴走)呃,忘了自我介紹,我是XXXX。(跪下磕頭)

<(_ _)>

先不管上面那串因人腦過熱當機所產生的亂碼文(放一顆LGA1366的風扇到頭上,嗯,涼快多了),胡言亂語的廢話這麼多,只要告訴電腦王的讀者:「Nehalem」絕對是一個大到寫不完的主題,難得出現「系統架構」與「Intel大戰略」的話題,看在我的眼裡,就好像無數保險鬆脫的手榴彈在地雷區上滾來滾去,但這個主題卻沒有一次引爆…啊,貫穿整個出刊的封面故事。(嘆氣)

這就有勞其他比電腦王更專業的雜誌來補完了。(淚眼汪汪)為了逃避現實,我連其他雜誌都不敢看了,擔心看過會自卑,然後就燒炭自殺了。(痛哭)

不過這些都不是重點,為了追求精神上的勝利,個人有一個絕對的怨念,那就是「絕不最後一個交稿,從戰場撤退也第一個帶頭烙跑」,電腦王編輯部這票人,每當在截稿前,絕對燃燒小宇宙,達成常人所遠遠不及、非比尋常的工作效率!這是對我下的挑戰書!

所以,當半死不活的用電子郵件交稿時,直接劈頭在MSN上問電腦王的bobo總編輯:
「你們這期看來很歡樂啊!」
「是啊…拖稿大隊…」
「那我是最後一個交稿的嗎?」
「其實…連我自己也還沒寫完…」
「我贏了!」
「……………………………………………………………」

再度以些微的差距獲得壓倒性的勝利!(握拳歡呼)啊!我到底是在比什麼啊!(自暴自棄)

—————————————————————————————

消失的前言

本文內容完全是根據Intel的公開文件,與在網路上到處都找得到的相關資訊與技術文章,沒有任何一絲一毫的「NDA」,跪求Google大神均應有盡有,請別大驚小怪,特別在此聲明,謝謝各位指教。

第一章:深入Nehalem核心設計的思維

在此,非補上一句Intel內心的吶喊不可:一定要作翻「唱秋」多年的AMD K8。繼1995年的Pentium Pro,相隔十三年,Nehalem是Intel第二個「以伺服器應用為主要訴求」的x86處理器核心,希望奪回x86多處理器伺服器的技術優勢,徹底剪斷AMD的「命根子」:Opteron。

比照多層化快取記憶體的動態分支預測

也許讀者會舉手發問:老師,什麼是「分支」?這可以吃嗎?電腦(Computer)和計算器(Calculator)最大的不同點,在於電腦具備「條件判斷」的能力,依照不同的條件,執行由不同指令所組成的程式。

電腦依據「循序」的記憶體位址,擷取、解碼並執行指令,碰到條件分支或跳躍時,才跳到其他的記憶體位址,繼續重複前述的流程。我們可將程式正常執行的過程,想像是一個「棋盤」,從一個角落做為開始、對角線的角落當成結尾,在棋盤上反覆的移動,沒有限制後退或前進,但終究會到達其終點-電腦不當機的話。

行文至此,分支(Branch)的定義就呼之欲出了。分支有兩種基本型態,一種是具有條件判斷,另一種則無。前者稱為「有條件分支(Conditional branch)」,意義近似高階語言中的 if-then-else 敘述。後者則是「無條件分支(Unconditional branch)」、也稱為跳躍(Jump),意義等同高階語言中、學過BASIC的人都很熟悉的goto語法。

動態分支預測利用稱為分支目標緩衝區(BTB,Branch Target Buffer)的小型化指令快取,儲存分支指令的位址或目標位址,藉由預測器(Predicator)中的預測位元(Predictor History Bit)來判斷該分支是否發生(Taken)。預測錯誤代表該分支之後「先斬後奏」的指令都全數失效,必須從頭啟動執行,而這個復原(Recovery)的代價,甚至還可能高過於不做任何預測。

重新命名返回位址堆疊緩衝區(Renamed RSB)

讀者可能會突然覺得看到一堆火星文,講的簡單一點,以組合語言的角度來說,當我們呼叫一個函數或副程式,CALL指令會將其返回的記憶體位址,推入堆疊資料結構之中,要結束該副程式時,RET(Return)指令將該位址推出堆疊,這緩衝區用來紀錄並預測該返回位址用。

更快的非對齊快取資料存取能力(Fast Unaligned Cache Accesses)

但Intel「似乎」也為此付出代價,Nehalem的第一階資料快取延遲略長於Core 2,實測約4時脈週期。想想也無可厚非,假如Intel開出的支票沒跳票,Nehalem要無負擔的存取跨cache-line的128位元資料,資料快取勢必要有Core 2兩倍的寫入/讀取埠,一次處理兩條cache-line。過幾個月,等Intel在自家網站的ITJ(Intel Technology Journal)正式揭露Nehalem的技術細節後,就可印證筆者的猜想是否正確。

第二章:新指令與新虛擬化技術

進入主題前,筆者不得不提Intel首度公開發表SSE4指令集時的小故事。

在2006年九月美國英特爾科技論壇(Intel Developer Forum)的數位企業主題演講中,被譽為「IDF之父」、18歲就進入Intel的資深副總裁兼數位企業事業群總經理Pat Gelsinger,故意先把他念史丹佛大學時的「老師」-當代RISC大師John Hennessy對x86的批評與RISC/CISC的定義條列出來,然後再故意吐一句:「我們就是認為指令越強大越複雜越好….」霎那間,台下都滿臉黑直線(包含筆者)。相信對x86指令集發展史認知越深的人,當看過SSE 4.2後,臉上的黑直線只會越來越多。

EPT(Extended Page Table)讓每個虛擬機彷彿擁有屬於自己的分頁表

52C11_EPT

Nehalem支援第二代VT-x虛擬化技術中的「延伸分頁表」,可藉由硬體功能輔助的軟體手段來隔離不同虛擬機所使用的記憶體位址,揚棄浪費一堆運算效能去「模擬」的影子分頁表。

講的嚴格一點,兩者都是「CR3(Control Register 3)的快取」,但筆者不想在這裡再加重這篇文章的難度,就不解釋細節了。

VPID減少TLB「洗牌」的頻率

先解釋一些「專有名詞」。昔日「純」軟體的虛擬機器管理者,得消耗不少運算資源,收集處理器運行的相關資訊,為改善效能,Intel Vanderpool規格包含VMCS(VM Control Structure)暫存器資料結構,用來描述並儲存每個虛擬處理器的「狀態」。每當處理器啟動用戶端作業系統前,就會先載入VMCS資料。因享有硬體協助、且暫存器欄位直接對應各硬體功能單元,效率遠勝過往。(AMD則稱為VMCB,反正意思都一樣)

對熟悉x86系統程式與組合語言的讀者,講的更精確點,VCMS等同於x86指令集的「虛擬」TSS(Task State Segment):對應x86處理器的作業系統,其行程(Process)狀態與相關資訊均紀錄在TSS,包含該行程所用到所有暫存器的值,當多工作業系統切換行程,這些資訊將被儲存,處理器則載入新的TSS。把VCMS想成虛擬化世界的TSS就對了。

但這還不夠,僧多粥少,共用一塊TLB勢必縮減每個虛擬機可用的空間,增加分頁表錯誤(Page Fault)的發生機率,虛擬機管理者得像園丁一樣剪枝修葉,主動砍掉部份虛擬機佔用的欄位,配合VPID,Nehalem新增INVVPID指令,可賦予虛擬機管理者以下權力:

˙標定VPID與記憶體位址,清除某虛擬機的部份欄位。
˙標定VPID,一次清光某虛擬機的欄位。
˙僅保留被多個虛擬機共用的全域記憶體位址。
˙不分青紅皂白,全部通殺,清的乾乾淨淨。

VPID和AMD的標籤式TLB(Tagged TLB)可謂無尾熊所見略同,只是Intel又晚了一步。當然, EPT和VPID,和AMD的Nested Paging與Tagged TLB無論在作法和觀念上,還是或多或少有一些微妙的差異,這就留待日後深入比較Intel/AMD虛擬化技術異同的題目再談了-如果還有的話。

更快的多執行緒同步(Faster Synchronization Primitives)

多工作業系統同時執行的多個行程(Process)或執行緒(Thread)共享同一塊邏輯記憶體位址內的資料或程式碼時,作業系統均仰賴處理器系統指令,像鎖存(Lock)機制與時間戳記規約(Time Stamp Counter)來延遲、中止某執行緒等,進行執行緒同步化(Thread Synchronization),讓多重執行緒能以「符合實際程式的順序」執行。

其實這不該放在這邊,但筆者覺得不這樣做不行。Intel在Core 2「Penryn」已改進過一次,在Nehalem再如法炮製更加精進一番。這是Nehalem最容易被人忽略的改進項目,非常單純,但也非常重要,可看出Intel「用最少的力氣做最關鍵的改善」,把電晶體都砸在刀口上,讓「最常用的機能跑的更快」的強烈企圖心,就某種意義而言,遠比虛擬化、SSE 4.2和其他林林總總翻修來得更有價值,這是隨時隨地都在用的東西,卻經常不知不覺中就遺忘其存在。

第三章: QPI大戰略,多樣化的Nehalem產品線

更讓長達數年的「悲願」美夢成真:IA-64(Itanium)與x86平台就此融為一體,啟動Intel在高階伺服器市場對IBM POWER/Sun UltraSPARC發動「Itanium大侵攻」的戰爭機器,

整體系統架構→Intel QuickPath architecture
CSI→Intel QuickPath interconnect
記憶體控制器→Intel QuickPath memory controller
相關技術的汎用稱呼→Intel QuickPath technology

為何QPI會拖延這麼久才實用化?這背後隱藏了感人肺腑可歌可泣的故事,根據Intel的原始計畫,應早在2005年底,Intel首款四核Xeon MP「Whitefield」就應配合四核Itanium 2「Tanglewood(後改名為「Tukwila」)」,手牽手率先導入CSI。

但後來發生一連串不幸的慘劇:

˙Tanglewood因重頭設計,延期兩年,還因商標糾紛被迫改名成Tukwila。
˙AMD在2004年夏天就正式實機展示雙核心Opteron(還很機車的裝在Intel親密盟友HP的DL585伺服器),並於2005年四月就提前上市,造成Intel莫大的壓力。
˙更糟的是,原本Intel在印度研發的首款處理器Whitefield,因工程設計延誤與內部財務醜聞,造成高達六百多人的印度研發團隊成員被大量革職,讓Intel腰斬Whitefield,並以「包兩顆餡水餃」的Tigerton為備案取而代之。

故事的結局:拖到2008年底,Nehalem與Tukwila一同登場,我們才看到CSI降臨,真是可喜可賀。

有趣的是,Intel花了不少功夫考量QPI佈線(Layout)設計便利性與可靠性,這AMD幾年前曾付出高昂學費的地方,現為輪到Intel面對的難題。

這兩者之間彼此有好有壞,QPI適用多處理器環境,理應享有效能優勢,而HyperTransport則讓AMD有較佳的平台擴充彈性,利於第三協力廠商的支援。最明顯的例子:QPI目前並無板卡規範,而AMD K8平台卻能讓採用HyperTransport外接介面HTX的板卡直接連接處理器,降低傳輸延遲,特別是高效能運算常用的Infiniband網卡,不乏HTX者。

最終章:Nelahem究竟代表了什麼?

Intel「總算」認真降低企業客戶的伺服器使用成本,Nehalem家族伺服器產品線的DDR3記憶體控制器,均可支援Registered DIMM與一般的Unbuffered DIMM,用戶可根據自己的需求選擇記憶體模組種類。

值得注意的是,因Nehalem將記憶體控制器搬到處理器內,Intel集中資源,大幅簡化入門級系統晶片組,為單處理器平台將北橋(MCH)和南橋(ICH)統一成代號「Ibex Peak」的PCH(Platform Controller Hub)單一晶片,未來的Intel個人電腦僅有處理器及PCH兩顆主要晶片,降低系統製造成本,利於縮小電腦體積及散熱。

從單處理器伺服器(Foxhollow-EN)、單處理器工作站(Foxhollow-WS)、商用個人電腦(Piketon)、一般個人電腦(Kings Creek),到Centrino 2(Calpella),針對不同應用,Ibex Peak有多種衍生型號,說穿了,也就不外乎啟動/關閉單一晶片部份功能的老梗。

但不可否認,專心致力於單一產品,對Intel百利而無一害,唯一要頭大的只剩下「實際市場區隔」的問題了,相信不少廠商也一定很頭痛,如何預防規格大同小異的不同平台屆時彼此互咬,將考驗廠商市場規劃人員的頭髮還能剩下多少。

再創傳奇的Intel Hillsboro團隊

對Intel與企業文化稍有認識的人都知道,這是一家內鬥超級激烈、且樂此不疲的公司,像專門帶頭開創新局、加州Santa Clara的Intel全球總部,天才洋溢的奧勒崗州Hillsboro超巨大研發兼生產基地,與紀律嚴謹、擅長壓榨既有產物極限、連「地下防空洞都100%無線網路覆蓋率」的以色列Haifa變態研發中心,三者之間的鬥爭頗富歷史。

Hillsboro在Pentium 4慘遭滑鐵盧,讓Intel公司內的x86處理器主導地位,「大權旁落」到持續改良P6微架構,陸續推出Pentium M、Core與Core 2等成功產品的以色列Haifa。Nehalem堪稱是創造P6奇蹟的Hillsboro,傾全力打造的「王子復仇記兼慶祝P6問世13週年代表作」,充滿了令人驚艷的巧思,與隱約和以色列Haifa團隊相互較勁的味道。

QPI和Ibex Peak更象徵Intel成功整合山頭林立的事業群與研發單位,以制定合理完善且節約資源的產品時程表,像Nehalem入門級單處理器平台不轉進QPI,沿用板卡廠商熟悉的DMI介面,降低風險,確保如期上市。撐過大裁員和組織重整的陣痛期,Intel找回正確的方向,集結全力統合產品線,集Intel近年技術之大成的Nehalem與Tukwila,與「奮六世之餘烈才悲願成就」的QPI,只是必然的結果。

使用 Facebook 留言

2b2b5bc95ba39c3d1689efa74849149a?size=48&default=wavatar
1.  andyT (發表於 2008年12月02日 15:48)
ha~ 原作的這個style 才是我熟悉的!
不過i7 是真的可以再多一點!
Dcaaf067509d02a26a32f792aef92a14?size=48&default=wavatar
2.  shin (發表於 2008年12月02日 19:54)
怒!為什麼這部份的文章不放到雜誌上啊(翻桌~)

對…沒錯…本期的封面故事實在讓小弟有想一起圍毆的衝動啊~

(開玩笑…電腦王的文章就是要寫才對啊…否則雜誌上的內容都快讓我看到zzz了XD)
.
.
.
.
不過說真的…"Core i7我全懂"這部份實在是……這真的是電腦王的文章嗎…?
2fe7bd764a999e8f5b67812b5ad4140b?size=48&default=wavatar
3.  richie (發表於 2008年12月02日 22:49)
小弟也和上面的大大一樣!這樣詳細的文章應該要放在PCAVD中才好啊!!
每段都有對名詞解說(全國電子就甘心.... 阿 是PCADV就甘心)
希望以後各位PCADV的編輯們都有寫如此好的文章!!!
13ef58f9480fe4ab4bfdf7d5109da21e?size=48&default=wavatar
4.  Jacob (發表於 2008年12月03日 15:52)
至少pcadv放上來
要不然我們也不知道到底原文被刪了多少
也沒有雜誌敢這樣打自己槍吧

發表回應

謹慎發言,尊重彼此。按此展開留言規則