web-dev-qa-db-ja.com

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

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

ただし、Xeon E5-2600シリーズのCPUには正確に コアあたり2.5 MBのL3キャッシュ があることに気付きました。

これにより、オペレーティングシステムはコアごとに2.5MBのL3キャッシュを予約していると思います。ただし、L3キャッシュはすべてのコア間で共有されているという矛盾した印象もあります。これについての情報や議論は驚くほど少ないです。

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

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

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

私のシステムには確かに、何年にもわたってインストール(およびアンインストール)した非常に多くのアプリケーションがロードされていますが、それでもシステムを合理化するために最善を尽くしています。

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

新しいコンピューターを入手します。私は、多くのバックグラウンドアプリケーションを実行し続け、多くのプログラムをインストール/アンインストールすることを知っています。コアだけでなくL3キャッシュも2倍にするデュアルCPUシステムを入手することで、恐ろしいC++コンパイラのパフォーマンスと一般的なシステムの速度低下を克服できると思ったら、喜んでやります。

多くのプログラムやバックグラウンドアプリケーションを使用している場合でも、ハイエンドシステムの動作が非常に遅い理由はありませんshould。しかし、システムにいくらCPUパワーとL3キャッシュを与えても問題が発生する場合は、インストールして実行しているプログラムとバックグラウンドアプリケーションが非常に多いという理由だけで、デュアルCPUに2,500ドルの追加費用を無駄にしたくありません。私の問題を解決するのに役立たないシステム。

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

12
Dan Nissenbaum

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

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

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

13
David Schwartz

すべてのレベルのキャッシュがチップ上に直接実装されており、L2とL3が同じものであると理解しています(Intelだけが違いを認識し、AMDがそれらを組み合わせています)。これを念頭に置いて、CPUのL3キャッシュがデュアルソケットマザーボードのCPU間で共有されていないことを想像します。これは、CPUごとにRAM)に個別のメモリチャネルが表示されるのが一般的であることを念頭に置いておくと意味があります。

私が間違っている場合、誰かが私を訂正します。

0
Stephen R