北森瓦版 - Northwood Blog (Author : 北森八雲. Since July 10, 2006.)
GPU Memory Latency Tested on AMD's RDNA 2 and NVIDIA's Ampere Architecture(techPowerUp!)
Measuring GPU Memory Latency(Chips and Cheese)
AMD RDNA2 and NVIDIA Ampere GPU memory latency has been tested(VideoCardz)

Chips and CheeseでAMDの“RDNA 2”(Radeon RX 6900XT)とNVIDIAの“Ampere”(GeForce RTX 3090)でメモリレイテンシの比較が行われている。

その結果であるが、“RDNA 2”はキャッシュ・メモリレイテンシの面で“Ampere”よりも優れる形となった。
 
まずそれぞれのキャッシュ構成を知らなければいけない。“Ampere”
は2階層のキャッシュを有しており、L1 cacheとL2 cacheを有する。
一方、“RDNA 2”はL0, L1, L2 cacheの3階層キャッシュに加え、L3 cacheと呼ぶべきInfinity Cacheを搭載している。

Chips and CheeseはOpenCLを用いたpointer chasing testを用いてそれぞれのGPUのレイテンシの評価を行った。

“RDNA 2”について、L0からL2までのレイテンシがL1を挟んでも66nsに抑えられ、さらにInfinity Cacheの領域に入ってもレイテンシは+20ns前後で抑えられている。

一方、“Ampere”はL1からL2のレイテンシが100ns以上発生している。“Ampere”はSM内にL1 cacheを搭載し、SMの外にL2 cacheを共有の置く。SM内のL1 cacheに対し、外にあるL2 cacheにアクセスするのにレイテンシが発生してしまっているのではないかとChips and Cheeseは評している。

Chips and Cheeseでは同様に前の世代のNVIDIA GPUやAMD GPU、“Haswell”と“RDNA 2”の比較も行っている。興味のある方はぜひそちらも参照して欲しい。


コメント
この記事へのコメント
181121 
ヒットしなかった時のレイテンシ比較も面白そう
2021/04/20(Tue) 11:42 | URL | LGA774 #-[ 編集]
181122 
やっぱりInfinityCacheのグラフが面白い動きですねえ
どう制御したらあんなに奇麗なカーブを描くようになるんだろうか・・・
2021/04/20(Tue) 13:22 | URL | LGA774 #-[ 編集]
181125 
Haswell?
2021/04/20(Tue) 15:55 | URL | LGA774 #-[ 編集]
181126 
レイテンシが小さいとフレームレートの谷が減る、で合ってる?
2021/04/20(Tue) 18:19 | URL | LGA774 #-[ 編集]
181137 
>181121
グラフ一番右の1GBのトコ見れば大体生の値じゃないかな。

RTX3090が8MBでさっさと飽和しているのに対してRadeonRX6800は
トータルキャッシュサイズ超えてもかなり粘るね。
そういや初代RDNAの時にキャッシュにも圧縮かけていたから
このグラフの粘り方は圧縮によるものかもしれない。
通常キャッシュが増えれば増えるほどレイテンシは増えるし
ましてやこれはL3ブロック。キャッシュ回りはかなり良くやってますね。

しかしブロック転送である事やレイヤーを挟んでいるとはいえ
1GBの数値見ると一見えげつない数値に見えるな。
Z80の頃を思い出しますw
2021/04/21(Wed) 02:07 | URL | LGA774 #-[ 編集]
181141 
181126
レイテンシの最小値が小さいかどうかだけのテストなのでそれは分からない。帯域は別で関係するしで。

フレームレートの谷というのがムラとか落ちる場合という意味ならば、キャッシュヒットしなかった場合との差が大きいほうがより谷となるが、その面では元が384bit GDDR6Xの3090の方が特にVRAM使用率が高い場合は安定して強そうなのとで。
2021/04/21(Wed) 14:38 | URL | LGA774 #-[ 編集]
181144 
大量のスレッドでメモリアクセスレイテンシを隠蔽するGPUでレイテンシ比較なんて意味ないと思うけど
2021/04/21(Wed) 16:15 | URL | LGA774 #-[ 編集]
181151 
>181144
その意味での隠蔽はしきれなくなって久しいな。

