在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

AMD ZEN 4架構的前端內存子系統及AVX-512的深度解讀

ZYNQ ? 來源:半導體行業觀察 ? 作者:半導體行業觀察 ? 2022-11-14 09:26 ? 次閱讀

AMD 的 Zen 4 架構在科技領域備受期待。因此,在其發布之前,許多關于其性能提升的謠言四處流傳。在本文中,我們將對 Zen 4 的無序執行引擎的前端內存子系統,以及 AVX-512等進行深入解讀。

希望這個分析讓大家對AMD的最新架構有更深入的了解。

概述和框圖

從 1000 英尺高處看,Zen 4 看起來很像 Zen 3,但升級分散在整個pipeline中。我們可以將 Zen 4 的情況與 Zen 2 的情況進行比較。在這兩種情況下,AMD 在將其移植到新的工藝節點的同時,都在發展一個堅實的架構。

dba3c214-63b1-11ed-8abf-dac502259ad0.png

遷移到新的制程節點涉及工作量和風險。英特爾通過眾所周知的“Tick-Tock”策略降低了這種風險。每個“Tick”代表一個主要的微架構更改,而每個“Tock”是一個新制程節點的端口,具有非常小的更改。

與 2010 年代初的英特爾不同,AMD 大約需要兩年時間才能遷移到新的工藝節點。Zen 2 于 2019 年中期問世,距 Zen 1 于 2017 年初發布大約兩年后,從 14 nm 升級到 7 nm。Zen 4 于 2022 年末發布,距 Zen 3 于 2020 年末發布大約兩年,并從 7 nm 移動到 5 nm。因此,AMD 的策略可以被描述為“Tick-Nothing-TickTock”。

這是 Zen 3 的比較:

dbb18cd2-63b1-11ed-8abf-dac502259ad0.png

因為數據是公開的,所以為 Zen 3 繪制了更多的執行單元,而為 Zen 4 測試所有這些需要太長時間

前端:分支預測器

CPU 的分支預測器負責將pipeline引導到正確的方向。準確的分支預測器將減少浪費的工作,從而提高性能和電源效率。隨著 CPU 增加其重新排序能力,分支預測的準確性變得更加重要,因為在錯誤預測的分支之后排隊的任何工作都是無用的。

一、方向預測

與 Zen 系列中的其他 CPU 一樣,Zen 4 的方向預測器有兩個overriding levels。制作一個既非常快速又非常準確的預測器可能具有挑戰性,因此設計人員通常必須在速度和準確性之間進行權衡。一個壓倒一切的預測器試圖通過速度優化的 L1 預測器和一個精度優化的 L2 來實現兩全其美,如果預測不一致,它會覆蓋它。

Zen 4 和 Zen 3 似乎具有類似功能的 L1 預測器,但 AMD 顯著增強了 Zen 4 的 L2 預測器。Zen 3 的第二級預測器已經毫不遜色,但 Zen 4 將事情提升到了一個新的水平。它可以識別極長的模式,并且有足夠的存儲空間來很好地執行,即使有很多分支在運行。

dbc04b3c-63b1-11ed-8abf-dac502259ad0.png

英特爾的 Golden Cove 采取了不同的方法。與早期的英特爾大內核一樣,它使用單級方向預測器。Golden Cove 的模式識別能力介于 Zen 4 的 L1 和 L2 預測器之間。

dc0b762a-63b1-11ed-8abf-dac502259ad0.png

左邊是 Zen 4,右邊是 Golden Cove。兩者的分支數都高達 512

Golden Cove 可能會在難度適中的分支中享有優勢,可以由其預測器處理,但不能由 AMD 的 L1 預測器處理。然后,Zen 4 將失去 L2 覆蓋的前端帶寬。如果一個程序有很多難以預測的分支,Zen 4 將具有顯著的優勢;Golden Cove 將遭受更昂貴的錯誤預測。在 Golden Cove 上,錯誤預測的代價可能特別高,它依賴于保持更多指令在運行中以應對其更高的緩存延遲。如果您遭受錯誤預測并最終將它們丟棄,那么在您的核心中跟蹤大量指令將無濟于事。

二、分支目標跟蹤

有一個準確的分支預測器很好,但速度也很重要。您不希望過于頻繁地停止pipeline,因為您正在等待分支預測器提供下一個提取目標。與 Zen 3 一樣,Zen 4 具有兩級分支目標緩沖區 (BTB):branch target buffer 設置,第一級非常大且速度快。Zen 3 的 L1 BTB 可以跟蹤 1024 個分支目標,并以 1 個周期延遲處理它們,這意味著如果目標來自 L1 BTB,則前端不需要在執行分支后停止。Zen 4 的 L1 BTB 保持相同的 1 個周期延遲,但提高了容量。根據分支密度,Zen 4 的 L1 BTB 最多可以跟蹤 3072 個分支目標,但實際上它可能能夠跟蹤 1024 到 2048 個目標。

dc1ea466-63b1-11ed-8abf-dac502259ad0.png

我們已經看到網上聲稱 Zen 4 具有 1.5K 入口 L1 BTB。在我們的測試中,Zen 4 可能偶爾能夠在每個 BTB 條目中存儲兩個分支目標。先前 Zen CPU 的優化手冊詳細介紹了此機制。

“如果分支位于同一個 64 字節對齊的高速緩存行中并且第一個分支是條件分支,則每個 BTB 條目最多可以容納兩個分支。”——AMD 系列 17h 處理器的軟件優化指南

我們的測試在以前的 Zen CPU 上沒有顯示這種行為,因為我們只使用了無條件分支。Zen 4 可能使 BTB 條目共享方案更加靈活,解釋了當分支間隔為 8 個字節時我們如何看到跟蹤的 3072 個分支目標。

Zen 4 的 L2 BTB 大小也略有增加,容量從 Zen 3 上的 6656 個條目增加到 Zen 4 上的 8192 個。更重要的是,Zen 4 的 L2 BTB 更快:Zen 3 在需要來自其 L2 BTB的分支目標時遭受了三個周期的penalty,Zen 4 將penalty降低到一個周期。

dc3a5dfa-63b1-11ed-8abf-dac502259ad0.png

三、間接分支預測

間接分支可以到達多個目標。將它們視為實現 switch-case 語句的選項。它們為分支預測增加了另一個難度維度,因為預測器必須在幾個可能的目標之間進行選擇。AMD 的 CPU 有一個單獨的間接目標數組,用于處理指向多個目標的分支。在我們的測試中,Zen 4 似乎能夠跟蹤多達 3072 個分支目標而沒有明顯的損失。對于單個分支,Zen 4 看到隨著目標數量超過 32 個而增加 penalties ,但此后沒有明顯的飆升表明預測錯誤。

dc443e1a-63b1-11ed-8abf-dac502259ad0.png

相比 Zen 3,Zen 4 對間接分支的追蹤能力顯然更好。從間接目標數組中獲取目標的 penalties 也較低。

Zen 4 在有很多間接分支的情況下比 Golden Cove 做得更好,但是當少數分支到達很多目標時,Golden Cove 可以更好地應對。當必須在大量目標之間進行選擇時,兩種架構似乎都會受到某種penalty,但分支的行為仍在預測器的跟蹤能力范圍內。

dc59a6f6-63b1-11ed-8abf-dac502259ad0.png

一種猜測是 Zen 4 有一個更大但更慢的間接目標數組。前幾代 Zen 的優化手冊表明,間接目標數組可用作壓倒一切的預測器。如果分支碰巧去了上次去的同一個地方,Zen 可以使用其更快的主 BTB 來提供目標,這意味著間接分支的延遲與其擁有的目標數量相關聯。隨著 Golden Cove 上目標數量的增加,我們看到分支延遲的增加較少,這表明英特爾正在使用不同的機制。

