Sandy-Bridge E Xeon CPU の L3 キャッシュはすべてのコアで共有されますか?

Sandy-Bridge E Xeon CPU の L3 キャッシュはすべてのコアで共有されますか?

関連する質問L3 キャッシュを 2 倍にする点でのデュアル CPU システムの利点について質問しました。

しかし、Xeon E5-2600シリーズのCPUは、2.5 MBのL3キャッシュコアあたり

このことから、オペレーティングシステムはコアごとに2.5 MBのL3キャッシュを予約していると私は信じています。しかし、L3キャッシュは共有すべてのコア間で。これに関する情報や議論は驚くほど少ないです。

私の主な懸念は、優先度の低いバックグラウンド アプリケーションが L3 キャッシュを「独占」し、優先度の高いフォアグラウンド アプリケーションのパフォーマンスを低下させる可能性があるかどうかです。私が抱えている 2 つの具体的なパフォーマンスの問題が、この質問をするきっかけとなっています。

  1. 特定の C++ プログラムをコンパイルするには、現在の開発システムで VS 2008 を使用すると 25 分かかりますが、別のシステムでは、ほぼハイエンドの i7-970 CPU と十分な RAM があるにもかかわらず、同じ設定で VS 2008 を使用すると 5 分しかかかりません。

  2. 私のシステムでは、プログラムの実行 (つまり、メイン ウィンドウの表示) に最大 20 秒かかることがよくあります。また、関連するメモでは、コンテキスト メニューのエントリを制限しようとしたにもかかわらず (現在、デフォルトの他に 10 個ほど追加されています)、Windows シェルでは Windows エクスプローラーのコンテキスト メニューを表示するのに最大 10 秒かかります (関連する動作にもほぼ同じ時間がかかります)。

私のシステムには、長年にわたりインストール(およびアンインストール)した膨大な数のアプリケーションが確かに搭載されていますが、それでもシステムを合理化するために最善を尽くしています。

また、優先度の低いバックグラウンド アプリケーションも多数実行されています。特に、CrashPlan などの冗長クラウド バックアップ ソフトウェアは、通常、この 6 コア 12 スレッド システムの合計 CPU 使用率の約 25% を占めます。

新しいコンピューターを購入する予定です。今後も多くのバックグラウンド アプリケーションを実行し、多くのプログラムをインストール/アンインストールすることになります。コアだけでなく L3 キャッシュも 2 倍にしたデュアル CPU システムを導入すれば、C++ コンパイラのひどいパフォーマンスとシステム全体の速度低下を克服できると思えば、喜んで導入します。

そこにはすべき多くのプログラムやバックグラウンド アプリケーションがあっても、ハイエンド システムの動作が遅いのは、何の理由もありません。しかし、システムにどれだけ CPU パワーと L3 キャッシュを割り当てても、単に多くのプログラムやバックグラウンド アプリケーションがインストールされて実行されているという理由だけで問題が発生するのであれば、問題の解決に役立たないデュアル CPU システムに 2,500 ドル余分に費やすのは望ましくありません。

特に、L3 キャッシュがすべてのコア間で共有されているのか (優先度の低いバックグラウンド アプリケーションが L3 キャッシュを独占し、優先度の高いプログラムの速度を低下させる可能性がある)、それとも個々のコアに関連付けられているのかという私の質問に関して、何かアドバイスがあればいただければ幸いです。

答え1

これらの CPU では、各物理コアに独自の L2 キャッシュがあります。L3 キャッシュはすべてのコアで共有され、包括的です。つまり、いずれかのコアの L2 キャッシュに存在するデータは、L3 キャッシュにも存在します。

これは L3 スペースの無駄遣いのように見えるかもしれませんが、実際には L3 はコア間のメモリ操作を高速化する上で非常に貴重です。L3 キャッシュの主な目的は、コアのスイッチボードおよびステージング領域として機能することです。たとえば、あるコアがメモリ領域が別のコアによってキャッシュされているかどうかを知りたい場合、L3 キャッシュをチェックできます。あるコアによって処理された情報が次に別のコアによって処理される必要がある場合、その情報は低速のオフチップ メモリではなく L3 キャッシュを介して渡されます。それ以外では、特殊なアルゴリズムを除けば、パフォーマンスへの影響はそれほど大きくありません。L2 キャッシュは小さな処理には十分な大きさですが、L3 キャッシュは大きな処理には小さすぎます。

したがって、各コアには独自の 256 KB の L2 キャッシュがあり、実質的には 256 KB が L3 キャッシュに予約されていますが、残りはすべてのコアで共有されます。他のコアの重要度の低いアクティビティは、L3 スペースの使用からメリットを得られるより重要なタスクのパフォーマンスに悪影響を及ぼす可能性があります。ただし、前述した理由から、これは実際には大きな影響はなく、キャッシュ汚染を最小限に抑えるために「バルク データ」操作 (圧縮やスキャンなど) を最適化する以外には心配する価値はありません。(たとえば、非時間的操作を使用するなど)

答え2

私の理解では、すべてのレベルのキャッシュはチップ上に直接実装されており、L2 と L3 は同じものです (違いを認識しているのは Intel のみで、AMD はこれらを統合しています)。これを考慮すると、CPU の L3 キャッシュはデュアル ソケット マザーボード上の CPU 間で共有されないと考えられます。これは、CPU ごとに RAM への個別のメモリ チャネルが存在するのが一般的であることも念頭に置いておくと理にかなっています。

私が間違っていたら誰か訂正してください。

関連情報