私の理解では、2つの方法の主な違いは、「ライトスルー」方法ではデータがキャッシュを介してメインメモリにすぐに書き込まれるのに対し、「ライトバック」方法ではデータが「後で」書き込まれることです。
まだ「遅い時間」にメモリを待つ必要があるので、「ライトスルー」の利点は何ですか?
私の理解では、2つの方法の主な違いは、「ライトスルー」方法ではデータがキャッシュを介してメインメモリにすぐに書き込まれるのに対し、「ライトバック」方法ではデータが「後で」書き込まれることです。
まだ「遅い時間」にメモリを待つ必要があるので、「ライトスルー」の利点は何ですか?
write back
メインメモリへの書き込みはCPUキャッシュへの書き込みよりもはるかに遅く、データが短い可能性があるため、パフォーマンスが向上します(つまり、より早く再び変更される可能性があり、古いバージョンをメモリに入れる必要はありません)。これは複雑ですが、より洗練されており、最新のCPUのほとんどのメモリはこのポリシーを使用しています。
回答:
メインメモリへのライトスルーの利点は、コンピュータシステムの設計が簡素化されることです。ライトスルーを使用すると、メインメモリには常に行の最新のコピーがあります。したがって、読み取りが行われると、メインメモリは常に要求されたデータで応答できます。
ライトバックを使用する場合、最新のデータがプロセッサキャッシュにある場合と、メインメモリにある場合があります。データがプロセッサキャッシュにある場合、メインメモリにはデータの古いコピーがある可能性があるため、そのプロセッサはメインメモリが読み取り要求に応答するのを停止する必要があります。これは、ライトスルーよりも複雑です。
また、ライトスルーは、Modify状態を必要としないため、キャッシュコヒーレンシプロトコルを簡素化できます。ザ・修正、それはラインを無効にするか、追い出す前にキャッシュがキャッシュラインを書き戻す必要があることを状態を記録します。ライトスルーでは、メモリにはすでにラインの最新のコピーがあるため、キャッシュラインはライトバックせずに常に無効にすることができます。
もう1つ、メモリマップドI / Oレジスタに書き込むライトバックアーキテクチャソフトウェアでは、書き込みがキャッシュからすぐに送信されるように、追加の手順を実行する必要があります。それ以外の場合、回線が別のプロセッサによって読み取られるか、回線が削除されるまで、書き込みはコアの外部に表示されません。
例を使ってこれを見てみましょう。直接マップされたキャッシュがあり、ライトバックポリシーが使用されているとします。したがって、キャッシュラインには有効なビット、ダーティビット、タグ、およびデータフィールドがあります。次の操作があるとします:write A(Aはキャッシュの最初の行にマップされます)。
何が起こるかというと、プロセッサからのデータ(A)がキャッシュの最初の行に書き込まれます。有効ビットとタグビットが設定されます。ダーティビットは1に設定されます。
ダーティビットは、キャッシュラインが最後にキャッシュに取り込まれてから書き込まれたことを示しています。
ここで、別の操作が実行されたとします。readE(Eも最初のキャッシュラインにマップされます)
直接マップされたキャッシュがあるため、最初の行は、メモリから取得されるEブロックに簡単に置き換えることができます。ただし、最後に行に書き込まれたブロック(ブロックA)はまだメモリに書き込まれていないため(ダーティビットで示されます)、キャッシュコントローラーは最初にメモリにライトバックを発行してブロックAをメモリに転送します。メモリに読み取り操作を発行することにより、行をブロックEに置き換えます。ダーティビットが0に設定されました。
したがって、ライトバックポリシーは、ブロックがメモリとそれに関連するキャッシュラインで同じになることを保証するものではありません。ただし、回線が置き換えられるたびに、最初にライトバックが実行されます。
ライトスルーポリシーは正反対です。これによると、メモリには常に最新のデータがあります。つまり、キャッシュブロックが書き込まれると、それに応じてメモリも書き込まれます。(ダーティビットは使用しません)
多分この記事はあなたがここにリンクするのを助けることができます
ライトスルー:書き込みは、キャッシュとバッキングストアの両方に対して同期的に実行されます。
ライトバック(またはライトビハインド):書き込みはキャッシュに対してのみ行われます。変更されたキャッシュブロックは、置き換えられる直前にストアに書き戻されます。
ライトスルー:データが更新されると、キャッシュとバックエンドストレージの両方に書き込まれます。このモードは操作が簡単ですが、データをキャッシュとストレージの両方に書き込む必要があるため、データの書き込みに時間がかかります。
書き戻し:データが更新されると、キャッシュにのみ書き込まれます。変更されたデータは、データがキャッシュから削除された場合にのみバックエンドストレージに書き込まれます。このモードのデータ書き込み速度は高速ですが、更新されたデータがストレージに書き込まれる前に電源障害が発生すると、データが失われます。
ライトバックとライトスルーは、ライトヒットが発生したとき、つまりキャッシュに要求された情報があるときのポリシーを記述します。これらの例では、単一のプロセッサがキャッシュを使用してメインメモリに書き込んでいると想定しています。
ライトスルー:情報はキャッシュとメモリに書き込まれ、両方が終了すると書き込みが終了します。これには、実装が簡単であるという利点があり、メインメモリは常にキャッシュと(同期して)一貫性があり(ユニプロセッサの場合-他のデバイスがメインメモリを変更する場合、このポリシーでは不十分です)、読み取りミスが発生しますメインメモリへの書き込みが発生することはありません。明らかな欠点は、すべての書き込みヒットで2回の書き込みが必要であり、そのうちの1つは低速のメインメモリにアクセスすることです。
書き戻し:情報はキャッシュ内のブロックに書き込まれます。変更されたキャッシュブロックは、置き換えられたときにのみメモリに書き込まれます(事実上、レイジー書き込み)。各キャッシュブロックの特別なビット、ダーティビットは、キャッシュ内でキャッシュブロックが変更されたかどうかを示します。ダーティビットが設定されていない場合、キャッシュブロックは「クリーン」であり、書き込みミスはブロックをメモリに書き込む必要はありません。
利点は、書き込みがキャッシュの速度で発生する可能性があり、同じブロック内での書き込みの場合、メインメモリへの書き込みが1回だけ必要なことです(前のブロックが置き換えられている場合)。欠点は、このプロトコルの実装が難しく、メインメモリがキャッシュと整合性がない(同期していない)可能性があること、および置換をもたらす読み取りによって、ダーティブロックがメインメモリに書き込まれる可能性があることです。
書き込みミスのポリシーについては、最初のリンクで詳しく説明しています。
これらのプロトコルは、最近のプロセッサで一般的であるように、複数のプロセッサと複数のキャッシュがある場合を処理しません。このためには、より複雑なキャッシュコヒーレンスメカニズムが必要です。キャッシュへの書き込みはすぐにメモリに反映されるため、ライトスルーキャッシュのプロトコルは単純です。
良いリソース:
ライトバックはより複雑なものであり、複雑なキャッシュコヒーレンスプロトコル(MOESI)が必要ですが、システムを高速かつ効率的にするため、それだけの価値があります。
ライトスルーの唯一の利点は、実装が非常に簡単になり、複雑なキャッシュコヒーレンシプロトコルが不要になることです。
write back
パフォーマンスが良いということですか?