當前位置:
首頁 > 科技 > AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

Intel近日在內部發表一篇告員工的內參文章,全文在Reddit上泄露了出來,表示歷經50餘年的Intel與AMD的競爭進入了新的階段。AMD和Intel創立時間都在68-69年,兩個公司的位置也十分接近,兩個公司的業務重疊領域也很多,可以說是歷經50年的對手。但在2018年,AMD的銷售額為64.8億美元,員工數10100人,而Intel卻有超過了700億美元的銷售額和超過10萬員工,這兩者之間有著超過10倍的差距。

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

Lisa Su在擔任AMD CEO的五年就是AMD股價飛升的五年,在這段時間裡,AMD股價上升了681%,遠遠跑過Intel和標準普爾的水平。AMD在最近兩個財年增長速度都超過20%,Intel認為AMD作為個強大的競爭對手在重新崛起。之前Intel的Roadmap是一個季度更新一次,但最近一次更新已經過去了快半年,很明顯Intel正在準備從內部重新調整自己的產品策略來應對Zen 2的挑戰。

而作為消費者,我們更為樂於見到AMD的強大,旗鼓相當的相互競爭才能觸動行業的發展。在Zen發布之後,Intel就很明顯的加快了產品規格提升的速度,僅僅兩三年的時間,處理器規模就從7700K的4核心,提升到了9900K的8核心,這在幾年之前是很難想像的。要知道4核心8線程作為非HEDT的旗艦,從2600K到7700K都未曾動搖過,但Zen卻改變了這一切。短短兩年Intel桌面平台核心數就實現了翻番,現在千元已下的i5就已經有之前i7級別才有的性能和規格。

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

而在7月7日發售的全新一代Zen 2,也被給予很高的期望。在京東平台預售3700X的預定量高達4465件,而相同價格定位同期預定的i7 9700F預定量只有36件(截至2019年7月7日8點),其之間有124倍的差距,這作為一顆高端處理器而言實屬不易,看來Zen 2大成功。

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

Zen的成功是有目共睹,Zen 2的期待情緒也是尤其高漲,但伴隨高漲的情緒奇怪的氛圍也滋長起來,就是對於Zen 2的各種抬高。AFAN群體似乎認為3700X就可以拳打9900K一樣。這樣情況是多種原因導致的,既有錯誤信息引導,也有人蓄意帶節奏。

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

早些時候晚上有個不明出處的圖,上面寫著3800X頻率可以有4.7GHz,GPU-Z單線程得分可以有635分(但實際上3800X超頻只能有4.3GHz,得分也就520分水平)。

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

稍後有個Passmark得分上傳泄露,媒體就編撰出《三代銳龍最弱的一顆U:單核滅門9代酷睿》這樣的標題。

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

到7月7日發布前夕,又有了3600遊戲全滅8700K的測試,真是喜聞樂見。

社交媒體和傳統媒體都不自覺的,或者蓄意的抬高對Zen 2的評價,這樣的結果就是導致大眾對於Zen 2存在過高的期待。但這樣的過高的期待,在Zen 2 NDA解除之後同真實性能對比就會形成巨大的落差,期望越大失望也就越大,大眾對Zen 2的認知也會由徹底肯定轉換成對立的徹底否定。這樣的抬高心理預期的信息傳播大多人雖然僅僅是出於娛樂精神,但也不能排除少數人有著不可告知的目的。

而本篇評測的主要目的,就是去偽存真,在本源、應用和市場層次上告訴你Zen 2到底怎麼樣,到底值不值得買。


AMD Zen 2 微架構概述

在當年 Ryzen 發布會的時候,AMD 已經向媒體公布了 Zen 的接替者 Zen+、Zen2 等後續微架構,和初代的 Zen 或者說 Zen 1 相比,Zen+ 在微架構上的改動非常小。

目前所知的,Zen + 的改進主要是 CPU 的二級高速緩存時延從 17 個周期縮短為 12 個周期以及提升了預拾取,其他的就是靠製程提升頻率以及在內存控制器上改進實現更快內存的支持,IPC(每周期指令性能)的提升只有大約 3%。

相當於 Zen+ 而言,Zen 2 是 Zen 的真正微架構改版,在流水線的前後端都有大幅度的修改,涵蓋了高速緩存、分支預測、新指令支持、執行埠和內部匯流排的擴充以及外部匯流排的升級。

