4

例から始めましょう。

4 ソケットのシステムがあり、各ソケットに 4 つのコアがあり、各ソケットに 2GB RAM ccNUMA (キャッシュ コヒーレント不均一メモリ アクセス) タイプのメモリがあるとします。

実行中の 4 つのプロセスが各ソケット上にあり、そのすべてに SHM で示される P2 の RAM に割り当てられた共有メモリ領域があるとします。これは、そのリージョンへのロード/ストアによって、P2 のディレクトリへのルックアップが発生することを意味しますよね? もしそうなら... そのルックアップが起こるとき、それはレイテンシの観点からRAMにアクセスすることと同等ですか? このディレクトリは物理的にどこにありますか? (下記参照)

より具体的な例: P2 が SHM で LOAD を実行し、そのデータがタグ「(O)wner」で P2 の L3 キャッシュに取り込まれるとします。さらに、P4 が同じ SHM で LOAD を実行するとします。これにより、P4 は P2 のディレクトリを検索し、データは P2 によって所有されているとタグ付けされているため、私の質問は次のとおりです。

P4 は P2 の RAM から SHM を取得しますか? それとも常に P2 の L3 キャッシュからデータを取得しますか?

常に L3 キャッシュからデータを取得する場合、P2 の RAM から直接データを取得する方が高速ではないでしょうか? すでに P2 のディレクトリを検索する必要があるためですか? そして私の理解では、ディレクトリは文字通り RAM の上にあるということです。

ここで何が起こっているのかをひどく誤解している場合は申し訳ありませんが、誰かがこれを明確にするのを手伝ってくれることを願っています.

また、そのようなディレクトリ検索の速度に関するデータはありますか? データ取得に関して、そのようなルックアップの平均レイテンシに関するドキュメントはありますか? L3 読み取りヒット、読み取りミス、ディレクトリ ルックアップのサイクル数は? 等

4

1 に答える 1

2

Opteron プロセッサが HT Assist メカニズムを実装しているかどうかによって異なります。

そうでない場合、ディレクトリはありません。あなたの例では、P4 がロードを発行すると、メモリ要求が P2 メモリ コントローラーに到着します。P2 はキャッシュ ラインで応答し、他の 2 つのコアにもプローブ メッセージを送信します。最後に、これらの他の 2 つのコアは、キャッシュ ラインのコピーがないことを示す ACK で P4 に応答します。

HT アシストが有効になっている場合 (通常は 6 コア以上のソケットの場合)、各 L3 キャッシュにはスヌープ フィルター (ディレクトリ) が含まれており、どのコアがラインを保持しているかを書き留めるために使用されます。したがって、あなたの例では、P4 は他の 2 つのコアにプローブ メッセージを送信しません。これは、HT Assist ディレクトリを検索して、他の誰も回線のコピーを持っていないことを確認するためです (これは、 line は Owned ではなく Exclusive になり、ディレクトリ ルックアップは必要ありません)。

于 2014-12-06T13:33:55.420 に答える