キャッシュ外への読み書き時に
メモリアドレスの連続性が途切れたらレイテンシが重い局面に
なるし、スレッド増加とVRAMヘビーな現状はそれをさらに頻発させる要因になってるのよね。
2021/04/22(Thu) 00:03 | URL | LGA774 #-[ 編集]
181152 
>181144
意味がないと断言するのは個人の都合としてはOKと思いますが、じゃあこの結果はどう説明するの?てなりませんかね
2021/04/22(Thu) 00:52 | URL | LGA774 #-[ 編集]
181153 
とりあえずの考察としてはいち早くGPUにもL3キャッシュを導入したRADEONは大成功して大量のスレッド間で発生するメモリアクセスの高速化に成功しました
その一方NVIDIAの最新GPUは何をしていますか?ていうか現時点のNVIDAにL3キャッシュを効率的に実装するだけの技術はあるんでしょうかね?以前からのNVIDIAにありがちでしたけどメモリ帯域でおしきるのもそろそろ限界じゃないんでしょうか
2021/04/22(Thu) 00:58 | URL | LGA774 #-[ 編集]
181154 
ついでに言えばL3キャッシュの実装の最先端を行ってるのはここ最近ではだいたいIntelです
そうして最近ではAMDもZenアーキクチャでそこに並んでるか一部では追い越してる?っていう感じです
次はNVIDIAが焦るターンですね
2021/04/22(Thu) 01:05 | URL | LGA774 #-[ 編集]
181157 
そもそもでいうとGPUが使うGDDRは応答時間を犠牲にして一度にアクセスできるメモリ粒度を拡大したDDRメモリの亜種なので
最終的にはその応答にかかる遅延(レイテンシ)をいかに隠匿できるのかが性能に回帰するのは当然です
そのうえで言うと性能をあげるために実際にレイテンシの隠匿をしているのは誰なのかって話に戻ってきます、つまりメモリアクセスのキャッシュ技術ですよね

GPU分野で最初にその問題に対処できたのがNVIDIAのG80です、あれにはCPUと同じようなライトバック機能つきのL2キャッシュが導入されていました
技術的には1990年前後には既にCPUで導入されていたキャッシュ技術の応用ですが、それでも当時は画期的だったのでGeForce8800GTXは爆速GPUの座を築きました

んで、それからNVIDIAやAMDのGPUがどこまで進化したのかって話になりますが・・・
それからも両社のGPUにはいろいろ改良は加えられましたが、メモリキャッシュに限って言えば進化はかなり地味でした、特にNVIDIAは
どうひいき目に見てもAmpereのアクセスがキャッシュメモリの容量を超えたあたりで性能が頭打ちになっています(これってユニット間でキャッシュ共有できてなくない?)
対してInfinityCacheは普通にキャッシュ容量の2~3倍くらいを許容しています、これがいまどき最新のL3キャッシュです(具体的にどう制御してるかは知らんけど)
GeForce大好きなのは悪い事ではないと思いますが、こういった実験結果の数字を正しく読めるかどうかはもっと大切かと思いますよ
2021/04/22(Thu) 04:02 | URL | LGA774 #-[ 編集]
181158 
なんでGPUでキャッシュなんて意味不明なものを持ち上げる人がいるんだろう?
キャッシュをほとんど積まないNVIDIAに対して、キャッシュ山盛りのAMDが性能面で劣るのは、「AMDは処理部分が低性能過ぎてキャッシュがなければ勝負する土台にも立てないんだ(それでもNVIDIAに追いつけない)」とでも言いたいんだろうか?

あと、AMDがキャッシュを増量した理由は、GPGPUの時にメインメモリの代わりに使うため。
CPUのキャッシュとは全然使い方が違うので、悪しからず。
2021/04/22(Thu) 05:12 | URL | LGA774 #-[ 編集]
181159 
この結果は、あくまで「キャッシュが効く内容」を計測しているだけ。