按照 AMD 的說法,相對第一代的 Zen 而言,Zen 2 IPC 提升可以達到 15%,作為一個改進型的微架構,這樣的幅度在摩爾定律日益失效的今天而言,是非常可觀的。

接下來的內容可能會有些枯燥、晦澀,但是如果你能靜下心來看的話,還是會比較有趣的,因為我們將探究 Zen 2 這個微架構到底在哪些地方做了改進,而它們又將對哪方面產生影響。

說到這,我覺得需要說明一下,所謂的微架構,是指指令集的邏輯實現,例如功能組織、邏輯設計,一般由架構師來進行這個工作,架構師將研發人員提供各種功能模塊擺在面前,然後考慮到各種(成本、功耗、可用性)妥協的情況下,將它們依據合理的規格組織在一起。

對於我們這些局外人來說,微架構就是一張張的微架構圖,而 Zen1 和 Zen 2 的微架構是長這樣的:

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

我們都知道,Zen 採用了 CCX 內核複合體的多層次多核技術,每個 CCX 內有 4 個上圖中的 Zen 內核,四個 Zen 內核之間透過一塊 CCX 內的三級高速緩衝實現數據同步、共享,而 CCX 之間的數據同步和共享必須透過名為 IF 的系統匯流排跑到主內存上進行。

因此,程序和操作系統必須確保相儘可能都在一個 CCX 內進行數據交換才能達到性能最佳化,當然,這個問題其實在 Intel 的一些 Xeno MP 上也是存在的。

我們下面討論的主要集中在 CCX 內部或者說 Zen 2 內核的微架構情況,因為這才是 Zen 2 真正實現更高 IPC 的所在。

Zen 2 微架構改進概覽

Zen 2 微內核和 Zen/Zen+ 都同屬一個家族,但是在細節上有很多不一樣的地方:

1、製程:Zen 2 採用了 CPU 內核和北橋片上分離的設計,CPU 內核採用台積電 7 納米製程(Zen+ 是 12 納米),伺服器版(EPYC Rome)的北橋採用格羅方德 14 納米,桌面版(Ryzen 3000)的北橋是台積電 12 納米。

2、內核:


前端:

改進了分支預測器;

改進了預取器;

改進了微操作標籤;

改進了微操作高速緩衝;

更大的微操作高速緩存(從 2K ops 到 4K ops);

增大了派髮帶寬;

後端:

更大的回退(retire)帶寬;

浮點單元:

數據通道提升至兩倍寬(從 128 位增加到 256位);

兩倍執行單元(FMA 指令寬度從之前 128 位增加到 256 位);

位寬加倍的 Load/Store(載入/存儲)單元(從之前的兩個 128 位 L/S 兩個 256 位);

整數單元:

寄存器堆從 168 個增加到 180 個;

增加了一個 AGU(地址生成單元),使 AGU 數量增加到 3 個;

更大的調度器(從 4 個 14 ALU 條目 + 兩個 14 AGU 條目增加到 4 個16 ALU 條目 + 1 個28 AGU 條目);

更大的指令重排序緩存(I-ROB,從 192 個提升到 224 個);

內存子系統:

一級高速指令緩存從 64KiB 縮小到 32 KiB;

一級高速指令緩存從 4 路組關聯提升到 8 路組關聯;

二級數據地址轉譯緩存(DTLB)容量提升到 1.33 倍,達到 2048 個條目(Zen/Zen+ 是 1536 個條目);

存儲隊列從 44 個增加到 48 個;

3、CCX:


三級高速緩存從 8MiB 提升到 16MiB;

三級高速緩存時延性能下降,從 35 周期增加到 40 個周期;

4、安全性:


硬體級抵禦幽靈攻擊;

密鑰/虛擬機的支持數量增加;

5、I/O:


PCIE 4.0;

Infinity Fabric 二代:

每通道傳輸率提升到 2.3 倍(10.6 GT/s -> 25.6 GT/s);

內存時鐘 MCLK 與 IF 時鐘 FCLK脫耦,可以實現 2:1 和 1:1 的倍頻率;

支持 DDR4-3200(之前是 DDR4-2933)。

7、指令集:


CLWB:對修改過的高速緩存塊(Cache Block 或者說 Cache Line)進行回寫操作,同時可以將該高速緩存塊保留在高速緩存層次結構中。

