看板 PC_Shopping
作者 KotoriCute (Lovelive!)
標題 [閒聊] AMD Zen 成功背後不為人知的故事
時間 Thu Jul  2 01:29:53 2020


癡漢水球寫了一篇應該是目前中文圈科技媒體
對於Zen的前世今生到裡面的各種技術細節的最詳細科普長文
也是他最近少見比較偏硬的文章
對於想了解Zen架構的人來說很值得一讀
建議點進去看文圖並茂網頁版

--
AMD Zen 成功背後不為人知的故事

https://technews.tw/2020/07/01/story-of-amd-zen/
AMD Zen 成功背後不為人知的故事 | TechNews 科技新報
自從 2017 年 AMD 準時推出「技術規格看起來稍微正常點」的 Zen 微架構 CPU 後,總算脫身逃離了 2011 年以來推土機(Bulldozer)家族「4 年走音工地秀」的泥沼,回到跟英特爾正面對決互毆的擂台,而 2019 年 7 奈米製程的 Zen 2,在 2015 年後就擠牙膏擠到青黃 ...

 

自從 2017 年 AMD 準時推出「技術規格看起來稍微正常點」的 Zen 微架構 CPU 後,總
算脫身逃離了 2011 年以來推土機(Bulldozer)家族「4 年走音工地秀」的泥沼,回到
跟英特爾正面對決互毆的擂台,而 2019 年 7 奈米製程的 Zen 2,在 2015 年後就擠牙
膏擠到青黃不接的當下,更讓 AMD「稍微」重現了十多年前 K8 時代的輝煌。這些各位讀
者都很熟悉的故事,就無需浪費篇幅錦上添花──即使背後充滿看不見的波濤。

俗語說得好,失敗為成功之母,任何成功都建立在一路累積的基礎上,AMD 亦不能免俗,
讓 Zen 成功的一切條件,無不是奠基於過往的遺產與教訓。我們就由遠到近,一步步抽
絲剝繭,重新踏上這條 AMD 走了 25 年的漫漫長路。


Zen 才是真正的 K10

AMD CPU 代號的 K 源自「(Intel Pentium)Killer」,眾人皆知的 AMD 高效能 x86
CPU 演進如下(不包含小核心 Bobcat 體系):

K5(1996):由超純量(Superscalar)架構大師 Mike Johnson 親自操刀的「Pentium
Killer」,但英特爾並未開誠布公的公開 Pentium 新增指令細節,為了確保與 100% 跟
 Pentium 相容,逆向工程搞了很久,上市日期一再延宕,讓痴痴等待的 Compaq 等不及


K6(1997):直接購併 NexGen,修改現成的 Nx686,取消類似 Pentium Pro 的 L2 快取
專用匯流排,到內建 L2 快取的 K6-2+和 K6-III 才算大功告成,但已時不我與。

K7(1998):出身 DEC Alpha 團隊的 Dirk Meyer 變成的「x86 世界的 Alpha 21264」
,AMD 首次能與英特爾全面性較量效能。

K8(2003):Fred Weber 主導的 K7 強化版+x86-64+伺服器等級的 RAS(
Reliability, Availability and Serviceability)+HyperTransport+整合型記憶體控
制器,讓 AMD 悲願成就,一舉攻入高獲利的企業伺服器市場。

K9:英文發音近似「狗」(Caine),太過負面,因此沒這個代號。

K10(2007):4~6 核 K8 強化版+整合式 L3 快取記憶體,AMD 開始「包水餃」兩顆打
一顆,也逐漸無力抵抗英特爾小步快跑的鐘擺(Tick Tock)攻勢。

K11(2011):由 IBM Power4 的總工程師 Chuck Moore 操刀,接連四代被英特爾鐘擺痛
扁的「推土機」(Bulldozer)家族,叢集式多執行緒(CMT)和模組化浮點運算器暗藏了
 AMD 對 Fusion 大戰略的熊熊野心與對未來 GPGPU 局勢的離譜誤判。

K12(預定 2017):從頭到尾搞笑的「全新高效能 64 位元 ARM 處理器」,還沒開始就
結束了,只活在簡報裡,無愧當時「簡報王」名號。

Zen(2017):深度管線、追求高時脈、同時多執行緒(SMT),根本是 Andy Glew 原先
的 K10 原案投胎轉世。

總之,嚴格說來,Zen 才是「真正的 K10」。這句話你可以仔細再看一次,我會等你。

