ライトバックとライトスルーキャッシング?


93

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

まだ「遅い時間」にメモリを待つ必要があるので、「ライトスルー」の利点は何ですか?


@EricWangwrite backパフォーマンスが良いということですか?
wlnirvana 2016

@wlnirvanaはい、その通りです。私の誤記です。私はそれを削除し、将来の誤解を避けるためにここに新しいコメントを入れます。
Eric Wang

6
簡単に言えば、write backメインメモリへの書き込みはCPUキャッシュへの書き込みよりもはるかに遅く、データが短い可能性があるため、パフォーマンスが向上します(つまり、より早く再び変更される可能性があり、古いバージョンをメモリに入れる必要はありません)。これは複雑ですが、より洗練されており、最新のCPUのほとんどのメモリはこのポリシーを使用しています。
Eric Wang

説明的な答えが出ているようです。ライトバックアルゴリズムについて説明した後、Write-Allocate、Write-NoAllocateタグを確認することをお勧めします。
ÇağlayanDÖKME

あなたの質問に対する答えは、ライトスルーキャッシュでは、同じブロック内に書き込む場合、メインメモリへの書き込みは1回だけでよいということです。詳細については私の答えを参照してください。
QWR

回答:


111

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

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

また、ライトスルーは、Modify状態を必要としないため、キャッシュコヒーレンシプロトコルを簡素化できます。ザ・修正、それはラインを無効にするか、追い出す前にキャッシュがキャッシュラインを書き戻す必要があることを状態を記録します。ライトスルーでは、メモリにはすでにラインの最新のコピーがあるため、キャッシュラインはライトバックせずに常に無効にすることができます。

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


7
メモリマップドI / Oの場合、これらのアドレスは通常、キャッシュされていないものとしてマップされます。ライトスルーを使用して信頼性を高めることもできます(たとえば、L1にパリティ保護のみがあり、L2にECCがある場合)。ライトスルーは、書き込み割り当てなしを使用する小さなキャッシュでも人気があります(つまり、書き込みミスはブロックをキャッシュに割り当てないため、L1容量とL2読み取り/ L1フィル帯域幅の需要が減少する可能性があります)。このようなライトアラウンドには、ライトスルーの要件がすでに存在します。
Paul A. Clayton

1
コアのキャッシュメソッドがライトバックかライトスルーかを確認することはできますか?
ArtificiallyIntelligence

4
プロセッサはメインメモリが読み取り要求に応答するのを停止する必要があるため、ライトバックがより複雑であると言うのは誤解を招く可能性があります。さらに、キャッシュは「ダーティビット」を使用してデータ(メインメモリと整列されていない)とそうでないデータを追跡するため、メインメモリをまったくチェックしない可能性があります。
steviejay 2016年

「非同期内部ライトバック」などのキャッシュ機能を表示する@Shaowu「lshw」コマンド
mug896 2017

ライトバックで使用される実際の手順が何であるかはまだわかりませんが、それが複雑であることを知っています...それについてのより多くのリソース/詳細を提供できますか?
CombinatoricsGuy19年

10

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

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

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

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

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

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

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


7

多分この記事はあなたがここにリンクするのを助けることができます

ライトスルー:書き込みは、キャッシュとバッキングストアの両方に対して同期的に実行されます。

ライトバック(またはライトビハインド):書き込みはキャッシュに対してのみ行われます。変更されたキャッシュブロックは、置き換えられる直前にストアに書き戻されます。

ライトスルー:データが更新されると、キャッシュとバックエンドストレージの両方に書き込まれます。このモードは操作が簡単ですが、データをキャッシュとストレージの両方に書き込む必要があるため、データの書き込みに時間がかかります。

書き戻し:データが更新されると、キャッシュにのみ書き込まれます。変更されたデータは、データがキャッシュから削除された場合にのみバックエンドストレージに書き込まれます。このモードのデータ書き込み速度は高速ですが、更新されたデータがストレージに書き込まれる前に電源障害が発生すると、データが失われます。


3

ライトバックとライトスルーは、ライトヒットが発生したとき、つまりキャッシュに要求された情報があるときのポリシーを記述します。これらの例では、単一のプロセッサがキャッシュを使用してメインメモリに書き込んでいると想定しています。

ライトスルー:情報はキャッシュとメモリに書き込まれ、両方が終了すると書き込みが終了します。これには、実装が簡単であるという利点があり、メインメモリは常にキャッシュと(同期して)一貫性があり(ユニプロセッサの場合-他のデバイスがメインメモリを変更する場合、このポリシーでは不十分です)、読み取りミスが発生しますメインメモリへの書き込みが発生することはありません。明らかな欠点は、すべての書き込みヒットで2回の書き込みが必要であり、そのうちの1つは低速のメインメモリにアクセスすることです。

書き戻し:情報はキャッシュ内のブロックに書き込まれます。変更されたキャッシュブロックは、置き換えられたときにのみメモリに書き込まれます(事実上、レイジー書き込み)。各キャッシュブロックの特別なビット、ダーティビットは、キャッシュ内でキャッシュブロックが変更されたかどうかを示します。ダーティビットが設定されていない場合、キャッシュブロックは「クリーン」であり、書き込みミスはブロックをメモリに書き込む必要はありません。

利点は、書き込みがキャッシュの速度で発生する可能性があり、同じブロック内での書き込みの場合、メインメモリへの書き込みが1回だけ必要なことです(前のブロックが置き換えられている場合)。欠点は、このプロトコルの実装が難しく、メインメモリがキャッシュと整合性がない(同期していない)可能性があること、および置換をもたらす読み取りによって、ダーティブロックがメインメモリに書き込まれる可能性があることです。

書き込みミスのポリシーについては、最初のリンクで詳しく説明しています。

これらのプロトコルは、最近のプロセッサで一般的であるように、複数のプロセッサと複数のキャッシュがある場合を処理しません。このためには、より複雑なキャッシュコヒーレンスメカニズムが必要です。キャッシュへの書き込みはすぐにメモリに反映されるため、ライトスルーキャッシュのプロトコルは単純です。

良いリソース:


0

ライトバックはより複雑なものであり、複雑なキャッシュコヒーレンスプロトコル(MOESI)が必要ですが、システムを高速かつ効率的にするため、それだけの価値があります。

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


1
WTにはまだコヒーレンシプロトコルが必要です。あるコアのストアは、他のキャッシュのコピーを無効にする必要があるため、古いデータを無期限に読み取り続けることはありません。AtomicRMWには特別なサポートが必要です。これらはすべてWTの方が簡単だと思いますが、必要なコヒーレンシはまだやや複雑です。
ピーターコーデス2018年

あるいは、L1 / L2(およびそれ以上)のキャ​​ッシュ階層を持つシングルコアシステムについて話していたのかもしれません。その場合、最も外側のキャッシュ方向にアクセスできるキャッシュコヒーレントDMAをサポートする必要がない限り、外部キャッシュを介してフェッチする内部キャッシュにMESI / MOESIを実際に使用する必要はありません。ただし、内部キャッシュを無効にするには、DMA書き込みの一貫性が必要です。
ピーター

1
キャッシュコヒーレンシプロトコルは、複数のキャッシュ/プロセッサをサポートする必要がある場合、またはDMAなどのメモリに影響を与える場合にのみ必要です。ライトスルーには、シングルプロセッサシステムでもその利点、つまり書き込み速度があります。
量子細線

DMAの場合、OSはI / O後にキャッシュを明示的にフラッシュできます。ソフトウェアであるため、効率が低下します。
QWR
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.