WBNOINVD:將內部高速緩存所有修改過的存儲塊寫回到主內存中,但是不將高速緩存標記為無效(也就是不刷新)。

RDPID:讀取處理器 ID。

從列表來看,Zen 2 的變化是幾乎全方位的,前後端、內存子系統、匯流排系統以及指令集,都為這個微架構注入了新的魔法,其中的三條新增指令對性能的影響不會很大,FMA4 指令也未被重啟,所以我們更多的是關注 Zen 2 微架構的前後端部分。

Zen 2 前端——高速緩存以及分支預測器

微操作高速緩存

Zen 的微架構在很多方面都和 Intel 的 Core 系列 CPU 非常類似,例如微操作高速緩衝(μops-Cache,Intel 也稱之為 Decoed Stream Buffer 或者 DSB,AMD 對微操作的簡稱是 OC,而 Intel 對其簡稱是 UC)。

Zen1/Zen+ 的微操作高速緩存大小都是最高 2K 指令,如果按照 AMD 的軟體指南,提到微操作高速緩存的大小是 2KiB(第 2.1 節,p18)。

這個 2KiB 的說法似乎是有點讓人感到疑惑的,因為解碼後的指令或者說微操作都是固定長度的,而微操作的長度不可能只有 1 個位元組(8 位)。

相比之下,Intel 的 Coffee Lake(CFL,2017 年第三季發布,就是現在的 9000/8000 系列)微操作高速緩存大小是最高 1.5K 指令,一般認為 Intel 的微操作長度大約是 3 個位元組左右。

微操作高速緩存里放的都是循環程序中已經解碼過的指令,這些已經解碼過的指令稱作微操作。

採用微操作高速緩存這樣的好處是在可以簡化解碼器設計的同時維持儘可能高的指令並行度。

要知道 x86 作為一種複雜指令集,其指令長度不是固定的(1 到 17 個位元組),所以像 Intel 的多路 x86 解碼器都是採取一個複雜解碼器搭配幾個簡單解碼器的方式。

在微操作高速緩存發揮作用的時候,標準的指令拾取和解碼處理會被繞過。按照當年 Intel 提供的數字,微操作高速緩存的平均命中率可以達到 80%,這意味著在 80% 的時間裡,x86 解碼器的耗電都可以節省掉。

Zen 的微操作高速緩存帶寬最高可以做到每個周期 8 條指令,相比之下,Zen 的傳統取指和解碼器只能做到每周期 4 指令。

Zen 2 的微操作高速緩存大小增加到了 4K 指令,兩倍於上一代,這意味著可以提高微操作高速緩存的命中率,改善循環的性能。

不過作為代價,Zen 2 的一級指令高速緩存被減半位 32KiB,作為補償,一級指令高速緩存的組相聯從之前的 4 路或者說 4 組提升到了 8 路,作用是提高一級指令高速緩存的命中率。

TAGE 分支預測器

相對於微操作高速緩存,Zen 2 在分支預測上的改進帶來的性能提升可能更大。

現在的處理器都採用了超流水線和超標量設計,流水線上有多個工位負責不同的工作,例如取指、解碼、執行、寫回以及為了提升頻率而加進去的驅動工位,每個內核內都有多條這樣的流水線。

以 Zen 1 為例,它的整數流水線長度大約是 17~19 級工位(17 是微操作高速緩存命中後的情況),如果放在以前的話,這算是很深的流水線了(當年被詬病流水線深度太長的 Pentium 4 大約是 22 級或者 31 級工位)。

更長的流水線好處是縮短每個指令的處理時間,便於實現更高的頻率,但是為了讓流水線保持滿載,必須找出可以在流水線中重疊的不相依指令流,只有這樣才能實現指令並行。

例如流水線中存在條件跳轉指令的時候,由於相依性不確定的緣故,處理器必須等待其通過執行工位後,才能讓下一條指令進入取指工位。

下圖所示的,就是經典的四級工位流水線(取指、解碼、執行、寫回)在遇到分支時遭遇到的流水線工位停擺動畫示例(垂直方向是流水線工位狀態,水平方向是時間周期):

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

動圖來源:https://github.com/Eugene-Mark/BranchPredictorDemo