1990 年代初期創造英特爾革命性 P6 微架構 5 位總工程師之一的 Andy Glew,對英特爾
內部提議代號「Yamhill」的 64 位元 x86 指令集被拒絕,2002 年跳槽到 AMD 參與
 x86-64 指令集的制定工作,並短暫擔任 K10 總工程師。為何說「短暫」?他老兄原本
提案的 K10 是類似英特爾 NetBurst 的設計:深度管線、追求高時脈、未犧牲執行單元
寬度、同時多執行緒(SMT),然後就又被打槍了,只是這次動手的換成 AMD 高層。

他老兄一不爽,又在 2005 年跳回前東家英特爾,但恐怕運氣一直不太好,加入因太過「
史詩級災難」(單核心晶粒面積 213mm2  幾乎是 Prescott 兩倍,TDP 又超過 150W 上
看 166W)而慘遭腰斬的 Tejas 開發案。2009 年再度離開英特爾,歷經 MIPS 和 nVidia
。瞧瞧 LinkedIn 的個人介紹,現在正待在搞 RISC-V 的 SiFive。

為何真正的 K10 會沉寂這麼久才浮上檯面?這跟 AMD 研發能量明顯遠不及英特爾、難以
承擔精密複雜的微架構有很大關係,一顆當兩顆用的 SMT 並不是好開發驗證的東西。據
 AMD 在 1998 年申請的幾份專利文件,原始 K8 有兩版,共同點只有一個:兩個簡單的
「外寬內窄」小核心,明眼人腦中應該馬上浮現推土機的雛型了。

但 AMD 大概是靠 K7 和 K8 日子過太爽了,遑論 K8 讓 AMD 大舉入侵高利潤、市場動量
又很持久(意思是產品暫時輸人,也不會很快被趕出來)的伺服器市場,「先講求不傷身
體,再講求效果」的維穩心態作祟,或在 2006 年 7 月耗費 54 億美元購併 ATI 這件事
,燒了太多錢,不得不節約研發經費,遲遲不見全新後繼接班人。

此外,AMD 融合 CPU 和 GPU 的「Fusion 大戰略」(The Future Is Fusion)也影響了
 CPU 發展策略。AMD 過度樂觀預期 GPU 的泛用化進程,認定假以時日 GPU 將可取代
 CPU 的浮點或部分 SIMD 整數運算,讓推土機變成依附 Fusion 的附庸,擺明當「天時
、地利、人和」三者兼備時,直接用 GPU 換掉兩個簡單整數運算核心共用的浮點運算器


不過推土機在商業競爭失敗,並不代表對之後 Zen 的成功毫無貢獻,除了讓 AMD 得到足
夠「不能亂搞管線前端」的教訓,讓分支預測與指令管線拖鉤的解耦式分支預測器(
Decoupled Branch Predicator)是支撐 Zen 效能競爭力的一大功臣,甚至是 Zen 2 可
實做「機械學習分支預測器」的地基。各位別急,後面會提到。


反過來利用晶圓代工商業模式來提高電晶體密度與生產良率

AMD 創辦人 Jerry Sanders 有一句名言「有晶圓廠才是真男人」(Real men have fabs
),在今日真是莫大的諷刺。

雖然像英特爾和昔日 AMD 的高度垂直整合 IDM(Integrated Design and Manufacture)
商業模式,可確保設計和製程彼此最佳化,但在追求 Time To Market 的世界,專業的無
晶圓廠 IC 設計公司(Fabless IC Design House)、IP 授權提供者、電子輔助設計工具
(EDA Tool)與晶圓代工業者(Foundry)的高度分工,卻更能藉由成熟的「研發供應鏈
」互通有無,沿用早被諸多客戶千錘百鍊的晶圓廠製程參數、現有 IP 功能模組和函式庫
,迅速完成產品的開發與驗證,並縮短時程降低成本。

SPARC 兩位要角之一的 Fujitsu,會在新世代 HPC 產品 A64FX 轉向 ARM 並交由台積電
 7 奈米製程代工,其因在此,光曾被蘋果和眾多客戶「嚴刑拷打」的寶貴經驗,對盡快
搞定產品絕對是重中之重的無價之寶。

這件事也發生在放棄自有晶圓廠的 AMD。K11 時代,AMD 反過來利用晶圓代工生產 GPU
的高密度函式庫和自動化設計工具,砍掉多達 30% 的 CPU 晶片面積與耗電量,特別是過
往「動用大量人力手工布線才能電路最佳化」的功能單元,如複雜的浮點運算器。「GPU
的電路設計最佳化程度優於 CPU」這檔事,在 21 世紀初期的 AMD 連想都不敢想。

這些經驗和努力,對 Zen 的成功絕對舉足輕重。就商業角度來看,這也讓 AMD 未來保有
開發新型商業模式的彈性,中國中科海光(Hygon)的 Dhyana 就是採用授權的 Zen 核心
,當然美國政府願意「樂觀其成」那又是另一回事了。


「RISC86」與 4 道 x86 指令解碼的先行者

將指令格式與定址模式複雜到讓人頭痛的 x86 指令,在指令解碼階段「轉譯」成一至數
個固定長度、格式簡潔的「類 RISC」微指令(Microinstruciton),以簡化處理器執行
單元與資料路徑的設計,利於提升時脈,並「將電晶體預算砸在最值得被加速的簡單指令
,不常用到的複雜指令,就用微碼(Microcode)ROM 產生 ROP 微程式慢慢跑」,已是
 20 年來 x86 CPU 的共同特色,超純量架構大師 Mike Johnson 領銜的 K5 則是先驅(
如果不限超純量,NexGen Nx586 則稍早),將非固定長度的 x86 指令解碼成平均 59
Bits 長的 ROP(RISC86 Operation,發音是「ar-op」)。

AMD K5 還有個值得紀念之處:x86 史上首款單一核心最多可同時解碼 4 個 x86 指令的
 CPU,下一款是相隔近十年的英特爾 Merom 了,不提尷尬的 K11,AMD Zen 更晚了自家
「前輩」超過 20 年。


強化非循序指令執行效率的兩段式微指令轉譯與「類 VLIW」的微指令派發

x86 CPU 的指令解碼器將 x86 指令轉成微指令,看起來好像很美好,但隨著 CPU 可同時
非循序執行的指令數量越來越多,「微指令洪災」就變成大麻煩,需要複雜的功能單元與
相對應的電路成本,監控管理一海票微指令的生老病死與相依性,這也不利減少 CPU 功
耗。

在這就非得岔題談一談「首款雙核心伺服器 CPU」的 IBM Power4 了,為縮減指令控制邏
輯的複雜度,Power4 一次將 5 個解碼後的指令「打包」成一個「一個蘿蔔一個坑、每個
指令垂直對應一個執行單元」的超長指令(VLIW)包(一時腦筋轉不過來,可想一下
 AMD GPU 以前的 VLIW5),裡面 5 個指令全部執行完畢才能退返(Retire),控制邏輯
單元只需管控相當於 100 個指令的 20 個指令包,這讓 Power4 這部分電路規模只有前
代 Power3 的一半,且更便於拉抬 CPU 時脈。

AMD 則是從 K7 開始兩段式微指令轉譯,指令解碼器先將 x86 指令解碼一至兩個 MOP(
Macro-Operation),到了內部要在指令保留站(Reservation Station)「派發」(
Dispatch)到執行單元前,再拆成更小的 uOP(發音「ur-op」),接著才「真槍實彈上
陣」,避免一開始就把微指令拆光光,淹沒指令管理單元,也變相將指令解碼器的複雜度
分散到「大後方」。

關於無法直接用「Fast Path」指令解碼器處理成 MOP 的複雜指令,由「Vector Path」
的微碼 ROM 產生一系列 MOP 微程式。前面就提過,所謂「RISC86」真正的精神就如同
 RISC:把經常用到的情況盡可能加速(Make The Common Case Fast.),將最佳化資源
集中在最常碰到的刀口。

同期英特爾的手段就讓人莞爾,起源於 Pentium M 的「Macro-Fusion」,英特爾直接藉
由增加指令保留站的運算元數量,削減 CPU 內部微指令的總量,例如用一個三運算元(a
=b+c)微指令代替兩個(a=a+b),說穿了也稱不上什麼「融合」,或還不如說「本
來就應該這樣做」更貼切。

相對英特爾從 Merom 開始,指令保留站某些 Port 擠滿了一堆不同性質執行單元的「爆
漿撒尿牛丸」樣貌,AMD 那「整數浮點一邊一國的簡潔風」在「簡單就是美」的推土機展
露無疑,非常「VLIW」,就算沒有像 IBM Power4 那樣「指令打包送快遞」,但看在總工
程師都是同一位如假包換的 Chuck Moore 份上,企圖簡化複雜度以追求更高運作時脈與
更高投資效益的意圖是一致的。

儘管推土機家族的下場不是太好看,但類似理念也同樣被 Zen 繼承,反正各位只需了解
一個殘酷的現實:畢竟 AMD 的研發能量遠不如英特爾,不見得有雄厚本錢採取過於精密
複雜的架構風格,此類「窮人思維」在 AMD CPU 發展史上無所不在。


尋尋覓覓千百度才穠纖合度的分支預測