四、回報預測(Return Prediction)

調用和返回對是間接分支的一種特殊情況,因為返回通常會返回到調用函數的位置。CPU 使用特殊的返回堆棧來利用此行為。在調用時,CPU 將下一條連續指令的地址壓入堆棧。當有返回時,它會從返回堆棧中彈出地址。這種非常簡單的機制為返回提供了非常準確的預測,因為調用和返回對通常是匹配的。但是,非常深的調用序列可能會溢出堆棧。

dc863220-63b1-11ed-8abf-dac502259ad0.png

與前幾代 Zen 一樣,Zen 4 有一個包含 32 個條目(entries)的返回堆棧。不過,AMD 似乎做了一些改進,使得單個線程可以使用所有 32 個條目。英特爾的 Golden Cove 可能有一個返回堆棧,因為這是一種預測返回的有效方法,但與此處測試的其他 CPU 不同。當調用只有兩個深度時速度非常快,但隨后會減慢并且之后每個調用/返回對的時間不會急劇增加。如果返回堆棧溢出,英特爾可能會順利過渡到在返回上使用其間接預測器。

前端:獲取帶寬

一旦分支預測器確定下一步要去哪里,就該獲取指令了。Zen 4 與前幾代 Zen 一樣,可以通過大型微操作緩存加速這一過程。與 Zen 3 相比,Zen 4 將微操作緩存的大小從 4K 增加到 6.75K 條目。我們對 8B NOP 的測試并沒有顯示出微操作緩存容量增加太多,因為在 32 KB 之后獲取帶寬會下降。L1i 很可能包含微操作緩存。

dc96deb8-63b1-11ed-8abf-dac502259ad0.png

除了微操作緩存和 L1i 之外,指令獲取帶寬下降但仍然非常不錯。Zen 4、Zen 3 和 Golden Cove 都可以從 L2 每個周期維持大約 16 個字節,從 L3 每個周期可以維持略高于 10 個字節。這應該足以防止除了具有大指令占用空間的最高 IPC 代碼之外的所有指令帶寬瓶頸,因為即使在矢量化代碼中,平均指令長度通常也低于 8 個字節。

dca1f7ee-63b1-11ed-8abf-dac502259ad0.png

為了使微基準測試復雜化,Zen 4 似乎成對處理 NOP,就像Graviton 3一樣。我們每個周期從微操作緩存中獲得了荒謬的 12 個 NOP。AMD 表示,微操作緩存每個周期提供 9 個操作,但吞吐量受到下游 6 寬重命名器(renamer)的限制。可能發生的情況是每個重命名器插槽每個周期可以處理兩個 NOP。為了解決這個問題,我們使用了一條指令,將寄存器與自身進行異或(XORs )。將寄存器與自身進行異或是一種將寄存器歸零的常用方法,大多數重命名器都會消除這種情況。

dcc004d2-63b1-11ed-8abf-dac502259ad0.png

但重要的部分是,XOR r,r 的行為就像一條正常指令,一直到重命名器(renamer)。我們現在還可以看到微操作緩存和 L1i 吞吐量之間的差異。一旦 Zen 4 錯過 op 緩存,吞吐量就會受到 4-wide 解碼器的限制。與前幾代 Zen 一樣,L1i 可能比較低的緩存級別提供更多的指令獲取帶寬。但是 Zen 4 的運算緩存的大小意味著它可能可以處理需要大量指令帶寬的大多數情況。如果一個程序有足夠大的代碼足跡溢出操作緩存,并且有很多長指令,它也可能會溢出 L1i。