如上圖所示,這是一條可以每個周期執行一條指令(1 IPC)的四級工位流水線,當出現條件分支指令的時候,第一條指令和第二條指令之間的流水線停擺周期會達到兩個周期,相當於損耗了 50% 的性能,流水線中出現停擺工位的情況,有時候被稱作「氣泡」,這裡就是有兩個氣泡。

為了降低分支導致的性能損失問題,人們提出了預測分支行為的技術,而在處理器中實現這個功能的單元就是分支預測器(Branch Predictor)。

依然以上面的四級工位流水線為例,看看有了分支預測器後,條件分支不被選中的情況:

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

可以看到,流水線保持著充盈運作狀態,3 條指令用了七個周期來完成,而之前是需要 9 個周期,第一條指令和後續指令是緊挨著運行的。

不過分支預測也不是每次都準的,像靜態分支預測也就是 80% 的命中率,即使如此 20% 的預測失敗率對性能也是有巨大影響的,因此人們又提供了動態分支預測,例如 2-bit 狀態機,就是使用單個分支的最近行為來預測該分支的未來行為。

由於流水線工位越來越多(越來越長),分支預測失敗造成的性能影響與日俱增,因此動態分支預測器的開發一直是微架構比較重大的研發課題,但是這方面進展其實比較慢。

時至今日,人們還在為最後的 3% 成功率拼盡全力,因為現在想要提高 1% 的命中率往往意味得在前人的基礎上再減少 30% 的誤預測率,這是一個巨大的挑戰。

Intel 公司最近發表了一篇名為《Branch Prediction Is Not A Solved Problem: Measurements, Opportunities, and Future Directions》的論文,開篇就提到:

「For example, we show that correcting the mispredictions made by the state-ofthe-art TAGE-SC-L branch predictor on SPECint 2017 would improve IPC by margins similar to an advance in process technology node.」

大意就是,在 SPECint 2017 這個業界認可的基準測試中,採用最新式的 TAGE-SC-L 分支預測器達成的誤預測糾正能力,可以達到的每周期性能提升幅度相當於提前使用了下一代節點製程。

Intel 就是這麼認為的,並且很可能已經在其處理器中採用了類似於 TAGE 的概念,相關的論文也表明,Intel 在 TAGE 有一定的參與度。

TAGE 預測器的全稱是 TAgged GEometric history length branch predictor,直譯過來就是標記幾何歷史長度分支預測器,由兩級分支預測器組成。一個是常見的基本預測器,用於提供默認的預測,另一個其實一組標記預測器,提供一個只符合一個標記的預測結果。

TAGE 分支預測器及其衍生的設計自從 2006 年的 CBP-2(第二屆分支預測冠軍賽)以來,一直都位居冠軍榜單上,從未丟過桂冠,其優勢就是成本效益比,在 06 年推出的時候,就憑藉同樣的晶元面積預算,以顯著的優勢擊敗了 04 年 CBP-1 里出現的所有分支預測器。

分支預測器很重要,而 TAGE 分支預測器是目前最好的分支預測器,如今 Zen 2 也引入了這個最好的分支預測器。

Zen 1 的分支預測器沿用自針對低功耗處理器 Jaguar 的分支預測器,AMD 對其命名為神經網路感知分支預測器,不過 Jaguar 的流水線深度只有 14 級,Zen 是 17-19 級流水線深度。按理說流水線越深,分支預測失敗的懲罰就越高,因此對分支預測器的性能就越高,事實上除了流水線深度外,Zen 2 的超標量能力也是遠高於 Jaguar 的,這會進一步增大分子懲罰的幅度,故此神經網路感知分支預測器對 Zen 來說是有點拖後腿的。

為此,AMD 在 Zen 2 上採用了兩級分支預測機制,原來的神經網路感知預測器依然保留作為一級分支預測器,而 TAGE 則被引入作為二級分支預測器。

我們在上面啰嗦了一大堆東西,到底在實際應用中會有多少的性能變化呢?我們在這裡使用 Fritz Chess benchmark 也就是大家眾所熟知的國際象棋來做一個對比。

國際象棋是一個有密集分支指令的應用,當初我使用這個測試軟體的,目的是為了對比流水線 31 級的 Pentium 4 和流水線 12 級的 AMD Athlon X2 5000+(K8 系列 Windsor 微架構,90 納米製程)的,下面這個圖表可以讓大家回憶一下當初這兩個產品的性能對比:

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

