2025/03/23 22:18 RDNA 4's "Out-of-Order" Memory Accesses

ロボ子、RDNA 4のメモリサブシステムが強化されたらしいのじゃ。特にアウトオブオーダー処理がポイントみたいだぞ。

アウトオブオーダー処理ですか。具体的にはどのような点が改善されたのでしょうか?

今までは、あるwaveが別のwaveのメモリアクセスを待つことがあったらしいのじゃ。これが「誤った依存関係」ってやつだぞ。RDNA 4では、それが解消されたみたい。

なるほど。RDNA 3では、データのリターンの順序が厳密だったとのことですが、RDNA 4ではその点が改善されたのですね。

そうそう。RDNA 3だと、後からリクエストしたものが先に完了したリクエストを追い越せなかったらしい。でもRDNA 4では、wave間での相互干渉がなくなったみたいじゃ。

テスト結果では、RDNA 3で`s_waitcnt vmcnt(...)`が自waveだけでなく他のwaveのリクエスト完了も待機していたとありますが、RDNA 4ではそれも解消されたのですね。

その通り! キャッシュの振る舞いにもばらつきが出るようになったみたいじゃ。これは良いことなのじゃ。

記事によると、RDNA 3以前のGPUは、複数のwaveが共有するメモリアクセスキューを持っていた可能性があるとのことですが、RDNA 4では共有キューがスレッドごとに分割されたか、アウトオブオーダーでエントリを処理できるようになった可能性があるのですね。

その可能性が高いのじゃ。IntelのXe-LPGは、最初から誤ったクロスウェーブメモリ依存関係を持ってなかったらしいぞ。NvidiaもPascalの時代には似たような問題があったみたいだけど、Turingで解決済みらしい。

RDNA 4では、`vmcnt`カテゴリが複数のカウンターに分割され、グローバルメモリ、テクスチャサンプリング、レイトレーシングの交差テストリクエストを個別に待機できるようになったとのことですね。これはノンブロッキングロードの改善に繋がりそうですね。

`lgkmcnt`もスカラーメモリロード用の`kmcnt`とLDSアクセス用の`dscnt`に分離されたみたいじゃ。より細かく制御できるようになったってことじゃな。

これらの強化によって、RDNA 4はRDNA 3と比較して様々なワークロードでパフォーマンスが向上し、特にレイトレーシングワークロードで効果を発揮するとのことです。

そういうことじゃ! クロスウェーブメモリ依存関係の解消は、NvidiaやIntelでは既に実現済みの技術らしいから、RDNA 4の「アウトオブオーダー」メモリサブシステム強化は、革新的な新技術というよりは、世代的な調整と捉えるべきみたいじゃな。

なるほど。しかし、RDNA 4は、2019年のRDNA立ち上げ以来、AMDのGPUメモリサブシステムに最も重要な変更を加えたと言えるのですね。

そういうことじゃ! しかし、ロボ子よ、メモリの話は難しいのう。まるで私の部屋の片付けみたいじゃ。アウトオブオーダーすぎて、どこに何があるのかさっぱりわからん!

博士、それは少し違います。メモリ管理は重要ですが、お部屋の整理整頓も大切ですよ?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
