2016-08-27 3 views
1

私は書き込みミスポリシー上割り当てでの書き込みについてMESIプロトコル実装を思ったんだけど。書き込み要求があり、キャッシュラインの他のコピーがなくキャッシュミスが発生したとします。このdiagramは、次のステップがメインメモリ(またはL2キャッシュ)から値をフェッチし、それを格納し、キャッシュラインをM(変更済み)としてマークすることであると言います。私は、新しい値がキャッシュブロックに格納されていると仮定します。問題は、主メモリからデータを取得する必要がある理由です。 なぜ我々は単に状態/長男キャッシュラインを交換し、M(変更)としてマークI(無効)で最初に見つかったキャッシュラインへの新しい値を書き込むことはできませんか?MESIプロトコル。キャッシュミスを伴う書き込み。メインメモリの値を取得する必要があるのはなぜですか?

ありがとうございました!

答えて

1

あなたは、64バイトのキャッシュラインを持っていると仮定して、あなたは1つのバイトを書き込みます。キャッシュラインの「1/64」をキャッシュに入れることはできないので、残りの63バイトはどこから来るのですか?それらはメインメモリ(または次のレベルのキャッシュ)から来なければなりません。

+0

[OK]を、私は理解しました。ありがとうございました。もう1つの質問。同じ状況ですが、他の(ローカルではない)キャッシュには、要求されたキャッシュラインのコピーがあります。例えば、M(変更された)キャッシュラインコピーの場合、メインメモリへのライトバック、無効化、メインメモリからローカルキャッシュラインへのデータフェッチ、ローカルキャッシュラインの更新ステップがある。メインメモリに書き込んだ後にローカルキャッシュに読み込む点は何ですか?バス上にキャッシュラインのコピーを置いて、それをローカルキャッシュに保存しないでください。同じアルゴリズムが既存のコピーでの読み取りミスで使用されました。 – Alex

+0

は実際には、一方が64バイトのキャッシュ・ラインのために64個の有効ビットを提供することができ、全体のラインがキャッシュにある間に上書きされなかった場合にのみライトバックのメモリの読み出しを必要とします。 (これはかなりのオーバーヘッドです。)1つの要因は、近い将来にストアの近くのアイテムが読み込まれるという空間的な地域性の仮定です。 –

関連する問題