Pentium 4 家族使用的甚深流水線設計使其分支預測失敗導致的性能損耗遠高於 K8,在 Fritz Chess Benchmark 中,這個問題會被顯著放大,上面的測試結果表明這是一個比較適合用於測試分支預測損失的測試。

為了確定流水線深度的影響,我覺得有必要看看 Zen 2 的流水線深度到底是多少級的。

AMD 和 Intel 沒有公布過新近處理器的流水線深度,不過我們可以透過測試分支預測失敗的懲罰來獲知。

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

上表中的左側是以偽代碼方式提供分支程序測試片段,以第 7 個測試(Test 6)為例:

Test 6, N= 1, 8 br, MOVZX XOR ; if (c & mask) { REP-N(c^=v[c-256]) } REP-2(c^=v[c-260])

這段內容包含了一個 MOVZX 內存載入操作指令,它需要額外的 5 到 6 個周期來執行,在支持亂序執行、亂序 L/S 的處理器中,這個動作通常會被掩蓋掉。

從上圖中可以看到,這個 Test 6 的 Zen 2/Zen 1 測試結果分別是 12.22/12.30 個周期,加上 MOVZX 的 5 個周期,那這個測試的 Zen 2/Zen 1 有效結果就是 17 個周期。

從測試結果來看,Zen 2 的分支預測懲罰都在 17-19 個周期左右,Zen 1 則是 17-21 個周期左右,Coffee Lake 和 Kaby Lake 都是 16-20 個周期左右。我們認為 Zen 2 在流水線長度上和 Zen 1 都是類似的,即 19 級工位(stage),由於微操作高速緩存的原因,有時候可以視作等效 17 級工位。

Zen 2 和 Coffee Lake 的流水線深度也非常接近,也就是一個工位的差別,因此,只要我們測試的時候,兩者的頻率盡量設置到一致(鎖定 4GHz,減少頻率波動干擾,內核數設定為一個,關閉硬體多線程),運行 Fritz Chess 的結果就可以高度反應兩者的動態分支預測性能差別。

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

高速緩存正如你所看到的,採用了 TAGE 分支預測器的 Zen 2 在同頻下的 Fritz Chess 性能快了 20% 以上,和 Core i7 9900K 相比,也快了 5% 左右,回想上一次 AMD 在這個測試中領先 Intel,一晃已經過去了 12 年。

TAGE 分支預測器對 Zen 2 的性能提升毋容置疑,但是另一方面,所有的處理器都非常依賴高速緩存。

所有的處理器都採用了多層次內存子系統,而靠近內核的則是高速緩存,Zen 2 和 Zen 1 一樣採用了三級高速緩存設計(微操作高速緩存如果算是零級的話,那可以算是有四級高速緩存),每個 Zen 內核都有自己獨立的 L1/L2 高速緩存,CCX 內的四個內核透過 L3 高速緩存共享、交換數據。

首先讓我們來看看帶寬部分:

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

我們的內核微架構測試,都是在 BIOS 內設置單內核、關閉多線程,關閉電源管理,強制 4GHz,內存設置為 DDR4-3200 的情況下測試,目的盡量直接探究每個內核的微架構細節。

說明一下的是,由於受到 Excel 的限制,橫坐標的數字格式不支持二進位(如果你有辦法實現的話不妨留言告知),你在圖表看到的橫坐標值都是十進位值,所以單位標註都是 KB、MB 這類十進位單位,而非二進位的 KiB、MiB,圖中的 33KB 標註,相當於 32KiB,34MB 相當於 32MiB,如此類推不一而足。

從測試結果來看,Zen+/Zen 2 這邊的 L1/L2/L3 高速緩存讀取帶寬可以一直保持在每周期 32 位元組的水平,而 Coffee Lake 雖然紙面上說 L2 Cache 的 Load 帶寬是每周期 64 位元組,但是我們並未從測試中看到這樣的情況出現。

數據高速緩存時延測試

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

Zen 2 和 Zen+ 數據高速緩存的時延曲線非常類似,不過 Zen 2 由於更大的三級高速高速緩存而在 8-16MiB 的位置有更好的表現。

Coffee Lake 在 32KiB 以內都能保持 4 周期的時延,但是在之後到時延表現都不如 Zen 2。

Zen 系列的 L2 Cache 的時延無法維持在一個穩定的平台,但是可以在 256 KiB 前都維持比對手更低的時延曲線。

