2016-11-22 6 views
0

ヘネッセイとパターソンは、「書き込みのもう1つの重要な点は、書き込みミスで起こることです。まずブロックの単語をメモリから取り出します。 キャッシュでは、キャッシュブロックにミスしたワードを上書きすることができます。また、フルアドレスを使用してメインメモリにワードを書き込むこともできます。キャッシュ内のライトスルースキーム

私は上記のステートメントを理解していないようです。キャッシュ内の単語を上書きすると、以前はアドレスのインデックスが一致していましたが、タグの値が異なっていたことを意味します。したがって、プロセッサはストールし、メモリから読み出してキャッシュに書き込むように命令する。これは明らかにブロックの以前の内容を置き換えます(Take 1ブロックには1ワードが含まれています)。それでなぜ私たちは再びその言葉を記憶に書きますか?私たちはそこからそれを取り出していないのですか?

誰かが以前の声明を具体的に、そして一般的に忘れてしまったことについて詳しく説明できますか?ミス・ミスはどういう意味ですか?

答えて

2

書き込みミスは、書き込みミスを除いて、読み取りミスに似ています(探しているエントリはキャッシュにありません)。書き込みミスが発生した場合、我々はいくつかのことを行うことができます。 1つは、読みミスとして処理することです。これはfetch-on-writeと呼ばれ、データをフェッチし、更新が必要な単語を修正します。あなたが修正しようとしている場合、メモリからデータを取得する必要はないと述べました。これは当てはまりますが、キャッシュラインは複数のワードで構成されているため、キャッシュライン全体をフェッチすることは、後続のオペレーションが読み込みであり、フェッチされたキャッシュラインのワードの1つに宛てられている場合に有益です。主な利点はデザインの容易さだと私は信じています。 write-allocateのパスに従うと、失われたエントリに対して新しいキャッシュラインが割り当てられ、新しいデータが保存されます。キャッシュラインが複数の単語、たとえば4で構成されている場合、1つの単語だけが適切なデータを持ち、他のすべてがガベージであるため、ここでは注意する必要があります。これは、どのワードが有効であり、どのワードが有効でないかを示すキャッシュライン内のワード毎のマスクを維持することを必要とする。

ノーマン・P.・ジョフィーのwritre miss policyに関する良い記事です。 http://dl.acm.org/citation.cfm?id=165154

+0

通常、ライトスルーキャッシュは古いデータを読み込みますが、そうではありませんか?あなたは、サブライン細分性を有効/無効のままにしておくことができます。これは、あなたが示唆しているように、読み取りを避けることができますが、それは一般的ではありません。マルチレベルキャッシュシステムでキャッシュコヒーレンシを維持するには、通常、ラインをModified状態にするためにRead-For-Ownershipが必要です。 –

関連する問題