web-dev-qa-db-ja.com

ライトバックキャッシュとライトスルーキャッシュ

私の理解では、2つのメソッドの主な違いは、「ライトスルー」メソッドではデータがキャッシュを介してメインメモリに直ちに書き込まれ、「ライトバック」データでは「後期」に書き込まれることです。

「後半」でメモリを待機する必要がありますが、「ライトスルー」の利点は何ですか?

60
Naftaly

メインメモリへのライトスルーの利点は、コンピューターシステムの設計が簡素化されることです。ライトスルーを使用すると、メインメモリには常にラインの最新のコピーがあります。そのため、読み取りが完了すると、メインメモリは常に要求されたデータで応答できます。

ライトバックが使用される場合、最新のデータがプロセッサキャッシュにある場合と、メインメモリにある場合があります。データがプロセッサキャッシュにある場合、メインメモリにはデータの古いコピーがある可能性があるため、そのプロセッサはメインメモリが読み取り要求に応答しないようにする必要があります。これは、ライトスルーよりも複雑です。

また、ライトスルーはModify状態を必要としないため、キャッシュ一貫性プロトコルを簡素化できます。 Modify状態は、キャッシュがキャッシュラインを無効化または削除する前にキャッシュラインを書き戻す必要があることを記録します。ライトスルーでは、メモリにはすでにラインの最新のコピーがあるため、書き戻すことなくキャッシュラインを常に無効にすることができます。

もう1つ-メモリマップドI/Oレジスタに書き込むライトバックアーキテクチャソフトウェアでは、書き込みがキャッシュから直ちに送信されるように追加の手順を実行する必要があります。そうしないと、ラインが別のプロセッサによって読み取られるか、ラインが削除されるまで、書き込みはコアの外部から見えません。

72

例の助けを借りてこれを見てみましょう。直接マップされたキャッシュがあり、ライトバックポリシーが使用されているとします。したがって、キャッシュラインに有効なビット、ダーティビット、タグ、およびデータフィールドがあります。操作があるとします:Aを書き込みます(Aはキャッシュの最初の行にマップされます)。

何が起こるかというと、プロセッサーからのデータ(A)がキャッシュの最初の行に書き込まれます。有効ビットとタグビットが設定されます。ダーティビットは1に設定されます。

ダーティビットは、最後にキャッシュに入れられてからキャッシュラインが書き込まれたことを示しています。

ここで、別の操作が実行されたとします:read E(Eは最初のキャッシュラインにもマッピングされます)

直接マップされたキャッシュがあるため、最初の行は、メモリから取得されるEブロックに簡単に置き換えることができます。ただし、最後に行に書き込まれたブロック(ブロックA)はまだメモリに書き込まれていないため(ダーティビットで示される)、キャッシュコントローラーは最初にwrite backをメモリに転送して転送しますブロックAをメモリに読み込むと、メモリに読み取り操作を発行して、行をブロックEに置き換えます。ダーティビットが0に設定されました。

したがって、ライトバックポリシーは、メモリとそれに関連するキャッシュラインでブロックが同じになることを保証しません。ただし、行が置換される直前に、最初に書き戻しが実行されます。

ライトスルーポリシーは正反対です。これによると、メモリには常に最新のデータがあります。つまり、キャッシュブロックが書き込まれると、それに応じてメモリも書き込まれます。 (ダーティビットの使用なし)

4
Rajat

ライトバックはより複雑なものであり、複雑なCache Coherence Protocol(MOESI)が必要ですが、システムを高速かつ効率的にする価値があります。

ライトスルーの唯一の利点は、実装が非常にシンプルになり、複雑なキャッシュコヒーレンシープロトコルが必要ないことです。

1