指令解碼/緩存/執行能力

眾所周知,x86 是複雜指令集架構,但是和精簡指令集相比,區別並非什麼指令數量的多寡,而是其指令長度格式不一。

以最簡單的 NOP 空指令為例,它的 x86 編碼長度是一個位元組,加法指令 ADD、乘法指令 MUL 等則是兩個位元組,最長的 x86 指令有 17 個位元組。

我們採用了部分有代表性的 x86 指令進行指令解碼測試,測算出解碼帶寬信息(結果受微操作高速緩存、指令高速緩存、解碼器、執行單元、回退等工位影響):

正如你所看到的測試結果,Zen2/Zen + 都具備每周執行 5 個單位元組指令的能力,而 Coffee 則是只有每周期 4 單位元組指令的能力。

Prefixed CMP 其實是針對 x86-64 指令的測試,可以看到,在微操作高速緩存範圍內的指令流能夠為處理器維持每周期 4 條 8 位元組指令的執行能力。

如果單純從表格來看的話,Zen2 似乎和 Zen+ 一樣,但是我們將收集的數據整理為圖表後,看到了更多的細節:

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

我們選取了 NOP 指令(x86 指令長度 1 個位元組)以及 Prefixed 的 CMP 4(x86 指令長度 8 個位元組)的測試結果做了上面的兩個圖表。

可以看到 Zen 2 在 NOP 的時候,每周期 5 指令的峰值數據可以維持到 3KiB 以上,而Zen+ 只能維持到大約 0.2KiB 左右。

在長度為 8 位元組的指令時,Zen2 每周期兩指令的峰值數據可以維持到 16KiB,而 Zen + 只能維持到 8KiB。

從目前的測試結果來看,我們估計 Zen2 的微操作高速緩存容量按照位元組衡量的話,應該不低於 16KiB。

微架構實現細節對比

AMD銳龍第三代處理器+ROG C8H首測:尋根Zen 2性能本源(上)

我們使用 AIDA64 v6.00.5122 Beta抓去了 Zen 和 Zen2 的指令時延、吞吐率,其中 Matisse 就是 Zen2 的桌面版內核微架構版本代號。

上表中的 MOV r32 到 VPCLMUL 等指令就是從其中 4000 多條指令測試項目中提取出來的有代表性的測試結果,豎線的兩側分別是時延和吞吐率,單位是周期,因此吞吐率其實是 CPI 值,即周期/指令,是 IPC 的逆向表示方式。

其中涉及到 ymm 寄存器的測試都是 AVX2 256-bit 指令。

從測試結果來看,Zen 2 的 AVX2 ADD/MUL/FMA 等指令的吞吐性能較 Zen 提升了一倍,證明 Zen 2 的確在 AVX2 實現上有做改進。

Zen 2 內核微架構總結

從微架構角度看,Zen 2 的最大改進是對前端單元的加強,包括引入了目前幾乎最強大的動態分支預測器 TAGE 分支預測器作為第二級分支預測,使得 Zen2 可以在分支密集型的應用中比上一代的 Zen+ 快 20%。

即使和 Coffee Lake 相比,同頻下的 Zen 2 在分支密集應用中也能快 5%,這是多年未曾出現過的現象,上一次在這類測試中出現 AMD 比 Intel 快的時候是因為比對手短 50% 流水線深實現的。

而這次是雙方流水線深度相當的情況下,憑藉動態分支預測器實現,對於未來數年 AMD 的競爭前景意義更大,現在的情況就好像兩個槍手對決,拔槍速度相當,但是 Zen2 的槍法很可能更准。

Zen 2 的微操作高速緩存達到 4K(微操作),從上面的解碼帶寬測試來看,我們認為這個改進對於有大量循環的應用會有一定的改進。

由於兩個向量單元引入了 256 位 AVX2 指令單周期執行能力,Zen2 在計算吞吐能力比上一代微架構提升了一倍,達到了和 Coffee Lake 相當的水平,x265 這類引入了 AVX2 優化的應用將會受益。

Zen 為 AMD 從頹勢中重新找回與對手競爭的信心,Zen+ 為 AMD 取得了市場,而 Zen 2 則是 AMD 讓我看到了真正翻身的希望。

這次應該可以至少堅持到 Intel 的 Comet Lake,嗯,時間窗口有半年,能爽半年還是不錯的。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |