1

MESI プロトコルと、キャッシュの一貫性を維持するためのそのアプリケーションに関するかなりの文献を読みましたが、よくわからない詳細が 2 つあります。

複数のキャッシュの同期を維持するために MESI プロトコルを使用し、キャッシュ ラインに LRU 戦略を適用する場合、ラインは読み取りアクセスによってのみキャッシュに保持されますか、それとも書き込みアクセスによっても保持されますか?

また、キャッシュ A の共有ラインでのキャッシュ ヒットは、キャッシュ B の LRU オーダーでそのラインを表示しませんか?

4

1 に答える 1

0

ライトバック タイプのキャッシュについて話している場合は、キャッシュの読み取り/書き込み操作と、CPU が認識するロード/ストアを区別する必要があります。ロードとストアの両方が読み取り操作を実行します (ストアは所有権の読み取りと呼ばれるわずかに異なるフレーバーを使用する場合があり、コアが排他的に行を取得し、M 状態としてマークできることを本質的に保証します)。その理由は、ほとんどのストアがキャッシュ ラインの幅全体をカバーしていないため、上書きする部分をデータの最新の有効なコピーにマージする必要があるためです。したがって、このようなシステムでは、ロードとストアの両方が読み取りに相当し、キャッシュにラインが割り当てられます。そのような行が割り当てられると、LRU が更新されます。

キャッシュ書き込み操作は、通常、上位レベルのキャッシュから下位レベルのキャッシュへのライトバックに関連付けられています。LRU メカニズムは、キャッシュ コヒーレンシ自体と直交しており、スペースが必要な場合 (通常は、割り当てが必要な読み取りラインの場合) に、どのラインを書き戻す必要があるかを選択するだけです。

2 番目の質問については、LRU と MESI は直交しています。別のキャッシュをスヌープし、共有状態のラインにヒットするキャッシュ ルックアップは、(アクセスの種類に応じて) そこに残すか、無効にします。ラインがそのまま放置された場合 (単純な読み取りの場合、キャッシュ A にも共有状態でラインが割り当てられます)、キャッシュ B のラインがタッチされる (その LRU が更新される) かどうかは、実装によって異なります。一貫性には影響しません。

于 2014-09-29T16:02:32.623 に答える