「電腦 」(Computer)和「計算器 」(Calculator)的不同點在於:電腦具備「條件判
斷」的能力,依據不同條件,執行不同指令流。各位可將電腦程式的運作流程,想像成一
個「棋盤」,以一個角落為起點,對角線的角落當終點,在棋盤上反覆移動,不限制前進
或後退。如發生條件判斷的分支(Branch,必須先等待條件判斷的執行結果,才能判定該
分支「發生」),或無條件判斷的跳躍(Jump),就會變更指令流,並中斷指令管線運作
,尤其前者傷害指令管線化的 CPU 效能,才需要「以古鑑今」的分支預測(Branch
Prediction)技術。

「過猶不及」的「分支預測」一向公認是 AMD 落後英特爾的技術弱點,到了 Zen 才改觀
。賈誼〈過秦論〉那句意謂秦始皇繼承六代功業的「奮六世之餘烈」,套用到 Zen 看似
突破性的分支預測技術,實在再適合不過了,在 Zen 之前,剛剛好也是 6 世代:K5、K6
、K7、K8、K10、K11,有夠巧。

因 K11 的分支預測技術和前代相比簡直徹頭徹尾大相逕庭,故不列於下表。


一般我們談到的是「動態」分支預測,透過小型化快取記憶體,記錄分支行為的歷史,並
隨時蒐集各類參考資訊,動態的修正預測的結果。近年來拜「CPU 安全漏洞」所賜,「預
測執行 」(Speculative Execution)、「非循序執行 」(Out-Of-Order Execution)
和「分支預測」等技術名詞,變得非常熱門也經常混淆。

各位只要記得,對近代高效能 CPU,「預測執行=分支預測+非循序執行」,CPU 根據分
支預測的結果,先斬後奏「賭博」性執行指令流,再藉由非循序執行引擎維護指令執行順
序的一致性,以及當預測錯誤時,回復該分支前的處理器狀態。

分支預測究竟有多重要?假如有一顆 CPU 沒有任何分支預測機制(或說有,但總是預測
錯誤),當執行分支指令時,直到目標指令被擷取,所需要的時脈週期數「分支傷害」(
Branch Penalty)是 3 個時脈週期,分支占了程式碼五分之一,那會損失多少效能?

3 * ⅕ =0.6

1 / (1+0.6) = 0.625

我們就可簡單推算出,平均執行每個指令都會多出 0.6 個時脈週期,等於增加 60% 執行
時間,執行效能僅剩下 62.5%。

很不幸的,這個簡單的案例還真的有倒楣的苦主:AMD K5 的初版「SSA/5」(PR75 到
 PR100),因不明原因,分支預測功能被關閉,還「附贈」奇怪的 CPU 閒置狀態,「完
全體」5K86(PR120 到 PR200)的同時脈效能就硬是多了整整 30%。讓人極度好奇,假若
 Compaq 知道他們死撐著不用 Pentium,只為了等待這樣的產品,會做何感想。

K5 的分支預測超級陽春,準確率僅 75%。當連續執行分支指令時,等於每道指令平均多
 0.75 個時脈週期,沿用上面「分支占五分之一」的算法是 0.15,效能僅剩 87%,怎麼
看分數都不及格。但這時各位也應心知肚明,後期 K5 多出來的 30% 效能大致上是怎麼
來的,分支預測的確發揮了關鍵性作用。

(75% * 0) + (25% * 3) = 0.75

0.75 * ⅕ = 0.15

1 / (1 + 0.15) = 0.87

購併 NexGen 而來的 K6 卻是 AMD 史上罕見的「過度投資」,和 K5 同為六階管線、但
最多只能解碼兩個 x86 指令的 K6,在分支預測暴力到整個過頭,足以傲視 AMD 歷代
 CPU 架構,但這是天大的浪費,況且分支預測越複雜,發生錯誤的回復時間也就越長,
K6 的錯誤代價就硬比 K5 多出一到兩個時脈週期(3 vs. 4 或 5)。

K6 的分支預測準確率號稱高達 95%,我們可推算出執行每個分支指令只會多出 0.2 到
 0.25 個時脈週期,「分支占五分之一」就 0.04 到 0.05,效能維持在 95% 到 96%,遠
勝過 K5。

(95% * 0) + (5% * 4) = 0.2

(95% * 0) + (5% * 5) = 0.25

1 / (1 + 0.04) = 0.96

1 / (1 + 0.05) = 0.95

