Heim

Cache-Kohärenz

Cache-Kohärenz ist ein Verfahren, das dafür sorgt, dass Caches bei Zugriffen mehrerer CPUs auf den Hauptspeicher immer aktuelle Werte zurückliefern.

Dazu darf eine Inkonsistenz zwischen Hauptspeicher und lokalen Caches in Kauf genommen werden, solange die Zugriffe immer gültige Ergebnisse liefern. Diese Inkonsistenz wird z. B. durch ein Rückschreibeverfahren (Write-Back) erzeugt, das im Gegensatz zu einem Durchschreibeverfahren (Write-Through) beim Schreiben in den Cache-Speicher nicht sofort den Hauptspeicher mit aktualisiert. Vergleiche dazu Cache-Konsistenz.

In bus-basierten Systemen kann die Kohärenz durch Bus Snooping sichergestellt werden, d.h. alle Speicherzugriffe laufen über einen gemeinsamen Bus und können von den angeschlossenen Cache Controllern beobachtet werden. Durch die Verwendung von entsprechenden Protokolle kann die Konsistenz der Daten sichergestellt werden. Zu den bekanntesten Verfahren zählt das Write-Back-Invalidierungs-Protokoll (MSI-Protokoll) bzw. dessen Erweiterung das MESI-Protokoll. Eine Alternative zu diesen Protokollen stellen Write-Back-Update-Protokolle dar, allerdings führen diese zu einem erhöhten Busverkehr.

Auf Systemen ohne gemeinsamen Bus sind andere Vorgehensweisen notwendig. Um die Cache-Kohärenz zu erhalten, kann z.B. ein Directory Protokoll eingesetzt werden. Hierzu wird ein zentrales Verzeichnis eingerichtet, auf welches die jeweiligen Cache Controller Zugriff haben um den Zustand eines Speicherblocks zu erfahren.

Literatur