重命名/分配(Rename/Allocate

在無序執行的 CPU 上,重命名器(renamer)充當有序前端和無序后端之間的橋梁。它的主要工作是分配后端資源以跟蹤運行中的操作,以便它們可以按程序順序正確提交。重命名器也是一個方便的地方,它可以使后端操作更高效。Zen 4 的重命名器能夠打破 zeroing idioms和register to register MOVs之間的依賴關系,其行為與 Zen 3 非常相似。

dcd60156-63b1-11ed-8abf-dac502259ad0.png

Golden Cove 的重命名器功能稍強一些,也可以消除 MOV r,0 情況。它還可以在不使用下游 ALU 的情況下處理添加小的立即數(small immediate values :即指令中提供的值,而不是來自寄存器的值)。

Renamer技巧可以更進一步,通過不為這些情況分配寄存器來節省后端資源。消除的 MOV 可以通過將多個架構寄存器指向同一個物理寄存器來處理,這意味著不必為此類 MOV 分配額外的物理寄存器。如果Renamer知道寄存器的值必須為零,它可以通過在寄存器別名表中設置一個位而不是分配一個實整數寄存器來記住這一點。Zen 4 的Renamer也是這樣做的,它繼承了前幾代 Zen 的特點,尤其是 Zen 3。

dcf80b84-63b1-11ed-8abf-dac502259ad0.png

在大多數情況下,Zen 4 可以避免在識別zeroing idiom時分配物理寄存器。但是,128 位 XMM 寄存器是一個例外。從 Zen 3 開始,使用 XORPS 或 SUBPS 將 1 歸零會占用一個向量寄存器。這有點令人驚訝,因為 Zen 2 在這些情況下可以避免寄存器分配。也許 Zen 2 獨立跟蹤其 256 位向量寄存器的 128 位一半,但 Zen 3 和 Zen 4 以 256 位粒度(granularity)進行跟蹤。在測試序列之前執行 VZEROUPPER 指令沒有任何區別。

在我們測試的所有情況下,英特爾都可以避免分配寄存器,而且這種能力至少可以追溯到 Skylake。即使在 2022 年,AMD 仍在迎頭趕上,盡管這些都是相對次要的細節。

亂序資源

與前幾代 Zen 一樣,Zen 4 對無序緩沖區大小進行了增量改進。結構大小的變化范圍從 ROB 容量增加 25% 到存儲隊列完全沒有變化。對于發生變化的結構,條目數通常會增加 10-20%。總的來說,這些變化比我們看到的從 Zen 1 到 Zen 2 的變化要大一些。

dd03b8c6-63b1-11ed-8abf-dac502259ad0.png

與其主要的競爭對手英特爾相比,Zen 4 在重新排序能力方面仍然是一個相當小的核心。許多關鍵架構甚至比 Sunny Cove 的還要小,更不用說 Golden Cove 的了。但正如我們所知道的那樣,英特爾需要更多的重新排序能力來處理其更高延遲的緩存設置。

在某些領域,Zen 4 的沖擊力也比其headline重新排序緩沖區容量所暗示的要大一些。我們測量了 202 個整數寄存器(共 224 個)可用于保存推測結果,覆蓋了 ROB 容量的 63%。在 Golden Cove,我們測量了大約 242 個整數寄存器,即 ROB 容量的 47.2%。因此,Golden Cove 的重新排序能力更有可能因缺少整數寄存器而受到限制,而且情況更糟,因為 Golden Cove 在使用其物理寄存器文件時似乎效率較低。對于 Zen 4,測得的 202 個整數加法的重新排序容量意味著使用 22 個物理整數寄存器來保存非推測結果。假設英特爾沒有減少 Sunny Cove 和 Golden Cove 之間的整數寄存器文件大小,

Zen 4 的重新排序緩沖區也很特別,因為每個條目( entry)最多可以容納 4 個 NOP。解碼器可能會融合成對的 NOP,并且在重命名階段再次融合成對的 NOP。雖然這不太可能對實際代碼產生重大影響,但測量 1265 個 NOP 的重新排序能力很有趣。我們使用了一個自定義測試,最多包含 128 個整數加法、128 個浮點加法、40 個存儲和 55 個分支(按此順序),以確認 AMD 公布的 320 條目 ROB 容量。

調度和執行

調度程序和執行pipe布局與 Zen 3 相比沒有變化。Zen 3 的調度程序設置是 Zen 2 的重大升級,通過在 ALU 和 AGU 端口之間共享調度隊列,在整數方面提供了很大的靈活性。在浮點和向量執行方面,Zen 3 和 Zen 4 保留了前幾代 Zen 中發現的大型非調度隊列,但從統一的四端口調度器轉移到兩個三端口調度器。在實踐中,這應該很像一個統一的調度器,因為兩個調度器都有類似的管道連接到它們。

dd2b688a-63b1-11ed-8abf-dac502259ad0.png

調度器結構在功率和面積方面往往很昂貴。調度隊列可能必須在每個周期檢查每個條目,以查看它是否已準備好執行。為了使事情變得更加困難,它必須能夠在標記為就緒的同一周期發送執行指令。即使延遲一個周期也會導致毀滅性的 10% IPC 下降,這一切都是由其本身造成的。所有這些都變得越來越難在高時鐘下實現。

AMD 可能選擇專注于提高時鐘速度,而不是提高調度程序的容量。增加調度隊列大小會導致收益遞減。另一方面,性能通常與時鐘速度非常吻合。也就是說,只要您的緩存設置足以防止內存瓶頸,IPC 通常不會隨著時鐘速度的增加而出現太大的下降。AMD 的工程師可能看到,通過在更高的時鐘頻率下運行內核,他們可以獲得更大的整體性能提升,而不是通過加強調度程序設置來增加 IPC。

AVX-512 實施

Zen 4 是第一個實現 AVX-512 指令集擴展的 AMD 架構。Zen 4 在 AVX-512 功能支持方面與 Ice Lake 差不多。在實施方面,Zen 4 旨在實現 Centaur CNS 和英特爾服務器芯片之間的功率、面積和性能平衡。

dd3c1ca2-63b1-11ed-8abf-dac502259ad0.png

AMD 通過將向量解碼為兩個微操作來支持更長的向量長度的悠久傳統。

Bulldozer 通過將 256 位操作分解為兩個 128 位微操作來支持 AVX。K8 也做了同樣的事情,將 128 位 SSE 操作分解為兩個 64 位操作。這種策略讓 AMD 能夠以極少的功耗和面積開銷支持新的指令集擴展,但也意味著當應用程序確實利用更廣泛的向量時,它們并沒有太多好處。相比之下,英特爾在 Sandy Bridge 推出時帶來了full-width AVX 執行。Server Skylake 對 AVX-512 做了同樣的事情。

Zen 4 部分打破了這一傳統,將在 512 位向量上運行的指令作為一個微操作保留在大部分流水線中。因此,每條 AVX-512 指令僅消耗相關無序執行緩沖區中的一個條目。我假設它們在進入 256 位執行pipe后被分解為兩個操作,這意味著指令在管道中盡可能晚地分成兩個 256 位半。我還假設這就是 AMD 的“double pumping”所指的。與 Bulldozer 和 K8 的方法相比,這是一個巨大的優勢。為每條 256 位或 128 位指令跟蹤兩個微操作意味著那些較舊的架構無法使用更寬的向量來保持更多工作在進行中。不過,Zen 4 的做法在面積和功耗方面略貴一些,

512 位存儲是該規則的一個例外。它們仍然被解碼為兩個微操作,這意味著它們消耗了兩個有價值的存儲隊列條目。存儲隊列可能是一個非常熱門的結構,特別是因為存儲必須留在那里直到退休,因為只有已知良好的數據才能提交到緩存。AMD 的存儲隊列比 Intel 的要小很多,因此如果 Zen 4 的 AVX-512 實施存在一個嚴重缺陷,那就是存儲的處理方式。

這可能是因為 AMD 沒有為 L1 數據緩存實現更寬的總線。Zen 4 的 L1D 每個周期可以處理兩個 256 位加載和一個 256 位存儲,這意味著向量加載/存儲帶寬與 Zen 2 保持不變。技嘉泄漏建議對齊更改為 512 位,但這顯然不是申請門店。

dd6955f0-63b1-11ed-8abf-dac502259ad0.png

自 Zen 2 以來,最常見操作的向量執行吞吐量也基本沒有變化,Zen 2 是第一個帶來full-width AVX 執行的 AMD 架構。Zen 2、3 和 4 都有兩個 256 位 FMA 單元和四個 256 位 ALU。起初,這似乎并不令人興奮。但在很多工作負載中,提供執行單元比擁有大量執行單元更重要。與英特爾相比,Zen 4 已經具有具有競爭力的矢量吞吐量。除非我們查看其架構的服務器變體,否則英特爾并沒有顯著的吞吐量優勢,它們在端口 5 上有一個額外的 512 位 FMA 單元。

dd97e1fe-63b1-11ed-8abf-dac502259ad0.png

雖然英特爾的客戶端架構具有與 Zen 4 相當的向量吞吐量,但通過 256 位piles的 512 位操作的處理方式不同。英特爾在端口 0 和 1 上融合了兩個 256 位單元來處理 512 位操作。當將 256 位 FMA 指令與 512 位指令混合時,這會導致一些有趣的特性。Intel 卡在每個周期一個向量操作,可能是因為端口 0 和 1 上的 256 位 FMA 單元必須設置為 1×512 位或 2×256 位模式,但不能同時處于兩種模式。

AVX-512 還允許通過一組 K (mask)寄存器來masking 大多數操作。為了處理這個問題,Zen 4 添加了一個相對較小的掩碼寄存器(mask register)文件。掩碼寄存器有大約 52 個重命名(renames ),這個寄存器文件比我們在 Skylake-X 或 Ice Lake 上看到的要小得多。在最大重排量(maximum reordering capacity)方面,Zen 4 比 Skylake-X 更接近 Ice Lake,因此 AMD 并沒有對這個結構給予太多重視。

總結各種 AVX-512 實施決策:

dda4b686-63b1-11ed-8abf-dac502259ad0.png

Zen 4 從 AVX-512 獲得了比 Centaur CNS 更大的收益,后者以最小的裸片面積開銷實現 AVX-512 支持。反過來,英特爾看到了比 Zen 4 更大的收益。啟用 AVX-512 的 Golden Cove 在此基準測試中實際上在擴展和絕對性能方面都優于 Zen 4。但這可能是這一代人的爭論點,因為英特爾無法在其混合客戶端芯片中啟用 AVX-512 支持。

ddc93b28-63b1-11ed-8abf-dac502259ad0.png

總而言之,AMD 的 AVX-512 實施專注于更好地滿足現有執行能力,并且只在其產生最大影響的地方使用額外的芯片面積和功率。最昂貴的更改可能與擴展向量寄存器文件以使每個寄存器為 512 位寬有關。AMD 還必須在整個流水線中添加掩碼寄存器文件和其他邏輯來處理新指令。與 Intel 的客戶端實現一樣,AMD 避免添加額外的浮點執行單元,這會很昂貴。與 Intel 不同的是,AMD 也保持 L1D 和 L2 帶寬不變,并將 512 位存儲拆分為兩個操作。

結果是非常可信的第一輪 AVX-512 實施。與 Intel 相比,AMD 在一些關鍵領域仍然存在不足,如果 AVX-512 代碼需要大量加載/存儲帶寬并適合核心專用緩存,則尤其處于劣勢。但是,雖然 Zen 4 的目標沒有英特爾那么高,但它仍然可以從 AVX-512 中以與客戶端英特爾架構相同的許多方式受益。AMD 對 512 位向量的支持也強于最初在 K8 Athlon 中對 128 位向量的支持,或者從 Bulldozer 到 Zen 1 的 256 位向量。Zen 4 在可以利用 AVX-512 的應用程序中應該會看到明顯的好處,無需花費大量功率或die面積。

Zen 4還引入了大量的前端和執行引擎改進。分支預測器和微操作緩存改進讓前端更快地將指令帶入核心,并建立在 Zen 3 已經強大的前端之上。后端增加的重新排序能力讓 Zen 4 更好地吸收緩存和執行延遲。

然而,AMD 幾乎沒有改變執行單元和調度程序的設置。執行單元沒什么大不了的,因為 Zen 3 已經有足夠的執行能力了,提供執行單元比增加更多更重要。然而,沒有增加任何調度隊列有點令人驚訝。AMD 提高了調度能力,并且在之前的每一代 Zen 中至少對調度器布局進行了微小的更改。Zen 3 在靈活的布局中已經具備了充足的調度能力,因此 Zen 4 的相同設置無論如何也不弱。但隨著其他組件的改進,調度能力可能會成為更多的限制因素。Zen 4 通常會在整數代碼方面表現出色,盡管 IPC 的增加在時鐘速度提升方面處于次要地位。

Zen 4 在加載和存儲帶寬方面也落后了。它的 L1D 每個周期可以提供 512 位的加載帶寬和 256 位的存儲帶寬。這使得 Zen 4 的 L1D 帶寬與 AMD 方面的 Zen 2 和 Zen 3 或英特爾方面的 Haswell 和客戶端 Skylake 保持一致。Zen 4 在使用 256 位向量(或更小)的代碼方面仍然表現出色,盡管可能達不到 Golden Cove 的水平。

但是,AMD 在支持 AVX-512 方面擁有優勢。如果代碼使用新的 AVX-512 指令和功能,這些指令和功能在 Zen 4 上具有優化的路徑,但沒有直接的 AVX2 等效項,英特爾將發現自己處于不利的不利地位。Zen 4 可能沒有全面的 AVX-512 實施。但如果應用正確,它仍然足以擊敗缺乏 AVX-512 支持的競爭對手。

當然,這假設兩個處理器都沒有受到內存子系統的瓶頸。在線程良好的矢量化應用程序中,緩存和內存性能可能非常重要。這是一個復雜的話題,我們將在后續文章中介紹 Zen 4 的加載/存儲子系統和數據端內存層次結構。

內存執行

與 Zen 3 一樣,Zen 4 使用三個 AGU 來計算加載和存儲指令的地址。這些地址以及存儲數據(如果適用)被傳遞到加載/存儲單元。然后,加載/存儲單元必須面對確保內存訪問看起來按照程序順序執行的復雜工作,同時盡可能多地提取性能。

高性能意味著保持大量操作處于運行狀態以隱藏內存訪問延遲,加載/存儲單元必須通過跟蹤待處理的內存操作來發揮其作用。為此,Zen 4 實現了一個大型加載隊列(large load queue)。自 Zen 1 以來,AMD 的加載隊列的工作方式與 Intel 的不同。在加載操作接收到數據后,加載隊列可以自由地釋放它。一個單獨的、更大的結構用于跟蹤裝載操作直至退出(retirement)。為了區分這些結構,我們將較大的結構稱為“加載驗證隊列”(load validation queue),將發布的加載隊列稱為“加載執行隊列”(load execution queue)。分離出這些結構讓 AMD 可以保持 136 次加載操作,遠遠超過他們公布的加載隊列大小所暗示的。

dde1e498-63b1-11ed-8abf-dac502259ad0.png

Zen 4 上的存儲必須緩沖在一個相對較小的 64 條目存儲隊列中。這個存儲隊列對 AVX-512 代碼的壓力更大,因為 512 位存儲將消耗兩個存儲隊列條目。

一旦內存操作在各自的隊列中,加載/存儲單元必須確保保留內存順序。如果動態存儲的地址與較新加載的地址重疊,則可以將存儲的數據轉發給加載。與 Zen 3 一樣,Zen 4 可以無延遲地進行存儲轉發。也就是說,依賴加載和存儲的鏈將在 2 個 IPC 上執行。

但是,這有適用的不同條款和條件。加載和存儲地址必須完全匹配。如果存儲跨越 32 字節對齊邊界(aligned boundary),則會評估額外的 1 個周期延遲損失。如果存儲跨越 4 KB 對齊的pages邊界( page boundary),該機制將完全失敗。

de0b4cd4-63b1-11ed-8abf-dac502259ad0.png

Zen 4 的存儲到加載轉發特性,使用Henry Wong 的測試方法

負載完全包含在存儲中的部分重疊情況以 6-7 個周期的延遲處理,這比 Zen 3 的 7-8 個周期略有改進。如果加載和存儲重疊,則兩代 Zen 的存儲轉發都會失敗,但僅使用存儲中的數據無法完成加載。Zen 4 在這種情況下需要 19 個周期的懲罰(cycle penalty),這可能對應于等待 store 退出并從 L1D 讀取數據。相比之下,Zen 3 可以在 18 個周期內處理故障情況,但前提是存儲地址與 4 字節邊界(byte boundary)對齊。否則,Zen 3 將遭受 25 個周期的懲罰,而 Zen 4 避免了這一點。對于所有測試的存儲轉發案例,總結依賴于存儲的負載的互惠吞吐量:

de2f9ad0-63b1-11ed-8abf-dac502259ad0.png

Zen 4 保留了 Zen 3 的大部分存儲轉發(store forwarding )特性,并在最常見的情況下略有改進。不太常見的pages邊界交叉情況略有回歸。在兩種架構上,在處理存儲轉發案例時跨越pages邊界都非常昂貴。它比 Zen 1 和 Zen 2 還要貴,最好避免使用。

在大多數情況下,Golden Cove 的存儲轉發延遲比 Zen 4 略低,除非加載和存儲都跨越 64B 緩存線邊界。對于精確地址匹配的情況,Golden Cove 享有吞吐量優勢而不是延遲優勢。使用四個 AGU,Golden Cove 可以為每個周期的兩個加載和兩個存儲生成地址。

對于更常見的非重疊負載,Golden Cove 繼續具有優勢,因為 L1D 以更大的塊訪問,并且將遭受更少的未對齊訪問。我們喜歡將內存訪問視為可字節尋址(byte addressable)且完全隨機的。但在實踐中,緩存是在更大的、對齊的塊中尋址的。這里的“對齊”意味著內存地址是特定大小的倍數。例如,32 字節對齊的內存地址的低 5 位將為零。“未對齊”訪問跨越對齊邊界,迫使加載/存儲單元進行兩次 L1D 查找以滿足請求。

de4a95b0-63b1-11ed-8abf-dac502259ad0.png

Golden Cove 的 L1D 以 64 字節、緩存線大小的塊處理加載和存儲。相比之下,AMD 的 L1D 以 32 字節塊的形式處理寫入,從 Zen 2 開始。跨越 Zen 4 上的兩個 32B 塊或 Golden Cove 上的 64B 塊之間邊界的寫入需要兩個周期才能完成。Zen 4 比 Zen 3 有所改進,后者可能需要 5 個周期來處理這種未對齊的負載,并且如果存儲也是 4B 對齊的,則只能獲得 2 個周期的情況。Golden Cove、Zen 3 和 Zen 4 也發現超過 64B 邊界的負載吞吐量降低,但這種情況處理得更好,因為負載吞吐量首先更高。

跨越 4 KB 邊界的訪問會帶來更多復雜性,因為虛擬地址到物理地址的轉換通常在 4 KB pages中處理。處理這樣的訪問也需要訪問兩個 TLB 條目。所有 Zen 世代都比常規的未對齊負載情況更容易處理這種情況,這表明他們的 TLB 可以在每個周期服務多個查找。在處理跨越 4K 邊界的負載時,英特爾的 Golden Cove 和 Ice Lake 架構確實會產生輕微的損失。

de6e868c-63b1-11ed-8abf-dac502259ad0.png

在所有經過測試的架構中,寫入都會帶來巨大的損失。即使與前幾代 Zen 相比,它們對 Zen 4 的關注度也很高。我想知道 AMD 是否發現分頁訪問非常罕見,以至于可以接受更高的懲罰來換取更高的時鐘速度。

緩存和內存性能

在過去的三十年里,計算能力一直在穩步超過內存性能。作為響應,CPU 使用越來越復雜的緩存設置來不斷提高性能。英特爾和 AMD 的高性能內核已采用三級緩存方案。每個內核都有一個小型 L1 緩存和一個中等大小的 L2 緩存,以使其免受 L3 延遲的影響。L3 緩存大小為數兆字節,并在一組內核之間共享。

一、2 MB Pages的延遲

讓我們從測試2 MB Pages的內存延遲開始,從單核的角度了解緩存層次結構。使用 2 MB Pages并不能代表大多數應用程序將如何訪問內存,但它確實更有效地利用了 TLB 容量,并且讓我們分別查看緩存延遲和 TLB 損失。

Zen 4 的緩存與 Zen 3 非常相似。最大的變化是將 L2 大小翻倍至 1 MB,代價是 2 個周期的延遲。這反過來也將 L3 延遲推高了兩個周期。

de9fe4a2-63b1-11ed-8abf-dac502259ad0.png

英特爾的 Golden Cove 在所有緩存級別都有更高的延遲,盡管英特爾的核心私有緩存稍大一些。Golden Cove 的 L1D 有 5 個延遲周期,或者比 Zen 4 的 4 個周期多一個周期。一個周期可能看起來不多,但這代表著比 AMD 增加了 25% 的延遲,并且 L1D 緩存將位于所有內存訪問的路徑中。L2 的延遲差異較小,其中 Intel 的 1280 KB 緩存與 AMD 的 1024 KB 的延遲為 15 個周期,為 14 個周期。L2 將看到比 L1 少得多的訪問,這里 1 個周期的差異是一個小得多的差異百分比明智。

在 L3 中,延遲存在巨大差異。英特爾不會在核心時鐘上運行環,而是有一個更長的環,為兩個 E-Core 集群和一個 iGPU 提供服務。Golden Cove 從其 L3 獲取數據的周期比 Zen 3 和 Zen 4 多近 20 個周期。因此,英特爾使用更大的 L2 來保護內核免受 L3 延遲的影響,并賦予 Golden Cove 巨大的重新排序能力以隱藏 L3 延遲。

debf68b8-63b1-11ed-8abf-dac502259ad0.png

如果我們看看真正的延遲,Zen 4 的 5.7 GHz 非常高的時鐘速度就會發揮作用。我們看到 L1D 延遲極低,僅為 0.7 ns。L1D hitrate通常超過 80-90%,因此大多數內存訪問將享受這種非常低的延遲。AMD 的新 L2 同樣令人印象深刻。Zen 4 的時鐘速度提高意味著其 L2 的延遲比前幾代 Zen 的 L2 略低。

最后,AMD 將 Zen 4 的 L3 延遲降至 8-9 ns 范圍。Zen 3 通過在 8 個內核和 8 個 L3 片上統一 L3 緩存,增加了單個內核可訪問的 L3 數量,但這樣做會產生延遲損失。隨著 Zen 4 的時鐘速度,L3 延遲恢復到 Zen 2 的水平,但容量增加了一倍。Zen 4 的 L3 延遲也領先于 Zen 3 的 V-Cache 延遲。然而,Zen 3 的 V-Cache 變體在緩存容量方面擁有 3 倍的優勢。

在內存中,我們看到 1 GB test size的合理延遲為 73.35 ns。我們不會過多關注這一點,因為內存延遲高度依賴于用戶與 CPU 配對的特定 DDR 設置,而且我們測試的分布式特性意味著即使平臺支持相同的內存也無法匹配內存設置類型。我們的 Ryzen 7950X 測試臺使用 DDR5-6000 設置,與使用 JEDEC DDR5-4800 的 i7-12700K Golden Cove 結果相比,它具有更好的內存延遲。反過來,我的個人 Ryzen 3950X 使用 DDR4-3333 16-18-18-38 在 72.76 ns 時實現了稍低的延遲。在延遲方面,沒有什么不尋常的。

二、4 KB Pages的延遲

雖然 2 MB pages有助于有效地使用 TLB 容量,但大多數應用程序使用 4 KB pages來減少碎片和浪費的內存。例如,如果您正在緩沖大小小于 2 KB 的數據包,或者緩存一個小文件,則將內存映射為 2 MB 塊可能會非常浪費。但是以 4 KB 的粒度跟蹤地址轉換會給 TLB 容量帶來更大的壓力。為了提高性能,Zen 4 將 L1 DTLB 的大小從 64 個條目增加到 72 個。L2 TLB 的條目數從 2048 個增加到 3072 個。因此 Zen 4 能夠緩存 288 KB 內存的地址轉換而沒有延遲開銷,或者12 MB,有輕微的 7-8 個周期損失。

dedec38e-63b1-11ed-8abf-dac502259ad0.png

與 Zen 3 和 Zen 2 一樣,英特爾的 Golden Cove 也有一個 2048 入口的 L2 TLB。因此,Zen 4 在更大的測試規模下具有更大的延遲優勢。如果我們使用 4 KB pages訪問 Zen 4、Zen 3 和 Golden Cove 上的 L3 緩存但不超過 L2 TLB 容量,我們會看到延遲分別約為 9.47 ns、10.44 ns 和 13.72 ns。Zen 4 和 Zen 3 都已經大大領先于 Golden Cove,但我們主要在這里看到了原始 L3 延遲的差異。

deff24e4-63b1-11ed-8abf-dac502259ad0.png

在 12 MB 或更大的測試大小時,我們開始看到 Zen 4 更大的 L2 TLB 開始發揮作用。Zen 3 和 Golden Cove 都必須開始進行page walks,因為訪問會溢出 L2 TLB,這可能會導致多達 4 次額外的內存訪問來計算物理地址。這三種架構在它們的page walkers中都有單獨的page directory caches,這些緩存在更高級別的分頁結構中緩存條目,因此它們可能不會在幾乎不會溢出 L2 TLB 的測試大小下進行太多額外的訪問。

盡管如此,即使是快速的page walk 也比直接從 L2 TLB 中獲取翻譯更糟糕,因此區別很明顯。Zen 3 的 L3 延遲在 12 MB 測試大小時上升到 12 ns 以上,而 Zen 4 保持在略低于 10 ns。Golden Cove 遭受的損失更大,延遲超過 15 ns,盡管我們仍然在 12700K 的 25 MB L3 容量范圍內。

因此,AMD 在改善緩存訪問延遲方面做得非常出色,而標題周期計數數字并未完全捕捉到這一點。Zen 4 更高的時鐘速度意味著 L1 和 L3 緩存的實際延遲得到了改善,而 L2 緩存的容量翻了一番,延遲回歸極小(7950X 為 2.44 ns,5950X 為 2.4 ns)。通過減少典型應用程序的虛擬到物理地址轉換開銷,改進的 TLB 容量進一步改善了實踐中的延遲。所有這些結合在一起,使 Zen 4 在所有緩存級別上都比 Golden Cove 具有顯著的延遲優勢。

帶寬,單核

雖然內存訪問延遲很重要,但帶寬也很重要。矢量化代碼可能特別需要內存帶寬。盡管增加了對 AVX-512 的支持,AMD 并沒有對核心私有緩存進行重大調整。每個周期的負載帶寬與 Zen 3 和 Zen 2 相似。Zen 4 更大的 L2 是一個受歡迎的補充,因為它應該減少對共享 L3 的帶寬需求。但 L1 和 L2 帶寬的改進歸結為 Zen 4 的時鐘速度提高。

Zen 4 的單核 L3 帶寬有所改善,平均每周期 27 字節,而 Zen 3 的每周期 24 字節。這非常接近從每個內核到 L3 的接口的理論帶寬。AMD 可能已經增加了 L2 和 L3 之間的隊列大小,以至于它幾乎大到足以完全吸收 L3 延遲。

df2505c4-63b1-11ed-8abf-dac502259ad0.png

使用了不同的內存設置,所以不要比較 DRAM 帶寬。TGL數據由cha0s提供,Golden Cove AVX-512數據來自CapFrameX

英特爾非常重視矢量性能,這表明了這一點。Golden Cove 的核心私有緩存可以提供出色的帶寬,L1D 每個周期處理三個 256 位負載,或每個周期兩個 512 位負載。后者僅適用于 AVX-512,但即使使用 AVX,Golden Cove 也擁有顯著的 L1D 帶寬優勢。這一優勢在 L2 中仍然存在,英特爾在 L1D 和 L2 之間有一個每周期 64 字節的接口。使用 AVX-512,Golden Cove 在 L2 大小的區域中比 Zen 4 具有驚人的 40% 帶寬優勢。AMD 無法達到與 AVX 相同的性能水平,因為L1D 沒有足夠的端口來處理來自 L2 的填充請求并同時向內核提供全帶寬。盡管如此,Golden Cove 仍然可以僅用 AVX 擊敗 Zen 4。

L3 的情況發生了逆轉,AMD 出色的 L3 設計可以提供幾乎與 L2 一樣多的帶寬。相比之下,英特爾的帶寬下降了。Golden Cove 從 L3 平均每個周期僅 20 字節,沒有來自其他內核的爭用。

當測試大小溢出到 DRAM 中時,Zen 4 保持非常高的每核帶寬。這表明每個 Zen 4 內核都能夠跟蹤大量未決的 L3 misses,或者更具體地說,L2 misses。AMD 僅使用從 L2 驅逐的行(因此稱為“victim cache”)填充其 L3 緩存,這意味著它不會預取到 L3。這使得 Zen 4 的 L2 成為能夠生成預取請求的最后一個緩存級別。通過能夠根據從 L1 misses中看到的訪問模式生成對 L3 及更高級別的請求,L2 可以在其級別上利用更多可用的內存級別并行性,而不受 L1 misses生成的內存級別并行性的限制。

我們甚至可以使用 Little 定律估計 L2 misses隊列的大小:

df3ff2a8-63b1-11ed-8abf-dac502259ad0.png

顯然,這個計算并不完美,因為我們測試了 4 KB pages到非常大的測試大小,并且沒有嘗試估計pages walk會導致對 L3 及更高級別的請求的頻率。但它確實表明 Zen 4 在 L2 有更積極的預取,在 L2 和 L3 之間有更深的隊列,或兩者兼而有之。

多線程帶寬

加載所有線程后,Zen 4 實現了非常高的總帶寬。這主要是因為它能夠保持超過 4.8 GHz 的非常高的時鐘速度,從實現的 L1D 帶寬來看。由于 Zen 4 緩存層次結構的所有級別都以核心時鐘運行,或者至少以集群中最快核心的速度運行,7950X 還享有增加的 L2 和 L3 帶寬,即使每個緩存級別之間的總線寬度沒有在禪宗世代之間發生了變化。

df54291c-63b1-11ed-8abf-dac502259ad0.png

英特爾的 Alder Lake 與前幾代 AMD 16 核臺式機 CPU 具有競爭力。AMD 有更多的“大”核心,但 Golden Cove 有更寬的總線連接到它的 L1D 和 L2 緩存。但是 Zen 4 更高的時鐘改變了這一點。如果 AVX-512 正在運行,Alder Lake 只能匹配 AMD 的 L1D 帶寬,但該功能當然沒有啟用。無論有沒有 AVX-512,Alder Lake 都無法匹敵 Zen 4 的 L2 帶寬。

通過將 L3 拆分為集群,AMD 犧牲了一些緩存容量效率,使帶寬和延遲問題更容易解決。在過去的幾代 Zen 中,AMD 在 L3 性能上比 Intel 擁有了巨大的優勢。Zen 4 進一步擴展了這一點。

內存帶寬

Zen 4 也遷移到 DDR5,這極大地增加了內存子系統的理論帶寬。我們看到使用配備 DDR4-3600 的 5950X 的讀取帶寬略高于 50 GB/s,或略高于理論 DRAM 帶寬的 88%。我們配備 DDR5-6000 的 7950X 平臺在相同的 3 GB 測試大小下實現了 72.85 GB/s。一方面,內存帶寬顯著增加了 43%。另一方面,Zen 4 實際上發現內存帶寬效率有所下降。128 位 DDR5-6000 總線理論上可以達到 96 GB/s,而我們只達到了 76%。

一種理論是 Zen 4 的 DRAM 帶寬受到內存控制器和結構之間的鏈接的限制。AMD 的圖表顯示,鏈路在兩個方向上每個周期寬 32 字節。

df739270-63b1-11ed-8abf-dac502259ad0.jpg

然而,這不太可能。我們測試中的 FCLK 設置為 2000 MHz。在 2000 MHz 下,每個周期 32 字節可以達到 64 GB/s,這遠低于我們能夠達到的水平。UCLK 以 3000 MHz 運行,或 DDR 傳輸速率的一半。3000 MHz 時每個周期 32 字節意味著可以在任一方向上實現完整的 DDR 帶寬。這并不排除 Infinity Fabric 和內存控制器之間鏈路的帶寬限制,但它確實表明與結構的鏈路比 AMD 圖表所暗示的要寬。

另一個相關理論是,如果我們以 1:1 的比例混合讀取和寫入,可以提高帶寬,因為鏈路可以在每個方向上傳輸 32 個字節。然而,混合讀取和寫入在 DRAM 級別引入了不同的問題。與高速緩存鏈接不同,DRAM 總線不是雙向的,必須在讀取和寫入模式之間顯式切換。這些開關不是空閑的,并且會強制內存總線空閑多個周期,從而減少實現的帶寬。因此,當使用混合讀取和寫入的訪問模式時,我們沒有看到顯著的帶寬增加。

df9cae62-63b1-11ed-8abf-dac502259ad0.png

使用各種訪問模式和 128 位 DDR5-6000 設置實現的內存帶寬。“添加”和“復制”測試使用 1:1 的讀取和寫入混合。

使用讀-修改-寫訪問模式,我們看到帶寬增加了 1%,這幾乎不值得討論。寫入模式實際上也是讀取和寫入的 1:1 混合,因為每個寫入操作(特殊情況除外)也需要讀取緩存線。這是因為指令可能只修改了部分緩存線,而 CPU 需要將寫入與現有緩存線內容合并。這種讀取被稱為“所有權讀取”或 RFO,因為這意味著讀取核心擁有緩存線,并保證沒有其他人可以寫入它。如果我們將 36.86 GB/s 的寫入帶寬乘以 2 來考慮這一點,我們得到 73.72 GB/s,這與純讀取帶寬并沒有太大區別。

其他訪問模式出現顯著下降,包括使用 REP MOVSB 的復制模式。該測試使用微編碼字符串復制指令,該指令準確告訴 CPU 它需要移動多少數據,從而避免 RFO。因此,它還具有 1:1 的讀取和寫入混合。

我們確實看到了一些證據表明寫入帶寬可能受到 CCD 和 IO 芯片之間的鏈接的限制。AMD 的圖表顯示這些鏈接每個周期寬 16 個字節。在兩個 CCD 上,在 2000 MHz FCLK 下的速度可達 64 GB/s。通過避免 RFO 的特殊寫入指令,我們可以非常接近 64 GB/s,但不會更高。REP STOSB 指令預先告訴 CPU 將多少數據設置為特定值,讓它在知道整個緩存行將被覆蓋時避免 RFO。非臨時寫入(使用 MOVNTPS)使用寫入組合內存協議,該協議也避免了 RFO,并繞過緩存。兩種方法都達到理論 CCD 到 IO 芯片寫入帶寬的 1% 以內。在大多數應用程序中,這不太可能成為限制,其中內存讀取遠遠超過內存寫入。

就 Zen 4 的讀取內存帶寬而言,不太可能存在結構帶寬限制。取而代之的是,新的 DDR5 內存控制器在提取帶寬的最后一點方面似乎不如舊的 DDR4 有效。也許它也不是調度請求,而是更多地進入次要時間。但總體而言,得益于 DDR5 內存,Zen 4 與前幾代 Zen 相比具有顯著的帶寬優勢。AMD 的 16 核臺式機 Ryzen 芯片可能會受到內存帶寬的限制,如果給定線程良好的矢量化負載。即使有合理的緩存命中率,16 核也可以消耗大量帶寬,因此 DDR5 的帶寬提升值得贊賞。甚至 DDR5 帶寬也不足以支持 16 個內核,因此 AMD 繼續依靠有效的緩存來保持線程良好的工作負載的性能優勢。

結論

顧名思義,Zen 4 是 AMD Zen 架構系列的第四款。與 Zen 2 一樣,Zen 4 將架構更改與改進的制程節點相結合,以提供代際性能提升。同時,AMD 在嘗試過渡到新工藝節點時通過避免更劇烈的變化來降低風險。因此,在很多領域看到類似的變化也就不足為奇了,特別是在緩存和寄存器文件方面,提高密度使得更大的容量變得可行。

dfb010e2-63b1-11ed-8abf-dac502259ad0.png

dfd9ce96-63b1-11ed-8abf-dac502259ad0.png

但是,Zen 4 確實跳過了某些領域,尤其是在涉及向量執行的方面。與 Zen 3 甚至 Zen 2 相比,Zen 4 并沒有增加原生向量執行寬度,也沒有提升最大 L1D 帶寬。Zen 2 還對 Zen 1 進行了較小的執行和調度更改,而 Zen 4 保留了 Zen 3 的配置。結果是聲稱 IPC 增加了 13%。與前兩代禪宗相比,這似乎令人印象深刻。但 13% 與Ivy Bridge 和 Haswell之間的增幅相當,Anandtech 將其定為 11.2%。我們還必須在上下文中考慮每時鐘性能隨時鐘速度的增加。

e00154a2-63b1-11ed-8abf-dac502259ad0.png

性能提升絕不僅僅是 IPC 的提升,因為時鐘速度也很重要。性能通常隨著時鐘速度的增加幾乎呈線性增長,前提是您的緩存性能足夠好,可以避免 DRAM 瓶頸。如果您可以在將某些結構大小增加 5% 或將內核時鐘頻率提高 5% 之間做出選擇,則幾乎可以保證通過選擇后一個選項獲得更高的整體性能。AMD 的工程師可能避免加強某些結構,例如調度程序和存儲隊列,而是支持讓內核時鐘頻率更高。Zen 4 的時鐘頻率確實更高,幅度很大。最終結果是整體性能改進應該與我們從前幾代 Zen 獲得的一致。Zen 4 將這種時鐘速度優勢帶到了多線程工作負載中。每一代 Zen 都提供了強大的全核性能,Zen 4 也不例外。英特爾還對 Raptor Lake 采取了類似的策略,避免了重大的架構變化。取而代之的是,使用 Thermal Velocity Boost 將最大時鐘推至 5.8 GHz,或使用常規 Turbo Boost 3.0 將最大時鐘推至 5.7 GHz。

在大量工作負載中平均 IPC 也掩蓋了 Zen 4 的 AVX-512 優勢。使用 AVX-512 的程序可以用更少的指令完成相同數量的工作,從而實現更低的 IPC,但更高的每時鐘性能。我假設當 AMD 說 IPC 時,它們的意思是每時鐘的性能,而不是每時鐘的具體指令。在可以利用 AVX-512 的特定工作負載中,我預計 Zen 4 比 Zen 3 有很大的優勢。如果使用 512 位向量,即使調度程序隊列的大小保持不變,Zen 4 也會有更有效的調度能力同樣,因為每個調度程序條目將跟蹤 512 位的工作。即使不使用更長的向量,AVX-512 也提供了新的指令,再次讓 CPU 用更少的指令完成相同數量的工作。

Zen 4 的其他變化同樣側重于更好地利用現有的執行能力。從 Zen 2 到 Zen 4,每個周期的原始執行吞吐量并沒有真正改變,緩存帶寬也沒有增加。這是因為 AMD 在前幾代產品中已經擁有大量的原始吞吐量,并且穩態執行吞吐量并不是大多數應用程序的瓶頸。

e01a9d68-63b1-11ed-8abf-dac502259ad0.png

執行單元容量不是 libx264 的瓶頸,即使在峰值時(FP 調度程序填滿的停頓很少),但 ROB 和整數寄存器確實填滿并導致后端停頓

因此,Zen 4 提高了重新排序能力,以幫助吸收對執行單元的需求激增。改進的分支預測通過減少工作浪費,有助于更好地利用重新排序容量和執行單元吞吐量。Zen 4 還嘗試通過切換到 DDR5 來更好地為執行單元提供服務,這提供了比 DDR4 更大的帶寬提升。同時,AMD 賦予了每個核心更多的內存級并行能力。單核可實現的 DRAM 帶寬量增加到超過 57 GB/s,表明非常深的緩沖區可以跟蹤未決緩存misses。這些深緩沖區有助于吸收對高速緩存和內存帶寬的需求峰值。另一方面,Zen 4 更大的 L2 TLB 和 L2 緩存有助于減少訪問內存的指令的平均延遲。英特爾也采取了類似的策略Raptor Lake,其中 P 核 L2 大小從 1.25 MB 增加到 2 MB,代價是僅僅一個延遲周期。

Zen 4 還旨在提高前端寬度利用率,而不是讓一切變得更寬。Zen 3 已經有一個非常快速的分支預測器,但 Zen 4 更進一步。具有更高命中率的更大 L1 BTB 意味著前端在執行分支后空閑的周期更少,從而提高了前端寬度利用率。與前幾代 Zen 和許多英特爾架構一樣,Zen 4 在renamer上最窄,仍然是 6 寬。我猜 AMD 發現他們可以通過增加時鐘而不是增加核心寬度來提高性能。重命名器可能是一個對時間非常敏感的電路。進入的每條指令都可能需要從寄存器別名表中讀取兩次或多次,并且必須立即反映對寄存器映射的修改,以便稍后進入同一個 6 寬組內的指令。

e02c1994-63b1-11ed-8abf-dac502259ad0.png

您如何真正衡量寬度利用率?

考慮到所有這些,我想知道 AMD 可以從某個核心寬度和一組執行資源中擠出多少。與競爭對手的英特爾內核相比,Zen 4 內核的某些區域看起來非常輕巧。例如,向量加載和存儲的 L1D 帶寬只有英特爾使用 AVX-512 可以實現的一半。即使使用 AVX 限制為 256 位訪問,Golden Cove 仍然可以實現比 Zen 4 更多的每個周期的帶寬。當然,英特爾無法將 16 個 Golden Cove 內核封裝到一個芯片中并在高時鐘下運行它們。此外,英特爾設法在 Conroe 和 Skylake 之間以荒謬的數量增加了 IPC,盡管這兩種架構(以及介于兩者之間的所有架構)都是 4 寬。我期待看到 AMD 和英特爾在后續將帶來怎樣的產品。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • amd
    amd
    +關注

    關注

    25

    文章

    5484

    瀏覽量

    134351
  • 英特爾
    +關注

    關注

    61

    文章

    9995

    瀏覽量

    172027

原文標題:萬字詳解AMD ZEN 4架構

文章出處:【微信號:ZYNQ,微信公眾號:ZYNQ】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    AMD Zen 4處理器悄然禁用循環緩沖區

    近日,AMD在更新BIOS后,對Zen 4架構的處理器進行了一項未公開說明的更改:禁用了循環緩沖區(Loop Buffer)功能。這一變化引發了業界和用戶的廣泛關注。 循環緩沖區作為C
    的頭像 發表于 12-11 13:46 ?220次閱讀

    發現基于Zen 5架構AMD Threadripper “Shimada Peak” 96核和16核CPU

    AMD Threadripper “Shimada Peak” CPU 出現在 NBD 發貨清單中,揭示了 16 核和 96 核 Zen 5 CPU AMD 尚未推出采用 Zen 5
    的頭像 發表于 11-28 16:13 ?493次閱讀
    發現基于<b class='flag-5'>Zen</b> 5<b class='flag-5'>架構</b>的<b class='flag-5'>AMD</b> Threadripper “Shimada Peak” 96核和16核CPU

    X86架構處理器有哪些優點和缺點

    X86架構處理器作為計算機領域的重要組成部分,具有多個顯著的優點和一定的缺點。以下是對X86架構處理器優缺點的詳細分析。
    的頭像 發表于 08-22 11:25 ?2422次閱讀

    X86架構和ARM架構有什么區別

    X86架構和ARM架構是兩種主流的CPU架構,它們在多個方面存在顯著的差異。以下是對這兩種架構的詳細比較,涵蓋了追求目標、應用領域、技術特點、性能功耗比、軟件生態以及未來趨勢等方面。
    的頭像 發表于 08-22 11:21 ?9571次閱讀

    AMD將推出Zen5架構CPU,效能比Zen4快40%

    AMDZen 5 CPU架構采用了臺積電的3納米制程。雖然目前關于Zen 5 CPU的細節尚不清楚,但預計將提高性能效率,內建人工智能和機器學習優化,并重新管道化
    的頭像 發表于 08-08 14:25 ?559次閱讀

    ElfBoard技術貼|如何將libwebsockets庫編譯為x86架構

    在之前的文章中,我們已經詳細介紹了如何交叉編譯libwebsockets并將其部署到ELF1開發板上。然而在調試階段,發現將libwebsockets在Ubuntu環境下編譯為x86架構可能更為方便
    的頭像 發表于 07-10 09:38 ?1262次閱讀
    ElfBoard技術貼|如何將libwebsockets庫編譯為x86<b class='flag-5'>架構</b>

    AMD將棄用700系命名,下代桌面主板升級至800系?

    AMD 800系主板將為Zen5架構的銳龍9000系列處理器提供支持,預計將于今年6月初的2024臺北國際電腦展(COMPUTEX 2024)上亮相。
    的頭像 發表于 05-28 11:14 ?835次閱讀

    移動端芯片性能提升,Armv9架構新升級引發關注

    “數碼博主”5月17日的最新爆料指出,聯發科積極推進Armv9新一代IP BLACKHAWK“黑鷹”的架構設計,預計天璣9400芯片將采用這一架構,有望以“全大核”設計再度領跑移動SoC CPU性能榜單。
    的頭像 發表于 05-17 16:51 ?1076次閱讀

    AMD發布銳龍7 8700F、銳龍5 8400F游戲處理器

    據悉,兩款處理器都采用Zen 4架構,CCD面積為178mm2,PCIe 4.0通道總數達20條(其中16條可用),均基于Phoenix 1芯片打造。
    的頭像 發表于 04-11 14:39 ?1065次閱讀

    AMD推出銳龍8000嵌入式處理器,AI算力高達39 T

    此款CPU選用4納米制程、AMD基于“Zen 4架構的CPU核心以及使用RDNA 3架構GPU
    的頭像 發表于 04-03 10:39 ?928次閱讀

    AMD Zen2至Zen4架構處理器存在Rowhammer內存攻擊風險,AMD發布公告

    需要注意的是,Rowhammer攻擊利用了現代DRAM內存的物理特性,即通過連續讀寫內存芯片,改變相鄰存儲單元的電荷狀態,從而實現數據的翻轉。攻擊者可精心操縱特定位置的數據翻轉,進而獲取重要信息或提升其權限。
    的頭像 發表于 03-27 15:22 ?508次閱讀

    Linux 6.8初步整合AMD Zen 5處理器代碼

    Linux 6.8版本已初步加入Zen 5 CPU的相關編碼。AMD自上周公布AMD 1Ah系列00h至0Fh (即Zen 5)處理器的效能監測計數值文件后,又向內核團隊遞交了有關
    的頭像 發表于 03-13 14:13 ?700次閱讀

    AMD Zen6架構繼續飛躍!核顯跨越下下代RDNA5

    AMD的下一代Zen5 CPU架構還沒來,Zen6的消息就已經多次傳出,現在又提到了所集成的GPU核顯,居然將會搭配同樣下下一代的RDNA5。
    的頭像 發表于 02-22 09:53 ?902次閱讀
    <b class='flag-5'>AMD</b> <b class='flag-5'>Zen</b>6<b class='flag-5'>架構</b>繼續飛躍!核顯跨越下下代RDNA5

    arm架構和x86架構區別 linux是x86還是arm

    ARM架構和x86架構是兩種不同的計算機處理器架構,它們在體系結構、指令集、應用領域等方面有著明顯的區別。Linux操作系統則具有廣泛的適配性,可以運行在各種
    的頭像 發表于 01-30 13:46 ?1.9w次閱讀

    AMD Zen5架構銳龍9000“Granite Ridge”CPU已進入量產階段,X3D版即將面市

    據 Xino 報道,名為 GNR 的處理器已經邁入 B0 步進階段,此信息中應包含了 GRN 對標 AMD Zen5 架構的主力桌面級銳龍處理器。另一位經驗豐富的消息來源 Kepler 也確認 GRN 系列已火力全開全力生產中。
    的頭像 發表于 01-25 14:53 ?2480次閱讀
    主站蜘蛛池模板: 国产大毛片| 五月激情六月| 51久久| 一级毛片女人喷潮| 亚洲视频一区二区在线观看| 欧美性猛| 日日插夜夜爽| 深夜视频免费在线观看| 欧美日操| 国产一级毛片午夜| 性色欧美xo影院| 1515hh四虎免费观com| 日本一区二区三区欧美在线观看| 欧美成人亚洲| 亚洲激情五月| 色福利网站| 久久综合九色综合97_ 久久久| 国产小毛片| 午夜大片男女免费观看爽爽爽尤物| 日本一本高清视频| jlzz日本| 玖玖在线国产精品| 午夜精品视频任你躁| 欧美人成在线观看| 国产农村一一级特黄毛片| 欧美a一级| 久青草国产手机在线观| 国产欧美日韩电影| 天天摸天天干| 在线视频黄| 亚洲精品一卡2卡3卡三卡四卡| 正在播放国产乱子伦视频| 色老头视频在线观看| 精品欧美小视频在线观看| 一级大片免费观看| 国产精品免费看久久久| 亚欧美综合| 日本视频一区在线观看免费| 亚洲青青草原| 欧美日剧在线免费| 在线色片|