6

マルチコア x86 プロセッサの 4 つの個別のコアで 4 つのスレッドが実行されており、データを共有していないとします。4 つのコアが共有 L2 キャッシュの個別の事前定義された部分を使用するようにプログラム的に設定することは可能ですか。

4

1 に答える 1

2

L1、L2、L3、L4 キャッシュの代わりに、排他キャッシュと共有キャッシュという 2 つの用語を使用しましょう。異なる CPU ファミリは、異なるレベルでキャッシュを共有し始めます。提示された用語では、元の質問は次のとおりです-共有キャッシュを部分に分割し、それぞれがCPU /コアの1つによって排他的に使用されることは可能ですか? 明確な答えはありません。さらに、互いに反対の2つの答えがあります。

1) 最初の一般的な答え: いいえ。キャッシュは、設計上、ハードウェアで管理されます。メモリ全体または定義されたメモリ領域のキャッシュの有効化/無効化、キャッシュのフラッシュ (ライトスルー/ライトバック) の指定されたポリシーの適用など、ソフトウェアでアクセスできるキャッシュの制御手段はほとんどありません。基本的に、ハードウェアで管理するように設計されているという事実によるものではありません。そのため、ソフトウェアで適切に管理できる便利なインターフェイスはありません。

2) 2 番目の回答: はい。実際、キャッシュは、キャッシュの各ラインが指定されたメモリラインのセットからデータを保存できるように設計されています。このため、同じ CPU の 1 つの CPU/コアが、同じキャッシュ ラインに割り当てられたすべてのメモリ ラインを排他的に所有および使用することをメモリ マネージャが保証する場合、メモリ マネージャは、そのキャッシュ ラインがその CPU によって排他的に使用されることを保証します。これは非常にトリッキーな回避策です。そして、利点は非常に限られており、重大な欠点があります: メモリ レイアウトが非常に断片化されている、キャッシュの使用が不均衡である、メモリ管理が複雑である、ハードウェアに非常に依存している (詳細については、「MetallicPriest」が提供する論文を参照してください)。

履歴書: 理論上は可能ですが、実際にはほとんど不可能です。

于 2013-04-05T12:54:33.593 に答える