
AMDのZenコアアーキテクチャの5番目のイテレーションは、今月後半にリリースされる予定です。Zen 5は、 2017年のZenのリリースから始まり、Ryzenプロセッサの約7年を迎えます。それ以来、Zen+、Zen 2、Zen 3、Zen 4がRyzen 2000、3000、5000、7000シリーズのCPUの中心となっています。Ryzen 9000のラインナップに搭載されているZen 5コアは、フロントエンド設計のアーキテクチャの 最大のオーバーホール であり、これまで以上に幅広く、より速く、より効率的になっています。ここでは、Zenの5つのイテレーションを見てみましょう。
AMD Zen vs Zen 2 vs Zen 3 vs Zen 4 vs Zen 5:CPUフロントエンド
分岐予測子と I-Cache
上部には分岐 予測器があり、船の 航海士のように命令フローを制御します。
if 条件 {dosomething} else {dosomethingelse}

- 次の命令が 分岐であるかどうかを予測し、分岐がある場合は、どのような種類(条件付き/無条件)かを予測します。
- 分岐は通常、条件付きまたは無条件 (常に分岐) です。
- 次のステップは、命令の アドレス (通常はキャッシュ内)を計算することです。
- ここでは、分岐ターゲットバッファ(BTB)が役立ちます。これには、最後のn個のブランチ(取得されたかどうか)の履歴と、命令の宛先アドレス(PC)が含まれています。
- 分岐予測子を使用すると、CPU は次の命令の位置が生成される前でも実行を続行できます。これは 、アウト・オブ・オーダー 実行と呼ばれます。

- Zen コア アーキテクチャは 、3 レベルの BTB を使用する ハッシュ パーセプトロン 分岐予測子を使用します。
- Zen および Zen 2 の分岐予測子は、BTB エントリごとに最大 2 つの分岐を格納します。
- L0 BTBは、 前方に4 つの分岐と後方に取られた 4 つの分岐を保持します。L1 BTBは 256 エントリー、L2は 4096エントリーです。
- 間接ターゲットの 1024 エントリを持つ間接ターゲット配列もあります。
- 64 KB の L1I キャッシュは、8 エントリの L0、64 エントリの L1、および 512 エントリの L2 TLB とペアになっています。
- Zen 2 は、L1ハッシュパーセプトロンとL2 TAGE 予測子を使用します。
- L0 BTBは、 8 つの前方分岐と 8 つの後方分岐を保持します。L1 BTBは 512、L2 BTBは 7168 エントリーです。
- ITAは 1024 のエントリーで倍増しています。
- L1I キャッシュは 32 KB で、64 エントリの L1 TLB と 512 エントリの L2 TLB があります。
- Zen 3 は、分岐予測の精度と帯域幅を改善し、予測ミスのペナルティを減らします。ほとんどのブランチには、ゼロバブルペナルティがあります(パイプラインを失速させません)。
- L1 BTB は最大 1024 エントリを保持し、L2 BTB は最大 6.5K エントリを保持します。
- ITAは50%拡大され、 1536 エントリーになりました。
- Zen 4 は、サイクルごとに 2 つのブランチを取ることができます。
- L1 BTB は最大 1536 個、L2 BTB は 7168 個のエントリを保持できます。
- ITAは、約 3K エントリに拡張されます。
- Zen 5 は、最大 2 つのテイクブランチと 2 つの先行ブランチを実行できます。
- L1I キャッシュ サイズは変更されませんが、サイクルごとに L2 キャッシュから最大 32B x2 (以前は 32B) のデータをフェッチできます。
デコーダー、オペキャッシュ、およびオペキュー
デコーダは 、命令キャッシュから命令キューを介して命令(複素数)を取得し、それらを より単純なマイクロ演算に分割します。これらは micro-op キューに渡され、op キャッシュにも格納されます。Micro-ops を micro-op キューに含め、実行バックエンドにディスパッチします。
デコーダーは非常に電力を大量に消費するため、 オペキャッシュ をより効率的かつ正確にすることが重要です。オペキャッシュにキャッシュされた命令により、フロントエンドは デコーダをバイパスでき、スループットと効率が向上します。