不知道是不是針對 K6「過度投資」的反動,或是覺得過於複雜的分支預測只會帶來反效
果,AMD 在 1998 年 Microprocessor Forum 揭露 K7 的神祕面紗時,最讓人意外的不是
和 DEC Alpha 21264 如出一轍的「體格」,而是「Long Pipeline, But Simple Branch
Predictor」。

對外界種種質疑,AMD 堅持「更精確的分支預測器只會帶來更複雜的設計、更多的預測時
脈週期與回復效能損失」,還更大膽的將標準的 2 位元 Smith 演算法  4 種狀態,砍成
只剩下 3 種(將 Strongly not taken 和 Weakly not take 合為一種 not taken)。對
照 K7 壓倒性的龐大執行單元,在這種小地方偷工減料,真的是莫大諷刺,但更扯的還在
後頭。

演進自 K7 的 K8 與「壓榨 K8 剩餘價值」的 K10,指令管線更深,沒有擺爛裝死的藉口
,乍看之下「知恥近乎勇」亡羊補牢,但卻很精明的利用「L1 / L2 互斥性快取(
Exclusive Cache)」的特性,趁著資料從 L1 指令快取「被驅逐」(Evicted)寫入 L2
快取時,將分支選擇器「偷放」在 L2 快取記憶體包含指令的快取區塊之 ECC 欄位,「
節儉」至此,堪稱一絕。

受制於不佳的分支預測精準度與「連如此簡單的整數核心都餵不飽」的 L1 指令快取記憶
體,甚少人注意到指令管線深達 20 階的 K11,解耦式分支預測器(Decoupled Branch
Predicator)早已默默為 Zen 2 的「機械學習分支預測器」TAGE(TAgged GEometric)
分支預測器預先埋好了路基。

相近於今日少人知悉的 Rise mP6,K11 不等發生指令快取誤失才去抓取目標指令,推土
機的分支預測機制與指令擷取「脫鉤」,主動標定分支預測目標的相對位址,如不存在於
指令快取內,就「主動出擊」預先擷取,可掩蓋發生快取誤失時的延遲,並替更耗時的機
械學習分支預測器「爭取訓練的時間」。

依照 AMD 的說法,Zen 2 的分支錯誤率比 Zen 減少了 30%,意味著 Zen 從 97% 的精確
度提升到 Zen 2 的 98%。但不論解耦式分支預測器還是機械學習分支預測器 TAGE,都是
英特爾研究多年並發表過學術論文的產物,很可能早就導入產品了,但沒刻意拿出來說嘴
。不過花了這麼長的時間,AMD 總算在分支預測趕上英特爾的水準,仍值得可喜可賀。


激增有效實質容量的互斥性快取架構

各位有沒有想過:Ryzen Threadripper 3990X 的「288MB」快取容量究竟是怎麼算出來的


答案是「64 核心 ×  512kB 第二階快取」加上「8 個 CCD ×  2 個 CCX ×  16MB 第三階
快取」 ,因兩邊的內容是「互斥」(Exclusive)的,而第二階快取完全包含(
Inclusive)了第一階快取的內容,所以有效容量是 32MB+256MB=288MB,這也是 AMD
CPU 從 K7 後期至今,一個持之以恆的共同特徵,而英特爾則從 Nehalem 開始,走上另
一條徹底相反的路線。

互斥性快取架構的發生背景是 K7 從 Thunderbird 開始,CPU 直接整合 256kB 或 64kB
第二階快取記憶體,但 K7 的第一階快取總容量多達 128kB,不讓兩者「油水分離」,將
會浪費大量的有效容量,如 Duron 的 L1 竟然還是 L2 兩倍的蠢事(128kB vs. 64kB)
。從 K7 到 K10 是 L1 / L2 互換,K11 到 Zen 則調整成 L2 / L3 輪轉。

K8 / K10 利用這點,趁 L1 指令快取的資料搬到 L2 時,將分支選擇器隨著預先解碼(
Pre-decoded)和奇偶校驗(Parity)欄位,一併寫入確定存放指令的 L2 快取區塊之
 ECC 欄位,但互斥性快取架構也是 AMD CPU 最末階快取延遲過長的元兇。


伺服器等級的記憶體自動偵測容錯機

伺服器要的是 RAS:可靠性(Reliability)、可用性(Availability)、可服務性(
Serviceability),而最大的潛在威脅,莫過於構成地球低強度背景輻射的帶電粒子,所
引起位元翻轉的記憶體軟錯誤(Soft Error),動輒偶發的多位元錯誤更是一大挑戰。
K8 之所以能替 AMD 敲開伺服器天堂的大門,被偵錯容錯機制高度保護的快取記憶體與主
記憶體,以及檢測硬體錯誤並回報軟體進行復原處理的硬體檢查架構(Machine Check
Architecture,MCA),統統功不可沒。

