「メモリ合体」とは何ですか?


16

グラフィック処理ユニットには、メモリ合体と呼ばれるものがあることを知りました。それを読んで、私はこのトピックについて明確ではありませんでした。これは、メモリレベル並列処理に関連する何らかの方法ですか?

Googleで検索しましたが、満足のいく答えを得ることができませんでした。

誰かがより包括的で理解しやすい説明をしてくれると助かります。


メモリレベル並列処理(MLP)は、複数のメモリトランザクションを一度に実行する機能です。多くのアーキテクチャでは、これは一度に読み取りと書き込みの両方の操作を実行する機能として現れますが、同時に複数の読み取りを同時に実行できることも一般的に存在します。潜在的な競合(同じ場所に2つの異なる値を書き込もうとする)のリスクがあるため、一度に複数の書き込み操作を実行することはまれです。これは、単一の32ビット読み取りで4つの別個の連続した8ビット値を読み取るなど、ベクトル化されたメモリ操作とは異なることに注意してください。
サイキラングランディ

回答:


11

結合」とは、メモリアクセスパターンの結合を指すこともあります。この使用法では、スレッドを同時に実行し、近くのメモリにアクセスしようとすることを意味するために、合体が使用されます。これは通常、次の理由によります。

  • メモリは通常、RAMから大きなブロックで取得されます。
  • 一部の処理ユニットは、メモリの古い部分を処理しながら、将来のメモリアクセスを予測し、先にキャッシュしようとします。
  • メモリは、連続して大きくながら低速のキャッシュの階層にキャッシュされます。

したがって、予測可能なメモリパターンを使用できるプログラムを作成することが重要です。スレッド化されたプログラムではさらに重要であり、メモリ要求が飛び越えないようにします。そうでない場合、処理ユニットはメモリ要求が満たされるのを待機します。

並列プログラミング入門からヒントを得た図レッスン2 GPUハードウェアと並列通信パターン

下:均一なメモリアクセスを備えた4つのスレッド。黒い破線の長方形は、単一の4ワードメモリ要求を表します。

ここに画像の説明を入力してください

メモリアクセスは近く、1つのgo / block(または最小数の要求)で取得できます。

ただし、スレッド間のアクセスの「ストライド」を増やすと、より多くのメモリアクセスが必要になります。下:ストライドが2の、さらに4つのスレッド。

4つのメモリ合体スレッド、および2ストライドの4つのスレッド

ここで、これらの4つのスレッドには2つのメモリブロックリクエストが必要であることがわかります。歩幅が小さいほど良い。ストライドが広いほど、より多くの要求が潜在的に必要になります。

もちろん、大きなメモリストライドよりも悪いのは、ランダムメモリアクセスパターンです。これらをパイプライン処理、キャッシュ、または予測することはほぼ不可能です。

TikZソース:


2
複数のスレッドが同じデータ項目(同じ大きなチャンク内の要素だけでなく)にアクセスすることもできます。これは、SIMDアーキテクチャのSPLAT操作に多少似ています(より一般的です)。レイテンシトレラントスループットプロセッサとして、GPUは有効な帯域幅を増やすことができる場合、アクセスレイテンシを増やす余裕があります。
ポールA.クレイトン

指定されたリンクが壊れています。
ダニエルSoutar

3

私はネットの周りで「合体」という言葉の2つの用途を見ていると思います。どちらも記憶に関係しています。1つは、解放されたメモリ割り当ての合体です。これは、質問でリンクされているウィキペディアのページで言及されているものです。


解放されたメモリ割り当ての結合

メモリを割り当てるときに、メモリマネージャは、隣接する2つのメモリブロックが解放される状況になることがあります。これらを組み合わせると、単一の解放されたメモリブロックになります-これは「結合」と呼ばれます。例:

4つの割り当てられたブロックから開始:

4つの割り当てられたブロック

後で、そのうちの1つが解放されます。

今1つの無料ブロック

その後、別のものが解放されます。

隣接する2つの空きブロック

では、なぜ2つの隣接する空きブロックがあるのでしょうか?それらの結合:

解放されたブロックの結合、現在2つの割り当て済みブロック、1つの解放

結合は、可能な限りすぐに発生する可能性があります。たとえば、ガベージコレクターでは、コレクターの実行時に発生します。

TikZソース:


この答えは私が望むものに合わないと思います。メモリ合体は、他の回答で提供したように、メモリの連続ブロックを読み取ります。可能であれば、この答え、あなたが編集した問題のリンクを削除してください
サイ・キランgrandhi

@saikirangrandhi参考のために答えを保管します。必要に応じて、質問の編集を修正/取り消しできます。質問の下で[編集]を押すだけです。
リアルツスロー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.