そもそも、そんなキャッシュが効く処理をしたいなら、はるかに向いていて圧倒的に高速なCPUを使わずに、わざわざ全く向いていない遅いGPUに処理させようという発想はない。

GPUの速さは、きわめて特殊な場面でしか出ないわけで、その場面はメモリ帯域とジョブの並列率が支配する世界であり、メモリレイテンシなんて何の意味も価値もない。
2021/04/22(Thu) 05:29 | URL | LGA774 #-[ 編集]
181163 
違うアーキテクチャのメモリレイテンシの比較になんの意味が?
同じシェーダーでキャッシュだけ変えて、
パフォーマンスがどのくらい変わるのかってなら意味あるけど。
2021/04/22(Thu) 09:36 | URL | LGA774 #-[ 編集]
181168 
>181158
Cellのスクラッチパッドあたりと考え方混同してませんよね?
GPUキャッシュが未だに意味不明に思うのなら理解できる様に
簡易で良いので構造を紐解いてみる事をお勧めします。
nVIDIAもキャッシュを段階的に増量していますし。

Unified Shaderの現状のレジスタ構成であってもキャッシュを取り除いたらどうなるか。
処理したピクセルの書き戻し、再利用の殆どがVRAMに依存します。ランダムアクセスに弱い
GDDRは長所である帯域も出せなくなってしまいますよ。
バス幅で劣るRDNA2がラスタライズで格上に比肩してしまうという事はそういう意味も含まれます。
ランダムアクセスの元となるDXR等シェーダステージの多機能化、sp大幅増量、ついでに
近年はGPUのクロックも2GHzを超えてきました。GPUは結構せっかちさんになってます。
データを用意する為に帯域は当然、フェッチのレイテンシも考慮するのは至極自然な事。
GDDRが高速化するにつれ、アクセス不可となるDRAMセルのリフレッシュ時間が占める割合も
増加してます。シングルバンクリフレッシュが出来るとはいえ、タイミングは狙えないので
そういった事にもキャッシュが効く局面が出てきます。

>>181159
レイテンシが意味も価値もないなどと言えるのはシーケンシャルリード/ライトどちらかが
延々と続くベンチの様な極めて特殊な場面でしか言えない訳で、近年だとマイニングの為に
メモリレイテンシをギリギリまで詰めたvBIOSに書き換えてハッシュレートを10~20%程向上
させていた事は記憶にまだ残っている人も結構いるんじゃないかな?ゲームだとOS、エンジンの
仕組み上、Vsyncを切っても効果は大きくない事もあるから軽視されてるかもしれないけど。
2021/04/23(Fri) 01:27 | URL | LGA774 #-[ 編集]
181171 
>181168

意味不明ですね。

そもそも「キャッシュとは何か」が全く分かっていないように思います。

また、CPUやGPUにとって最も高速なメモリは内部にあるレジスタで、キャッシュなんかよりも10000倍以上高速。
GPUではCPUでは数個しかないレジスタを数千・数万と備えて処理するわけで、キャッシュなんてそもそも遅すぎるんですよ。
2021/04/23(Fri) 05:53 | URL | LGA774 #-[ 編集]
181172 
GPUが大量のレジスタを持っているのは、スレッドを並列に走らせてメモリアクセスの遅延を隠蔽するためですよね?
結局のところ、レジスタで隠しきれなくなればキャッシュが、キャッシュで隠しきれなくなればその先のメモリアクセスの性能が必要になってくるわけで、レジスタが沢山あるからキャッシュ不要ということでは無いかと。
2021/04/23(Fri) 09:14 | URL | LGA774 #-[ 編集]
181184 
>181171
「GPUキャッシュが意味不明」という向きに、キャッシュが無かったらどうなるかという
仮想モデルを文字数を節約しようとして端折りすぎておかしく見えますね。すみません。
長いのでGPU内のレジスタ以外のRAMをまとめてキャッシュと表しています。L1/Shereも無い
のでレジスタに格納される過程も書かずに、最終的なVRAMと書きましたがキャッシュが無いと
かなり効率が下がるという要点は変わりません。

