1

NVIDIAの2.xアーキテクチャでは、各ワープには64kbのメモリがあり、デフォルトでは48kbの共有メモリと16kbのL1キャッシュ(サービスglobalconstantメモリ)に分割されています。

共有メモリへのアクセスのバンク競合については誰もが知っています。メモリはサイズ32ビットの32バンクに分割され、32スレッドすべてによる同時独立アクセスを可能にします。一方、グローバルメモリは、はるかに低速ですが、メモリ要求がワープ全体で合体するため、バンクの競合は発生しません。

質問: グローバルメモリまたはコンスタントメモリからの一部のデータが、特定のワープのL1キャッシュにキャッシュされているとします。このデータへのアクセスは、共有メモリ(L1キャッシュと共有メモリは実際には同じハードウェアであるため)などのバンク競合の影響を受けますか、それともグローバル/コンスタントメモリのようにバンク競合がありませんか?

4

1 に答える 1

9

NVIDIAの2.xアーキテクチャでは、各ワープには64kbのメモリがあり、デフォルトでは48kbの共有メモリと16kbのL1キャッシュに分割されています。

コンピューティング機能2.xデバイスには、ストリーミングマルチプロセッサ(SM)ごとに64 KBのSRAMがあり、次のように構成できます。

  • 16 KBL1および48KB共有メモリ、または
  • 48KBL1および16KB共有メモリ。

(グローバルメモリとコンスタントメモリのサービス)。

グローバルメモリ、ローカルメモリ、およびサーフェスメモリへのロードとストアはL1を経由します。コンスタントメモリへのアクセスは、専用のコンスタントキャッシュを経由します。

共有メモリへのアクセスのバンク競合については誰もが知っています。メモリはサイズ32ビットの32バンクに分割され、32スレッドすべてによる同時独立アクセスを可能にします。一方、グローバルメモリは、はるかに低速ですが、メモリ要求がワープ全体で合体するため、バンクの競合は発生しません。

L1を介したグローバルまたはローカルメモリへのアクセスは、キャッシュライン(128 B)ごとに行われます。ロード要求がL1に発行されると、LSUはアドレス発散計算を実行して、同じキャッシュラインにアクセスしているスレッドを判別する必要があります。次に、LSUユニットはL1キャッシュタグのルックアップを実行する必要があります。行がキャッシュされている場合は、レジスタファイルに書き戻されます。それ以外の場合、要求はL2に送信されます。ワープに要求によって処理されないスレッドがある場合、再生が要求され、残りのスレッドで操作が再発行されます。

ワープ内の複数のスレッドは、競合を引き起こすことなく、キャッシュラインの同じバイトにアクセスできます。

質問:グローバルメモリまたはコンスタントメモリからの一部のデータが、特定のワープのL1キャッシュにキャッシュされているとします。

コンスタントメモリはL1にキャッシュされず、コンスタントキャッシュにキャッシュされます。

このデータへのアクセスは、共有メモリ(L1キャッシュと共有メモリは実際には同じハードウェアであるため)などのバンク競合の影響を受けますか、それともグローバル/コンスタントメモリのようにバンク競合がありませんか?

L1とコンスタントキャッシュは、一度に1つのキャッシュラインにアクセスするため、バンクの競合は発生しません。

于 2013-02-21T17:27:59.920 に答える