2017-10-08 14 views
1

CPUのL1キャッシュメカニズムを理解しようとしています。L1キャッシュラインでデータ構造のキャッシュアライメントが無効になる方法

  1. のCPUが4つのコアを有し、L1キャッシュラインサイズMESIプロトコルを用いて、各コアのN個のエントリを有する64バイトであると仮定してみよう。

  2. したがって、メモリ参照はキャッシュラインサイズに合わせてロードされます(参照は64バイトを正確に保持する何らかの種類のデータ構造です)。

  3. このとき、コア0は、このキャッシュラインに(で0オフセット)4つのバイトを修正します。
  4. 次に、コア-1は同じメモリ位置を参照します。したがって、キャッシュ・コヒーレンス・プロトコルはこの動作を識別し、コア0のキャッシュ・ラインをコア1にコピーする(メイン・メモリからの読み出しを避ける)。

  5. コア1従って、このキャッシュラインに(で15オフセット)4つのバイトを変更します。

私の質問はこれです:キャッシュコヒーレンスプロトコルは、コア0のキャッシュラインを無効化またはないのだろうか?変更は異なるオフセットにありますが。

また、この時点で、誰かがこのキャッシュライン参照のキャッシュ整合性プロトコル(MESI)状態を知ることができますか?

答えて

1

MESIプロトコルはキャッシュライン上で動作するため、1本のキャッシュライン内のオフセットは関係ありません。

core-1がコア0からのキャッシュラインを最初に要求すると、それはコピーされ、両方のコアの状態はS(共有)に設定されます。 core-1がキャッシュラインを変更すると、core-1のキャッシュラインはM(変更済み)に設定され、コア0の場合はI(無効)に設定されます。

関連する問題