從 K8 到 Zen,ECC(Error-Correcting Code)越來越強悍,L1 資料快取記憶體可「修
復單位元錯誤,偵測雙位元錯誤」,L2 / L3 快取記憶體更「修復雙位元錯誤,偵測三位
元錯誤」,但「資料損壞了頂多重抓」的 L1 指令快取「不太需要完善保護,只須奇偶校
驗」的原則毫無改變的跡象,事實上也沒必要,起碼節約成本。

K8 整合式記憶體控制器支援防止記憶體多位元錯誤的 Chipkill 技術,如何做到?下面
這張圖闡述得非常清晰。

既然記憶體模組使用的 ECC 演算法無法糾正超過單位元的錯誤,那麼我們就「分而治之
」,讓超過單位元的錯誤,不會出現在單一記憶體模組。假設有 4 條記憶體模組,而記
憶體模組顆粒資料匯流排的寬度為 4 位元,我們各自分開存放 ECC 偵錯碼的額外顆粒的
 4 條資料線,和另外 3 條模組的資料線組成 4 位元寬度,即可預防單一記憶體模組發
生超過 1 位元的錯誤。

論伺服器可靠性 RAS,英特爾、AMD 是半斤八兩,像在 Nehalem-EX(Xeon 7500 系列)
時期,英特爾硬把 Itanium 一整套搬到 x86 平台變成「MCA Recovery」,可在記憶體區
塊標示硬體無法修復的錯誤,通知作業系統或虛擬機器管理員不再使用這些單元,關閉標
示錯誤的資料並重新啟動程式,AMD 也從來沒有缺席(軟體支援性就見仁見智了),但
 AMD 在 21 世紀初期曾短暫從英特爾手上奪過伺服器的技術優勢,依然值得大書特書。


經過千錘百鍊的快取資料一致性協定

快取資料一致性協定(Cache Coherence Protocol)對多核心與多處理器平台的效能的重
大影響,無論怎麼說都是「著毋庸議」的,不只伺服器 RAS,x86 CPU 在 AMD K7 問世的
 MOESI 協定,相較於行之有年的 MESI,Owner 狀態允許尚未更新主記憶體的內容前,不
同 CPU 之間可提前共享、並交換修改後的快取區塊,可大幅減輕系統匯流排的壓力,這
因 K8 整合記憶體控制器,而在多處理器環境,讓主記憶體分散在四處的 NUMA(
Non-Uniform Memory Access)架構,更是決定效能的關鍵。

AMD 或多或少有英特爾的 MESIF 協定殷鑑在前,Zen 進一步擴充成 MDOEFSI。

L3 快取「海納」L2 快取標籤(Tag)的巧思,使其搖身一變,成為可過濾快取一致性協
定廣播的 Probe Filter(或稱之為 Snoop Filter,AMD 的行銷名稱是 HT Assist),不
必像 K10 切割部分 L3 快取容量,或在系統晶片組塞一大塊 SRAM 當成記錄所有快取區
塊狀態的目錄,僅付出低成本實現高效率的快取一致性。

將 MDOEFSI 協定的細節束之高閣,目前看來在實體 CPU 晶片(CPU Complex)數量極多
的 EPYC 和 Threadripper 運行還不錯,長期大型單一晶粒共用 L3 快取的英特爾卻沒有
這樣的特殊考量,也許當英特爾哪天基於成本因素,被迫和 AMD 一起「包水餃」,那時
才是考驗英特爾快取一致性協定的最佳時機。


支援大量處理器延展性的系統連結架構

最近 AMD 在財務分析師大會發表名為「Infinity Architecture」的 Infinity Fabric
3.0,不僅可連接多顆 CPU 和多顆 GPU,更可當成 CPU 和 GPU 之間的橋梁。

但這對 AMD 來說並非新穎的概念,AMD 早在十幾年前 K8 的 HyperTransport 就打算這
樣幹了,而 Infinity Fabric 就是從 HyperTranspor 延展出來的「超集合」,擁有更完
整的功能,從定義 AMD 內部 SoC IP 區塊的通用控制方式,到解決異構資料一致性的互
連方案,都是持續進化中的 Infinity Fabric 可大展身手的領域。


AMD 未來面對的挑戰依舊嚴峻

