AMD Zen 微架構初步解析

AMD Zen 微架構初步解析

近日 AMD 邀請了部分媒體和分析師參與了 Zen 架構新處理器的進一步細節的討論。這篇文章裡我們將討論架構問題,並與前代處理器作一下比較。 AMD Zen 架構的分支預測,解碼,隊列以及執行,先看幻燈片。

0349b258a06afe4.png_600x600

如果我們從左邊開始看起,我們可以看到大部分的架構細節,包括L1 cache,新的微指令cache,解碼,分發,調度器,執行介面以及load / store ( 後文以L/S 代替)單元的設計。後面的一些幻燈片描述了cache的頻寬。

18d261b0ee902c2.png_600x600

首先,Zen 與前代架構的很大一處不同在於,出現了微指令cache ( 幻燈片上有時候寫的 op cache,實際上意思就是 micro-op,容易誤導大家 )。 AMD 的推土機架構在設計上沒有微指令cache,就必須從其他cache中提取細節,來執行頻繁使用的微指令。 Intel 很早就開始用微指令cache了,效果非常好 ( 在 Core 2 處理器的 Conroe 架構上引入的重要改進 ),所以對於 AMD 來說這應該能帶來不小的提升。不過 AMD 沒告訴我們這個緩衝區的大小,估計在適當的時候會給出訊息。

拋開含糊不清的“增強的分支預測器”不說,AMD 這次也沒披露解碼器的設計。但是他們表示每週期可以解碼 4 條指令到隊列。這個隊列在微指令cache的輔助下,到調度器時能達到最高每週期 6 條指令。因為解碼器可以解碼一條指令,然後該指令隨後拆分為兩條微指令 ( 這讓指令和微指令的區別變得模糊 )。此外,這個微指令隊列還能提高每個整數和浮點單元的利用率。 AMD 不像 Intel 那樣給整數 / 浮點一個公用的調度器,而是繼續使用分離的調度器。

整數部分包括 ALU, AGU 以及 L/S 操作。 L/S 單元每週期可以執行 2 次 16 字節的 load 以及 1 次 16 字節的 store 操作,利用 32KB 8 路組相連回寫式 L1 數據cache。 AMD 明確說明這是回寫式cache,而不是推土機上的穿透式cache ( 這會在一定條件下帶來大量的閒置時間 )。 AMD 聲稱cache內的 L/S 操作延遲會更低,但沒再做進一步說明。

每核心浮點部分包括兩個乘法介面,兩個 ADD 介面,每週期能夠執行兩條捆綁的 FMAC 命令或者一條 256bit AVX。把整數和浮點部分合起來看,Zen 核心在指令級並行上將會有很大提升——提升多少取決於cache和重排序cache 。這次沒給出 ROB 的具體數據,只說排序操作的指令調度窗口將會增大 75%,發射寬度提升 50%。即便是對天生IPC 就低的AMD 處理器來說,核心並行性變得越好,其他的方面也會變得有效率多了,這也使得這次用的SMT 在多執行緒上占得了先機。

解密新的cache結構

5859a572b986870.png_600x600

這次的cache結構相比以前做出了重大改進,而且是朝著好的方向。相較於推土機,Zen 的 L1 cache在大小和關聯性都翻倍了,而且是寫回式而不是穿透式。同時採用了非對稱 L/S 單元,因為在大多數情況下 load 操作比 store 要頻繁得多。指令cache不再是兩個核心共享,同時關聯性也翻倍,這將減少cache未命中的情況。 AMD 聲稱 L1 數據和指令cache延遲都很低,今後將公佈更多細節。
L2 cache變成了每核心 512KB,8 路相連,這是 Intel Skylake 上 256KB 4 路關聯的兩倍。另一方面,Intel 的 L3 cache在高端 Skylake Core i7 處理器上是每核心 2MB,每 CPU 8MB;而在 Zen 上則是每核心 1MB,這兩者都是 16 通道關聯。

5dd399b6b73d343.png_600x600

實際上,上面的幻燈在描述上是有點曖昧的。沒有說多少核心共享 8MB L3,更沒說是不是每顆晶片上的所有核心都是共享同一個 L3 的。然而我們從一個消息來源獲得的信息( 在AMD 的官方文檔上找不到的那種) 表明,Zen 的8 核晶片上是4 個核心為一個簇,每個簇4 個核心共享8MB L3,8核晶片有兩組8MB,共16MB 的L3。這樣的話就是每核心 2MB,但這也說明了 Zen 的 L3 不是完全共享的,而 Intel 的則是完全共享的。這樣做的原因估計和模塊化有點關係,通過增加這樣的模塊可以做出從4 核心直到32 核心的各種處理器,但Zen 的每核心L3 和Intel 的依然都是每核心2MB,這沒有任何優勢可言。