- Zenコアは4ワイドデコーダを使用しており、サイクルごとに4つの命令をデコードできます。
- 20 x16B命令キューから供給され、最大4つの命令をデコーダに送金します。
- op-cache には 2048 のエントリがあり、最大 8 つのマイクロ演算を op キューに送信できます。
- マイクロ演算キューには 72 個のエントリがあり、演算キャッシュまたはデコーダから 8 個または 4 個のマイクロ演算 を取得します。
- 最大 6 つのマイクロ演算 が整数/浮動小数点バックエンドにディスパッチされます。
- Zen 2 では、演算キャッシュのサイズが 2 倍の 4096 エントリに増えています。
- Zen 3 は、命令キューを 24 x16Bに増やします。
- Zen 4 は、オペキャッシュ容量を 6.75K エントリに増やし、マイクロオペキューに最大 9つのマイクロオペを 供給できるようにします。
- Zen 5 はデコーダーに大幅な変更を加えます。
- 2x 4ワイドデコーダを搭載し、それぞれ最大4つのマイクロ演算を送信できます。
- デコーダーは、 デュアルポート 命令フェッチによって供給されます。
- マイクロ演算キャッシュは 6K に縮小されましたが、マイクロ演算キューに最大 12 個 (6×2) のマイクロ演算 を供給することができます。
- ディスパッチは 8 ワイドに拡張され、 8 つのマイクロ演算 を実行バックエンドに送信できるようになりました。
- SMT を有効にすると、各スレッドは 1 つの 4 幅デコーダを取得します。

ROB、スケジューラ、レジスタ
リオーダー バッファー (ROB) は、アウト オブ オーダー プロセッサの重要なコンポーネントです。これにより、命令が 最初の順序に従ってレジスタに書き込まれるようになります。これは、プログラム・シーケンスごとに命令とそのオペランドを保持するスケジューラーにフィードします。スケジュールされた命令の特定のセットのオペランドが使用可能な場合、オペランドは実行 のために実行ユニット に送信されます。
レジスタの名前変更 も OoO 実行の重要な部分です。2 つ以上の命令が同じメモリ位置 (レジスタ) に依存しているが、互いに独立している場合、プロセッサは 論理レジスタ を使用して、その異なるバリアントを作成します。名前が変更されたレジスタは、データの危険を引き起こさずに並列に実行されます。

- Zenコアは 、ROBに 192 のエントリを保持でき、整数と浮動小数点のスケジューラ/レジスタと実行ユニットが分離されています。
- FP の名前変更は 6 幅で、整数の名前は 4 幅です。
- 4x 14エントリ整数と2x 14エントリAGUスケジューラがあります。
- FP スケジューリング キューには 96 のエントリがあります。
- 整数レジスタ ファイルには 168 があり、浮動小数点ファイルには 160 のエントリがあります。
- Zen 2 では、ROB サイズが 224 に増加し、浮動小数点データ パスが 2 倍になります。
- 4x 16エントリ整数と1x 28エントリAGUスケジューラがあります。
- 整数レジスタ ファイルが 180 に増加しました。
- FP 側には、 64 エントリ の非スケジューリングと、スケジューラバッファに 36 エントリ があります。
- Zen 3 のROBは 256 エントリーと少し幅が広くなっています。
- 4x 24エントリ 整数+ AGUスケジューラ。
- FP 側には、 64 エントリ のスケジューリング キューと 2x 32 エントリ のスケジューリング キューがあります。
- 整数レジスタ・ファイルが 192 に増えました。
- Zen 4 では、ROB サイズが 320 に増加します。
- 整数レジスタ ファイルには 224 エントリがあり、FP 側には 192x 512 ビット レジスタがあります。
- また、68エントリのAVX512マスクレジスタファイルもあります。
- Zen 5 では、ROB サイズが 448 エントリに増加します。
- FP の名前変更は 6 幅で、整数の名前は 8 幅です。
- FP 側には、 3x 32 エントリ スケジューラと 96 エントリ の非スケジューリング キューがあります。
- 整数レジスタファイルには 240(64b) のエントリがあり、FP側には 384(512b) のエントリがあります。

実行ユニットとメモリサブシステム
実行ユニットは、プログラムの順序に従って、さまざまな算術計算、浮動小数点計算、アドレス生成計算、ロードストア計算、または分岐関連計算を実行して、最終結果を取得します。最新のCPUコアは、FADD、FMUL、FMA、ALU、AGU、LD / STなど、特定の命令に特化した複数の独立した実行パスを備えています。取得された結果は、レジスタに書き込まれるか、リタイア キューにリダイレクトされます。