本文標題並不表示 AMD 這間公司就此功德圓滿。回顧 25 年的 AMD K 系列 CPU 迢迢來
時路,想必各位可漸漸感受到身為碩果僅存英特爾唯一 x86 競爭者(好吧,勉強還有台
灣 VIA 的 Centaur 和俄羅斯的 Elbrus),面對資源數倍於己的超級強敵,身處毫無犯
錯餘裕、如履薄冰、步步為營的艱困處境,研製產品時的取捨與掙扎,更是 AMD 困境的
縮影。

至於時下的 AMD 是否「已經」成功,也是個巨大的問號,伺服器市場市占率、營收與獲
利仍遠遠不及 K8 核心 Opteron 全盛期水準,另一邊的 GPU 戰場,還是被 nVidia 壓著
打,實際上只能算勉強站穩腳步,離「成功」兩字仍有一段相當長的距離。AMD 另一個比
較大的潛在危機在於「未來性」,這和公司能真正「發大財」互為表裡。

如果對比「蘇大媽」和「皮衣教主」的演講內容,相信大多數人仍會覺得前者「相當傳統
保守」,後者「象徵光明未來」。從量子電腦、人工智慧到自駕車等新興應用,AMD 統統
沾不上邊,連在高效能運算市場要反攻 Top500 席次都還頗有難度,唯有鞏固並擴張資料
中心的獲利與營收,才有足夠銀彈投資未來。偏偏這裡又是英特爾重兵集結、拚死防禦、
明槍暗箭明招暗招毫無保留的「現金母牛」(Cash Cow),絕不會平白拱手讓人。

AMD 能否守住得來不易的戰果,唯有寄望晶圓代工商業模式有機會讓英特爾的製程霸權從
此一去不復返,或英特爾再度犯下重大戰略失策,但筆者對此的態度並不樂觀,2020 年
第三季的 Zen 3 與第三代 EPYC「Milan」對 AMD 將是極為重要的命運轉捩點。從光鮮亮
麗簡報溢出來的滿滿憂慮,其實都早寫在 AMD 高層和無數員工的臉上,只是你沒看出來