從其他數據來看,AMD 的 L1 和 L2 比 Intel 的更大,延遲更低。而且 L1 和 L2 距離核心更近,還是每核心獨立的,在單執行緒性能上應當會有顯著提升。但更大的獨立 L1 和 L2 帶來的壞處是,每個核心都要監聽其他核心的cache,確保 “傳遞的是乾淨數據” 以及 “L3 上的原數據不過期”。在整體性能上,AMD 給出的總體數字是 Zen 在cache頻寬上是前代的 5 倍。

更低的功耗,FinFET 和WatchDog時鐘

在 AMD 發布 28nm APU Carrizo 和 Bristol Ridge 的時候,介紹的一個重點就是一系列降低功耗和提升能效的技術。有一部分技術延續到了 Zen 上,而且伴隨著製程更新,還加入了一些新的技術。

8d75c2ccbb7fcaf.png_600x600

首先就是 FinFET。雖然大部分的人都已經熟悉 FinFET 到吐了,但我們還是要介紹一下。

FinFET 的設計能在給定頻率下設計出電晶體的低功耗版本。每個FinFET 代工廠給出的技術指標都不同,但Zen 用的GlobalFoundries / Samsung 14nm 技術和Polaris GPU 上用的不會差太多,這意味著AMD 使用的是14nm 的高密度版本,能在同等功耗下達成更高性能,或者低功耗下達成同等性能。 ( 當然,這代製程距離 Intel 的 14nm 製程仍有差距 )

d2e98ce1fc528a3.png_600x600

AMD 介紹說工程師們一直很注重功耗和能效,在性能和功能單元的效率上做了很多權衡 ( 比如提升 1% 的性能,代價是 2% 的能效損失 )。不僅有微指令cache可以節約讀取指令cache的電能,改善的預取機制等也能減少工作量。但 AMD 也說明,為了提升能效, Zen 的WatchDog時鐘 ( Clock Gating ) 將會很激進。

AMD 第七代 APU 上其實也有差不多的設計,保持在效率最高的那個點 ( 特定性能 ) 是最好的方式。上圖似乎暗示著每個核心的不同部分 (取決於用途 )都有獨立的WatchDog時鐘 (比如解碼單元或者浮點介面 ),雖然目前還無法確認。同時還需要有非常快速的WatchDog時鐘 ( 1-2 個週期 ),要知道WatchDog時鐘與功耗門限不同,WatchDog時鐘更難設計。

同步多執行緒 SMT
Zen 架構上,每個核心支持兩個執行緒,這叫做同步多執行緒。 Intel 版本的 SMT 早在 2008 年就開始啟用了,其他的廠商比如 IBM,在 POWER 8 上支持最多 8 個執行緒 ( SMT8 )。讓一個核心處理兩個執行緒很困難,需要很多資源來確保執行緒之間不會因爭奪cache而互相阻塞。 Zen 桌面版將會有 8 核 16 執行緒。

1e8cd56dd1e8ad7.png_600x600

 

在之前的推土機上,共享浮點單元使得浮點性能不如人意。但 Zen 的設計更類似於 Intel,每個執行緒都和一個單獨核心差不多,不會有推土機上的資源限制。有了更多的資源,SMT 將會提升 IPC,大家都很期待能知道哪些負載可言從中獲益。

時間計劃和供貨週期

在幻燈片上寫著 Zen 將會在 2017 年初大量出貨 ( 這是又跳票了 )。由於 AM4 平台上 Summit Ridge 和 Bristol Ridge 使用同樣的插槽,可能我們能從 AMD 的 OEM 們那裡先見到 Bristol Ridge 進入市場。沒有哪個主賣消費級產品的半導體廠商會在年末清倉季發布新品,而且第一季度還會有 CES 之類的大型展會。我們認為到那時候大家肯定能拿到這些新處理器。

AMD 表示隨著正式發佈時間的臨近,會公佈更多的架構細節。此外還提到了一些營銷策略上的決定,比如Zen 不會是實際產品線的名稱 ( 暫定的實際平台代號是 Summit Ridge,不過到了出貨時候也可能會發生變化 )。

78045ccfa3e4b2b.jpg_600x600

總結

這次 AMD 的介紹比媒體預想的要深入。當有人告訴我們去參加一個小型發布會,並且說會有 200 多家媒體和分析師到場時;我們還估計應該就是 AMD 吹吹牛,發表一下重申要回到高端市場的宣言之類的事情。但實際上AMD 給出了部分架構上的詳盡介紹,甚至還介紹了基本cache結構,這齣乎了我們的意料,估計這個星期媒體上都會是AMD 的新聞了吧( 如果還真的有很多人關心圖形卡之外的AMD 的話)。

出處:cnbeta.com

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

Loading