wake-up-neo.com

Write-Back vs Write-Through-Caching?

Nach meinem Verständnis besteht der Hauptunterschied zwischen den beiden Methoden darin, dass beim "Write-Through" -Verfahren Daten sofort über den Cache in den Hauptspeicher geschrieben werden, während beim "Write-Back" -Verfahren Daten in einer "späteren Zeit" geschrieben werden.

Wir müssen in "letzter Zeit" noch auf den Speicher warten. Was ist der Vorteil von "Durchschreiben"?

62
Naftaly

Der Vorteil des Durchschreibens in den Hauptspeicher besteht darin, dass das Design des Computersystems vereinfacht wird. Beim Durchschreiben verfügt der Hauptspeicher immer über eine aktuelle Kopie der Zeile. Nach dem Lesen kann der Hauptspeicher immer mit den angeforderten Daten antworten.

Wenn ein Zurückschreiben verwendet wird, befinden sich die aktuellen Daten manchmal in einem Prozessor-Cache und manchmal im Hauptspeicher. Wenn sich die Daten in einem Prozessor-Cache befinden, muss dieser Prozessor verhindern, dass der Hauptspeicher auf die Leseanforderung antwortet, da der Hauptspeicher möglicherweise eine veraltete Kopie der Daten enthält. Dies ist komplizierter als das Durchschreiben.

Durchschreiben kann auch das Cache-Kohärenzprotokoll vereinfachen, da es nicht den Status Modify benötigt. Der Ändern -Status gibt an, dass der Cache die Cachezeile zurückschreiben muss, bevor er die Zeile ungültig macht oder löscht. Beim Durchschreiben kann eine Cache-Zeile immer ungültig gemacht werden, ohne dass ein Zurückschreiben erforderlich ist, da der Speicher bereits eine aktuelle Kopie der Zeile enthält.

Eine weitere Sache: Bei einer Write-Back-Architektur-Software, die in speicherabgebildete E/A-Register schreibt, müssen zusätzliche Schritte ausgeführt werden, um sicherzustellen, dass Schreibvorgänge sofort aus dem Cache gesendet werden. Andernfalls sind Schreibvorgänge außerhalb des Kerns erst sichtbar, wenn die Zeile von einem anderen Prozessor gelesen oder die Zeile entfernt wurde.

76

Schauen wir uns das anhand eines Beispiels an. Angenommen, wir haben einen direkt zugeordneten Cache und die Write-Back-Richtlinie wird verwendet. Wir haben also ein gültiges Bit, ein Dirty-Bit, ein Tag und ein Datenfeld in einer Cache-Zeile. Angenommen, wir haben eine Operation: Schreiben Sie A (wobei A der ersten Zeile des Caches zugeordnet ist).

Was passiert ist, dass die Daten (A) vom Prozessor in die erste Zeile des Cache geschrieben werden. Das gültige Bit und die Tag-Bits werden gesetzt. Das Dirty-Bit ist auf 1 gesetzt.

Schmutziges Bit zeigt einfach an, dass die Cache-Zeile seit dem letzten Einfügen in den Cache jemals geschrieben wurde!

Angenommen, es wird eine andere Operation ausgeführt: Lesen Sie E (wobei E auch der ersten Cache-Zeile zugeordnet ist).

Da es sich um einen direkt zugeordneten Cache handelt, kann die erste Zeile einfach durch den E-Block ersetzt werden, der aus dem Speicher geladen wird. Da jedoch der zuletzt in die Zeile (Block A) geschriebene Block noch nicht in den Speicher geschrieben wurde (angezeigt durch das Dirty-Bit), gibt der Cache-Controller zuerst ein Zurückschreiben an den Speicher aus, um ihn zu übertragen den Block A in den Speicher, dann wird die Zeile durch Block E ersetzt, indem eine Leseoperation in den Speicher ausgegeben wird. Dirty Bit ist jetzt auf 0 gesetzt.

Rückschreibe-Richtlinien garantieren also nicht, dass der Block im Speicher und in der zugehörigen Cache-Zeile identisch ist. Wenn jedoch die Leitung ersetzt werden soll, wird zuerst ein Zurückschreiben durchgeführt.

Eine Durchschreibepolitik ist genau das Gegenteil. Demnach wird der Speicher immer über aktuelle Daten verfügen. Das heißt, wenn der Cache-Block geschrieben wird, wird auch der Speicher entsprechend geschrieben. (keine Verwendung von Dirty Bits)

4
Rajat

Das Zurückschreiben ist komplexer und erfordert ein kompliziertes Cache-Kohärenz-Protokoll (MOESI), das sich jedoch lohnt, da es das System schnell und effizient macht.

Der einzige Vorteil von Write-Through besteht darin, dass die Implementierung extrem einfach ist und kein kompliziertes Cache-Kohärenzprotokoll erforderlich ist.

1

vielleicht kann Ihnen dieser Artikel helfen Link hier

Durchschreiben: Das Schreiben erfolgt synchron sowohl zum Cache als auch zum Hintergrundspeicher.

Write-Back (oder Write-Behind): Das Schreiben erfolgt nur in den Cache. Ein geänderter Cache-Block wird unmittelbar vor dem Ersetzen in den Speicher zurückgeschrieben.

Durchschreiben: Wenn Daten aktualisiert werden, werden sie sowohl in den Cache als auch in den Back-End-Speicher geschrieben. Dieser Modus ist einfach zu bedienen, aber langsam beim Schreiben von Daten, da Daten sowohl in den Cache als auch in den Speicher geschrieben werden müssen.

Rückschreiben: Wenn Daten aktualisiert werden, werden sie nur in den Cache geschrieben. Die geänderten Daten werden nur dann in den Back-End-Speicher geschrieben, wenn Daten aus dem Cache entfernt werden. Dieser Modus hat eine hohe Datenschreibgeschwindigkeit, aber Daten gehen verloren, wenn ein Stromausfall auftritt, bevor die aktualisierten Daten in den Speicher geschrieben werden.

0
Shengmin Zhao