2014-11-23 16 views
40

Mein Verständnis ist, dass der Hauptunterschied zwischen den beiden Methoden ist, dass in "Write-Through" -Methode Daten über den Cache sofort in den Hauptspeicher geschrieben werden, während in "Write-Back" -Daten ist in einer "späteren Zeit" geschrieben.Write-back vs Write-Through

Wir müssen noch auf die Erinnerung in "letzter Zeit" warten Was ist also der Vorteil von "Write-Through"?

+0

@EricWang Ich denke du meinst 'write back' hat bessere Leistung? – wlnirvana

+0

@wlnirvana Ja, Sie haben Recht, es ist mein Schreibfehler. Ich würde es entfernen und hier einen neuen Kommentar einfügen, um zukünftige Irreführungen zu vermeiden. –

+2

Einfach ausgedrückt, 'write back' hat eine bessere Leistung, da das Schreiben in den Hauptspeicher viel langsamer ist als das Schreiben in den CPU-Cache und die Daten möglicherweise kurz sind (bedeutet, dass sie sich früher ändern und die alte Version nicht mehr in den Speicher legen muss)). Es ist komplex, aber ausgeklügelter, die meisten Speicher in moderner CPU verwenden diese Richtlinie. –

Antwort

44

Der Vorteil von Write-Through zum Hauptspeicher ist, dass es das Design des Computersystems vereinfacht. Beim Durchschreiben hat der Hauptspeicher immer eine aktuelle Kopie der Zeile. Wenn ein Lesevorgang abgeschlossen ist, kann der Hauptspeicher immer mit den angeforderten Daten antworten.

Wenn write-back 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 den Hauptspeicher daran hindern, auf die Leseanforderung zu antworten, da der Hauptspeicher möglicherweise eine veraltete Kopie der Daten aufweist. Dies ist komplizierter als das Durchschreiben.

Auch Write-Through kann das Cache-Kohärenz-Protokoll vereinfachen, da es den Modify--Status nicht benötigt. Der Modify Zustand zeichnet auf, dass der Cache die Cache-Zeile zurückschreiben muss, bevor es die Zeile ungültig macht oder entfernt. Beim Durchschreiben kann eine Cachezeile immer ohne Zurückschreiben ungültig gemacht werden, da der Speicher bereits eine aktuelle Kopie der Zeile besitzt.

Noch eine Sache - bei einer Write-Back-Architektur-Software, die in speicherabgebildete I/O-Register schreiben muss zusätzliche Schritte ergreifen, um sicherzustellen, dass Schreibvorgänge sofort aus dem Cache gesendet werden. Andernfalls sind Schreibvorgänge außerhalb des Kerns nicht sichtbar, bis die Zeile von einem anderen Prozessor gelesen oder die Zeile entfernt wird.

+4

Für Speicher-zugeordnete E/A werden diese Adressen normalerweise als nicht zwischengespeichert zugeordnet. Durchschreiben kann auch verwendet werden, um die Zuverlässigkeit zu erhöhen (z. B. wenn L1 nur Paritätsschutz hat und L2 ECC hat). Write-Through ist auch für kleinere Cachespeicher beliebter, die No-Write-Allocate verwenden (dh ein Schreib-Fehlschlag weist den Block dem Cache nicht zu und reduziert möglicherweise die Nachfrage nach L1-Kapazität und L2-Lese-/L1-Füllbandbreite) Voraussetzung für das Durchschreiben ist bereits vorhanden. –

+1

ist es möglich zu überprüfen, ob meine Cache-Methode in meinem Kern sind zurückschreiben oder schreiben durch? – Shaowu

+2

Es mag irreführend sein zu sagen, dass das Zurückschreiben komplexer ist, weil der Prozessor den Hauptspeicher davon abhalten muss, auf die Leseanforderung zu antworten. Es ist auch so, dass der Cache verfolgt, welche Daten Daten sind (nicht mit Hauptspeicher ausgerichtet) und was nicht mit "Dirty Bit (s)" ist, so ist es möglich, den Hauptspeicher überhaupt nicht zu überprüfen. – steviejay