Write-Through vs. Write-Back Cache: Unterschiede im Überblick

Eine Schreibstrategie legt fest, was passiert, wenn die CPU auf Daten schreibt, die im Cache liegen. Ein Write-Through-Cache aktualisiert Cache und Hauptspeicher gleichzeitig, sodass der Speicher immer aktuell ist, aber jeder Schreibzugriff Speicherverkehr verursacht. Ein Write-Back-Cache aktualisiert nur den Cache, markiert die Zeile als dirty und schreibt sie später in den Speicher, wenn die Zeile verdrängt wird. Write-Back ist schneller und braucht weniger Bandbreite, ist aber aufwendiger konsistent zu halten.

AspektWrite-ThroughWrite-Back
SchreibstrategieJeder Schreibzugriff geht sowohl in den Cache als auch in die nächste SpeicherebeneEin Schreibzugriff aktualisiert nur den Cache und setzt das Dirty-Bit; der Speicher wird bei der Verdrängung aktualisiert
SpeicherverkehrHoch: Jeder Schreibzugriff wird weitergeleitetGeringer: Wiederholte Schreibzugriffe auf eine Zeile werden zu einem Write-Back zusammengefasst
SchreibgeschwindigkeitOhne Hilfsmittel langsamer; ein Schreibpuffer verbirgt einen großen Teil der VerzögerungSchneller: Schreibzugriffe werden mit Cache-Geschwindigkeit abgeschlossen
Konsistenz mit dem SpeicherDer Speicher ist immer aktuell, was die gemeinsame Nutzung mit DMA und anderen Kernen vereinfachtDer Speicher kann veraltet sein, bis die Zeile zurückgeschrieben wird; die Kohärenz erfordert daher mehr Sorgfalt
KomplexitätEinfachAufwendiger: Dirty-Bits, Write-Back bei der Verdrängung, Kohärenzprotokolle
Kosten der VerdrängungGering: Es muss nichts geschrieben werdenDas Verdrängen einer Dirty-Zeile kostet einen zusätzlichen Schreibzugriff auf den Speicher
Übliche Write-Miss-StrategieNo-Write-AllocateWrite-Allocate
Typische VerwendungEinige L1-Caches sowie einfache oder auf Zuverlässigkeit ausgelegte SystemeDie meisten modernen CPU-Caches, besonders L2 und L3

Die Zahlenangaben sind typische Größenordnungen und variieren je nach Prozessgeneration und Produkt.

Wann welches einsetzen

Write-Through
Wenn Einfachheit und ein stets aktueller Speicher wichtiger sind als Schreibbandbreite.
Write-Back
Wenn Leistung zählt, besonders bei Code, der viele Male in dieselben Zeilen schreibt.

FAQ

Was ist ein Dirty-Bit?

Ein Bit in jeder Cache-Zeile eines Write-Back-Caches, das die Zeile als verändert markiert. Eine Dirty-Zeile muss bei der Verdrängung in den Speicher zurückgeschrieben werden.

Warum ist Write-Back schneller?

Wiederholte Schreibzugriffe auf dieselbe Zeile bleiben im Cache und werden zu einem einzigen Schreibzugriff auf den Speicher zusammengefasst, was den Speicherverkehr verringert.

Was macht ein Schreibpuffer?

In einem Write-Through-Cache reiht er die Schreibzugriffe auf den Speicher ein, sodass der Prozessor nicht auf deren Abschluss warten muss.

Was ist bei mehreren Kernen einfacher?

Write-Through, weil der Speicher immer aktuell ist. Write-Back erfordert mehr Sorgfalt, etwa Kohärenzprotokolle, weil der Speicher veraltet sein kann.

Wichtige Begriffe erklärt

Write-Through (Durchschreiben)
Schreibstrategie, bei der gleichzeitig mit dem Cache auch in die darunterliegende Ebene (etwa den Hauptspeicher) geschrieben wird. Die untere Ebene bleibt aktuell, doch der Schreibverkehr ist hoch, weshalb ein Schreibpuffer verwendet wird.
Cache-Speicher
Schneller, kleiner Speicher in der Nähe der CPU. Er hält häufig genutzte Daten vor, um den Geschwindigkeitsunterschied zum Hauptspeicher zu überbrücken. Meist aus SRAM aufgebaut.
Cache-Kohärenz
Mechanismus in Mehrkern-CPUs, der Kopien derselben Adresse in den Caches verschiedener Kerne konsistent hält, z. B. indem andere Kopien bei einem Schreibzugriff ungültig gemacht werden.
Cache-Zeile (Cache Line)
Die Einheit, in der Daten zwischen einem Cache und der darunterliegenden Ebene bewegt werden, auch Cache-Block genannt. Viele CPUs verwenden 64 Byte; die niederwertigen Adressbits geben die Position (Offset) in der Zeile an.

Weitere Vergleiche