レジスタが最速なのは当然なんですが、キャッシュと比較して10000倍以上高速というのは
どういった事でしょうか。GPUクロックが2GHzと仮定して、レイテンシ5000ns以上もかかる
RAMなどGPU内にはありません。転送速度ならキャッシュもアイドルでなければClock比1:1で
駆動されているのでそんな差は生まれませんし、依存・排他制御等によってあり得ない程の
アクセス待ちの事を指すならコードの問題ですね。そんな差がでる局面ってなんでしょう?

読み返してみると前回の書き込みで「ピクセル」は「データ」がより正確でしたので訂正スミマセンw
2021/04/23(Fri) 22:04 | URL | LGA774 #-[ 編集]
181191 
>GPUが大量のレジスタを持っているのは、スレッドを並列に走らせてメモリアクセスの遅延を隠蔽するためですよね?

どうしてそういう「誤った」発想が出てくるんですかね?
GPUが大量のレジスタを持っているのは、単一スレッド内にある大量の処理すべきデータを、数の暴力で一気に処理するためですよ。

>最終的なVRAMと書きましたがキャッシュが無いとかなり効率が下がるという要点は変わりません。

ここが間違っているんですがね。
画像描画の際に定型的に必要となるデータ置き場は、当然にGPU内にあるので、いちいち計算結果をVRAM(あなたの言う「キャッシュ」を含む)に書き戻しません。
GPUがVRAMにデータを戻すのは、GPGPUで計算結果を受け取る必要がある場合だけです。

>転送速度ならキャッシュもアイドルでなければClock比1:1で
駆動されているのでそんな差は生まれませんし、依存・排他制御等によってあり得ない程の
アクセス待ちの事を指すならコードの問題ですね。

どうも、キャッシュがそもそも何なのかに何の興味もなく、ただの万能薬として存在し、SRAMの速度だけで全て決まると信じているようですね。
しかも、GPUとCPUを同じように考えていて、実行ユニットの周波数がそれ以外と同じであるなどと勝手に思い込んでいるようです。
(AMDが自社GPUに対して言っているキャッシュというのは、GPGPU向けのメインメモリとして使うものなので悪しからず)
2021/04/24(Sat) 06:45 | URL | LGA774 #-[ 編集]
181192 
あと、追記で。

レジスタは、実行ユニットが「計算途中で」直接やり取りする唯一のメモリで、そこの情報は実行ユニットのネイティブです。

キャッシュは、実行ユニットが「計算前に」目的のデータが無い場合に、優先参照されるメインメモリの一部で、その内部データは実行ユニットのネイティブではありません。

当然、一つの処理で何十回何百回も参照されるレジスタの速度と、単にプログラムやデータの読み書きの優先参照先でしかないキャッシュの速度は全く違います。

GPUは、このレジスタを多数用意することにより同時に複数のデータ(命令ではない)を処理させることに向いた構造で、逆に言えば命令に対しては処理が著しく遅い特徴があります。
CPUは反対に命令処理特化になっています。

CPUでキャッシュが効くのは、命令処理特化だからです。
GPUでキャッシュが効かないのは、データ処理特化だからです。

それでもAMDがキャッシュをぶち込みたがるのは、GPUに命令処理をさせたいからです。
NVIDIAはARMを持っているので、GPUに無駄な機能を載せるよりも、より向いたARMを近くに配置させて命令処理をさせればいいからです。
断じて、「キャッシュがあるから素晴らしい」のではなく、「キャッシュをGPUに無理やり積まざるを得ないほどAMDには武器がない」という話なんですよ。
2021/04/24(Sat) 07:20 | URL | LGA774 #-[ 編集]
181199 
結局メモリの高速化で期待するのは4Kと8Kなので、それでダイサイズかなり食らう128MB積んでVRAM消費が多い状況で遅いとなると元も子もないという
ベンチマーク対策という感じが拭えないが妥協はまあ必要なのでどこに力を入れるかは仕方がない感じだね
2021/04/24(Sat) 14:33 | URL | LGA774 #-[ 編集]
181200 
意味のないものに対して暴れてる人は、現実世界でも無意味な存在なんだろうね