- Zenコアには10個の実行ポートがあります。
- 整数側には 、4x ALU ポートと 2x AGU ポートがあります。
- FP側には、 2x FMUL/FMA と 2x FADD 実行ユニット(128ビット)があります。
- ロード・バッファには 72 個、ストア・バッファには 44 個のエントリがあります。
- Zen は、 2x 128 ビット ロードと 1x 32B ストアに対応しています。
- これは、 32 KB の 8 ウェイ データ キャッシュと 512 KB の L2 キャッシュによって支えられています。
- Zen 2 には 11 個の実行ポートがあります。
- 整数側には 、4x ALU ポートと 3x AGU ポートがあります。
- FP側には 、2x FMA ユニットと 2x FADD ユニット(256ビット)があります。
- 48エントリのストアキューがあります。
- ロード/ストア帯域幅は、サイクルあたり 256 ビット に増加します。
- Zen 3 には 14 の実行ポートがあります。
- 整数側には、 4x ALU、 3x AGU、 および1x分岐 実行ユニットがあります。
- FP側には、2x FMA、2x FADD、および2xストアユニットがあります。
- ストア キューには 64 個、ロード キューには 116 個のエントリがあります。
- 負荷帯域幅は最大 3x 64 ビット (または 2x 256 ビット) で、 2x 64 ビット (または 1x 256 ビット) に格納されます。
- Zen 4 は、14幅の実行バックエンドを保持します。
- Zen 4は、256ビット幅の浮動小数点ユニットをダブルポンピングすることにより、 AVX512 命令が可能です。
- L2 キャッシュは 8 ウェイで 1 MB に増加します。
- Zen 5 には 16 個の実行ポートがあります。
- 整数実行は、 6x ALU ポートと 4x AGU ポートで構成されます。
- FP側には、2x FMUL、2x FADD、および2x intD/StD実行ポートがあります。
- Zen 5は、 512b データパスを使用したネイティブAVX512実行をサポートしています。
- サイクルごとに 4x 64 ビットまたは 2x 256 ビット ストアと 2x 128 ビット/256 ビット ストアまたは 1x 512 ビット ストアが可能です。
- また、L1 データ キャッシュを 12 ウェイで 48 KB に増やし、サイクルごとに 4 回の読み取りと 2 回の書き込みを行います。
- L1 から L2/FP への帯域幅は、サイクルあたり 64 バイト に倍増しました。

AMD Zen 1 vs Zen 2 vs Zen 3 vs Zen 4 vs Zen 5:フロントエンドの概要
禅 | ゼン2 | ゼン3 | ゼン4 | 禅5 | |
---|---|---|---|---|---|
L1Iキャッシュ | 64キロバイト | 32キロバイト | 32キロバイト | 32キロバイト | 32キロバイト |
ITLB エントリー | 64 L1/512 L2 | 64 L1/512 L2 | 64 L1/512 L2 | 64 L1/512 L2 | 64 L1/512 L2 |
BTBエントリー | 256 L1/4K L2 | 512 L1/7K L2 | 1024 L1/6.5K L2 | 1536 L1/7K L2 | ? |
インストラクションQ | 20x 16B | 20x 16B | 24×16B | 24×16B | ? |
デコーダーの幅 | 4ワイド | 4ワイド | 4ワイド | 4ワイド | 2x 4 幅 |
Micro-op キャッシュ エントリ | 2K解像度 | 4K解像度 | 4K解像度 | 6.75K 閲覧数 | 6K解像度 |
Op Cache BW (uops) | 8 | 8 | 8 | 9 | 2×6 |
ディスパッチ (uops) | 6 | 6 | 6 | 6 | 8 |
AMD Zen 1 vs Zen 2 vs Zen 3 vs Zen 4 vs Zen 5:バックエンドの概要
禅 | ゼン2 | ゼン3 | ゼン4 | 禅5 | |
---|---|---|---|---|---|
ROB エントリ | 192 | 224 | 256 | 320 | 448 |
INTスケジューラ | 6x 14エントリ | 4x 16エントリー(1x 28エントリーAGU) | 4x 24エントリ | 4x 24エントリ | エントリー88名(AGU56名) |
FPスケジューラ | 96エントリ | 36 エントリー | 2x 32エントリー | 2x 32エントリー | 3x 32エントリ |
INTレジスタ | 168 エントリ | 180 エントリー | 192 エントリ | 224 エントリー | 240 エントリー |
FPレジスタ | 160 エントリー | 160 エントリー | 160 エントリー | 192x 512ビット(68 512bマスク) | 384x 512ビット |
ALUポート | 4 | 4 | 4 (+1 BR) | 4 (+1 BR) | 6 |
AGU ポート | 2 | 3 | 3 | 3 | 4 |
FPポート | 4 (128b) | 4 (256b) | 4 | 4 (+2 F2I) | 4 (+2 標準 IntD) |
LD/STのQ | 72/44 エントリ | エントリー数: 72/48 | 116/64 エントリー | 136/64 エントリー | ? |
LD/STのbw | 32B/2x 128b | 2x 256b | 2x 256b/256b | 2x 256b/256b | 2x 512b/512b |
L1Dの | 32キロバイト | 32キロバイト | 32キロバイト | 32キロバイト | 48キロバイト |
L2 | 512キロバイト | 512キロバイト | 512キロバイト | 1メガバイト | 1メガバイト |
参考文献:
Intel Golden Cove vs Raptor Cove vs Redwood Cove vs Lion Cove: Intel の P コア アーキテクチャの比較