好戲即將上演,就讓我們拭目以待。

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.252.43.91 (臺灣)
※ 文章代碼(AID): #1U_CWJrq (PC_Shopping)
※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1593624595.A.D74.html
※ 同主題文章:
[閒聊] AMD Zen 成功背後不為人知的故事
07-02 01:29 KotoriCute.
atpx: 該不會是巴哈姆特那位WaterBall?1F 07/02 01:34
mmonkeyboyy: 超長pipeline& cache上下功夫 不過是加大還是多猜才是過去十年來的硬功夫  至於換台積就是品質和產能換上了不只一個等級的提升就是了2F 07/02 01:38
anedo: 他常抱怨文章寫完馬上就被對岸轉走了..5F 07/02 01:40
mmonkeyboyy: 架構好也不一定有用  某個頭頭竟然做了APR核心的決定  導致核都比別人慢  架構再好看起來還是搞笑
對岸轉走後還會回頭嗆人  你懂技術嗎XD6F 07/02 01:42
cz031300: 文章太長 幫各位簡化 丟掉晶圓廠 抱緊台GG AMD真香9F 07/02 01:54
mmonkeyboyy: 到不是  這文章有很多硬核的資訊10F 07/02 01:55
cz031300: 真的太硬了XDDD11F 07/02 01:56
mmonkeyboyy: 不過也是少數在講歷史時沒講到Jim大神的文章12F 07/02 01:57
waiter337: 看完惹 有夠長13F 07/02 01:58
kimisawa: 架構外 真的是GG才有今天的反攻14F 07/02 01:58
mmonkeyboyy: 其實很多公司都是靠GG才上霸主  一沒GG就要GG了15F 07/02 02:00
kikka: 水球寫了快二十年了吧…16F 07/02 02:02
AsuMckD: 好了啦 是贏intel了沒17F 07/02 02:16
yymeow: 「只是你沒看出來」18F 07/02 02:27
saito2190: 好長19F 07/02 02:31
ok771105: 723表示?20F 07/02 03:14
wei115: 推21F 07/02 04:02
ronald279: 先推再看 好長22F 07/02 04:06
hcwang1126: Top500很快前10就會洗榜 HPC建置到上線會耗個大半年 對公司來說就是營收遞延23F 07/02 04:07
WARgame723: AMd成功的背後,有一條脊椎25F 07/02 05:05
hankower: 推26F 07/02 06:56
suliwen76: 工讀生?27F 07/02 07:34
niverse: 推個28F 07/02 08:05
kaltu: 應該先提醒計算機組織的課程內容沒修過也要自修一點才看得懂29F 07/02 08:54
testPtt: 太長不想看31F 07/02 09:03
huckerbying: 我覺得有點奇怪的是文章說分支預測intel已研究多年,只是沒拿出來說嘴,言下之意是在說ZEN在用的intel其實也有樣品在?
那吊詭的點就來了…為何捨棄了像AMD的預測,反而用現在這種難以處理的分支預測系統?32F 07/02 09:06
giorno78: 精采37F 07/02 09:09
david54001: 推38F 07/02 09:26
chen5512: AMD的預測方式與INTEL的預測不同,猜測這與專利可能有關,所以AMD才另闢一條路也剛好避開INTEL的漏洞39F 07/02 09:26
kimula01 
kimula01: 難得的深度文章41F 07/02 09:52
AKSN74: 上面噓的還真不意外42F 07/02 09:55
mmonkeyboyy: AMD分支比較深 所以在預測方面可以做到更多選擇性Intel也有預測啊  不需要的東西也強迫拿出來
就變安全性漏洞  倒退十年了啊XD
AMD近年來在3D和記憶體上的設計其實比較大膽也先進當年那個推土機APR實在太好笑了....43F 07/02 09:59
maplefoxs: 真D深48F 07/02 10:16
rainnight56: 要看這篇文章要先修計組計節XD
*結49F 07/02 10:23
dustlike: 這篇超硬 給正在修計組的學生看才剛好XD51F 07/02 10:42
b10007034: P幣黑多少52F 07/02 10:47
remember: intel 是舊的分支預測很穩定,好幾代都沒大改,數十年不變XD53F 07/02 10:51
mmonkeyboyy: 現在要大改了啊 XDXD55F 07/02 10:55
pc0805: 還沒贏啦,只是你沒看出來56F 07/02 10:59
guezt: i有說要改分支預測嗎? 不是丟給OS去補?57F 07/02 11:17
john60111: 先推,不然別人以為我看不懂58F 07/02 11:21
mmonkeyboyy: 應該這麼說  為了解決原來security問題  i皇停了不少東西造成效能變差  最近幾次i皇都不停在的提分支預測的準備性要提高  面積會加大的  等等blabla etc如果都丟給OS補就不用特別提了不是嗎59F 07/02 11:34
AKSN74: 面積會加大是指Die size嗎?63F 07/02 11:37
mmonkeyboyy: 應該說佔的部份會變大  理論上來說用cost換accuracy在一篇去年sunny cove的文章有提到64F 07/02 11:39
Richun: 這篇真的好硬 分支預測跟cache的偷吃步對pipeline來說是重點 怎麼取捨是各家不同了 intel:我留些洞66F 07/02 11:40
mmonkeyboyy: intel 的 分支和prefetch 一直都是他的秘密之一
他的ooo window根本都要 double了68F 07/02 11:41
friedpig: 反正本來就是花電晶體都有辦法做到更好 但牙膏王捨不得啊70F 07/02 11:42
AJizzInPants: 最愛嗆人去自殺的立文出來啦?
要好好念書喔72F 07/02 11:42
mmonkeyboyy: 我猜是....還沒找到更合適的解法  就先拉cost蓋過74F 07/02 11:43
friedpig: 不過接下來內顯要拆出去 製程在繼續微縮 架構也在重設計了 慢慢就能搞了 不過牙膏王應該還是在找cost跟75F 07/02 11:43
jim924211: 我i粉朋友看到這篇文直接崩潰7pupuxd77F 07/02 11:43
mmonkeyboyy: 就cost 換時間  intel就重新定義了十年前的自己啊78F 07/02 11:44
friedpig: performance的平衡 加太大面積換到一點點效能他不幹79F 07/02 11:44
mmonkeyboyy: 不是什麼說的 silicon是鑽石啊....加大一點錢就上去很多點  這生意會做不下去啊
又不是 IBM 老子賣你一萬塊  要不要隨便
L3 不夠  給你 L4好不好啊  再不夠SSD送你當buffer80F 07/02 11:45
friedpig: 當然也不是大傻幣 不過牙膏王心態應該還是老大心態毛利還是要顧 不能多讓利一點搶效能
AMD現在是在追的 寧願少賺一點多噴一點效能也好84F 07/02 11:46
AmibaGelos: 幫補充hsw實測和tage87%像大概是魔改版 至於同樣東西i蓋成洞洞館a ok和設計方向有關 a因重跑耗電加了不準就不預測的但書剛好擋v2 i則是丟給tage榨出最後點性能 skl連stack都一起炒成洞 真.臭臭的大雜燴87F 07/02 11:48
mmonkeyboyy: 隔壁就照著教科書上寫的  多塞記憶體進去就對了91F 07/02 11:52

--