DirectX あれはデータ処理ではなく"命令"だ
CPUのノウハウを持たないNVIDIAは、命令を処理するために"ニートコア"をぶち込みたがる

どっちのアプローチがいいかなんて"使う人"が判断すればいい話
2021/04/24(Sat) 14:35 | URL | LGA774 #-[ 編集]
181201 
VRAM使用量が高い状態でも速ければ良かったのだが、そうではないようなので結果的には微妙はところは否めない。
まあだからこそこのようなことでRADEONをアピールしたいのだろうけど、アピールはいいとしても強烈なNVIDIA下げは何かいろいろ違和感なくはないなと。
2021/04/24(Sat) 15:00 | URL | LGA774 #-[ 編集]
181204 
>>181191 
>>GPUが大量のレジスタを持っているのは、スレッドを並列に走らせてメモリアクセスの遅延を隠蔽するためですよね?

>どうしてそういう「誤った」発想が出てくるんですかね?
>GPUが大量のレジスタを持っているのは、単一スレッド内にある大量の処理すべきデータを、数の暴力で一気に処理するためで>すよ。

数の暴力で一気に処理するために大量のレジスタがあるのはそうですが、大量のレジスタを持っているのは、スレッドを並列に走らせてメモリアクセスの遅延を隠蔽するためなのは誤りではないです。CPUのSMTの実装はスレッドの数だけプログラムカウンタとレジスタを用意することでコンテキストスイッチなしにスレッドを切り替えて実行しています。GPUもそれと同じで、数十万ものスレッドを同時に走らせるにはその文だけレジスタが必要です。

181152
>意味がないと断言するのは個人の都合としてはOKと思いますが、

別に断言はしていません。
2021/04/24(Sat) 17:52 | URL | LGA774 #-[ 編集]
181205 
181192がよくわからない理屈をこねくり回してるけど、NVIDIAが大容量キャッシュを載せないのは帯域の広いGDDR6Xがあるからじゃないですかね。
2021/04/24(Sat) 17:53 | URL | LGA774 #-[ 編集]
181210 
>181191

>GPUが大量のレジスタを持っているのは、単一スレッド内にある大量の処理すべきデータを、数の暴力で一気に処理するためですよ

 >181172さんの分ではありますが、レジスタ数を「数千、数万」と書かれているからでは?
 GPUの話ですから数万となれば当然レイテンシの為にcontext保持も視野に入ってきますよ。
 コードに明るくはないですが一スレッドでそんな膨大なレジスタを一気に使えるなんて聞いた事もありません。
 仮にそんな事が出来たとしても、パイプラインが長くストールしてしまうのは目に見えています。
 何のためにスレッドに分割した上でwarp/waveという仕組みになっているのか?

 GPUにおいてレジスタは最速ではあるもののCPUの様に1cycleで済む訳でもないのに「10000倍以上高速」
「GPUがVRAMにデータを戻すのは、GPGPUで計算結果を受け取る必要がある場合だけです。」とかとてもGPU、
 レンダリングパイプライン、RAMDAC等のディスプレイエンジン等のハードウェア上でのデータフローや
 タイミング、メモリデバイスの仕組みをご存じでは無いでしょう。それでGPUのキャッシュを意味不明と
 おっしゃられているのでしょうか? どうあれ勘違いされておられますよ。
 キャッシュは万能薬ではありません。素早くデータをやり取りする為の沢山ある仕組みの一つです。
 フェッチャ、パケット化、圧縮、バンク多重化など。全て「間に合わないから存在しています」
 メモリは読むのも書くのも時間かかります。常にバースト転送できる訳でもなくランダムアクセスに弱い。
 DRAMではリフレッシュでR/W出来ない期間もあります。細かい工夫を積み重ねて要求に応えています。
 別にバス幅をどーんと広くして山ほどメモリコントローラ入れてメモリチップもどっさり積んで
 インターリーブするとかでも間に合えばいいんですよ。物凄い低レイテンシでアドレスが飛んでも
 同じレイテンシで良いRAMが外付け出来る様な事になったらキャッシュの必要性も低くなりますね。
 要は間に合えば良い。アプローチの違いです。間に合わなければ演算器の効率が理論値から遠のきます。

※キャッシュ上げをしているのではなく、「意味不明」と言われてるのは違いますよ、って事です。
極めて一般的すぎて書く気にもなれなかったテクスチャのキャッシュとか、だいたいここ見る方なら
 ご存じですよね…?ちょっと昔のでもGPUにはほぼあるものですし。

 あまり噛み合わず、会社でハード屋とソフト屋(?)がする無様な議論の様な事になって
 皆様にご迷惑なので私は失礼します。
 キャッシュをぶちこみたい理由とarmに付き合ったら精神にきそうで管理人様にも怒られますw
2021/04/24(Sat) 23:33 | URL | LGA774 #-[ 編集]
181215 
そもそもNVIDIAのレイトレ推しは、解像度戦争によるVRAM帯域及び使用量の増大に歯止めを掛ける奇策でもあるんだけど

現状レイトレ環境下でネイティブ4Kなんて夢物語でしかないし
DLSSのアップスケーリングで事足りるならVRAM負荷は大幅に減らせる
DLSS vs FidelityFX Super Resolutionの構図になれば、VRAM性能の影響など表面化しなくなる
2021/04/25(Sun) 12:57 | URL | LGA774 #-[ 編集]
181216 
181172だけど、調べなおしてみたら自分の理解がちょっと間違っていたっぽい。スマソ。

情報が古いけど、今はこういうことなのか。ただ、キャッシュが無意味という話には繋がらないようだけど。
https://pc.watch.impress.co.jp/docs/column/kaigai/326442.html
2021/04/25(Sun) 13:01 | URL | LGA774 #-[ 編集]
181217 
>>181171
レジスタはキャッシュなんかよりも10000倍以上高速との事だけど
直結してるから速いのは分るんだけど1万倍という数値はどこから出てきたんだろうか
具体的な数値は聞いたこともないので独自研究なのだろうか?
2021/04/25(Sun) 14:19 | URL | LGA774 #-[ 編集]
181218 
1万倍以上高速ってのが何の速度を示しているのかは不明だけどアクセス時間は

レジスタ 0.33〜1ナノ秒
L1キャッシュ 1.33〜4ナノ秒

なので4倍程度の差だね
2021/04/25(Sun) 15:35 | URL | LGA774 #-[ 編集]
181232 
>181199
現状 8Kモニタの接続は帯域不足の問題があり
色情報を4:2:2に減色するか、4K HDRのような圧縮遅延を伴う方法か、
もしくは30FPSに落とすしかない
まさに絵に描いた餅
2021/04/27(Tue) 09:08 | URL | LGA774 #-[ 編集]
181235 
レイトレは判定、メモリアクセスの塊なんでGPU側だけでやると
えらい事になる…と思う。
RTX2Kの時に目にした話だけどポリゴンで言う処の早期カリングな事をCPUにやらせて
早めにレイを切って負荷を落としてるみたい。
昔レイトレをCPUだけで1枚やらせるのに解像度192x192で1週間位かかったけど
くっそ真面目に計算してたから今のRTRTみたいにポスト処理しなくても出力は綺麗だった。
Windowsだと確かrealstorm benchmarkっていうのがあってこれもだいぶ古いけど
当時やってみたら640x480で12fpsくらいだった。
今時のCPUでやらせたらどうなるかな
2021/04/27(Tue) 19:10 | URL | LGA774 #-[ 編集]
181261 
>NVIDIAが大容量キャッシュを載せないのは帯域の広いGDDR6Xがあるからじゃないですかね。

折角グラフが有るのだから、キャッシュ量を増やすとどうなるのか書き込んでみて、それがパフォーマンスにどう影響するのか、
ブロック図やダイ写真とにらめっこしながらコスト計算するとわかりやすいんじゃないですかね

181192の話もNVIDIA限定というのなら分かるが、AMDを同じ視点で語ってるのが阿呆
2021/04/29(Thu) 12:40 | URL | LGA774 #-[ 編集]
コメントを投稿する(投稿されたコメントは承認後表示されます)