Cache-Konsistenz
# Cache-Konsistenz

Cache-Konsistenz ist der Zustand, in dem alle Kopien eines Speicherwortes in den Caches und im Hauptspeicher identisch sind. Beinhaltet ein Cache neu geschriebene Daten, die so noch nicht in den Hauptspeicher geschrieben wurden, so ist er vorübergehend inkonsistent. Dies wird bei Write-Back-Caches mit einem sogenannten dirty oder modified Bit markiert. Inkonsistenz kann aber auch durch Schreibzugriffe anderer Komponenten auf den gemeinsamen Hauptspeicher entstehen. Dabei kann es sich um weitere Caches wie bei Mehrprozessorsystemen mit Split-Cache oder andere schreibende Komponenten wie Peripheriegeräten mit DMA handeln.

## Unterscheidung Konsistenz und Kohärenz

Cache-Konsistenz (lateinisch con ‚zusammen‘ und sistere ‚halten‘) beschreibt einen Zustand. Cache-Kohärenz (lateinisch cohaerere ‚zusammenhängen‘) beschreibt dagegen eine Eigenschaft mehrerer an einem gemeinsamen Hauptspeicher arbeitender Caches. Das gesamte System aus Caches und Hauptspeicher wird dabei als cache-kohärent bezeichnet, wenn bei jedem Lesezugriff immer der zuletzt geschriebene Wert geliefert wird. Dabei darf es keinen Unterschied machen in welchen Cache zuletzt geschrieben wurde. Ein cache-kohärentes System kann vorübergehend inkonsistent sein.

Diese vorübergehende Inkonsistenz ist sogar notwendig, da ständige Konsistenz bedeuten würde, dass das gesamte System sich beim Schreiben nach der langsamsten Komponente (meist dem Hauptspeicher) richten muss (Write-Through). Um Kohärenz auch ohne ständige Konsistenz herstellen zu können, werden Cache-Kohärenz-Protokolle wie etwa MESI eingesetzt. Salopp ausgedrückt verwaltet ein Cache-Kohärenz-Protokoll genau diese Inkonsistenz innerhalb aller auf den Hauptspeicher zugreifenden Komponenten.

Cache-Konsistenz beschreibt also den einheitlichen Zustand mehrerer beteiligter Speicher, während Cache-Kohärenz die einheitliche Sicht der Daten für die verarbeitenden Komponenten (meist CPUs) bezeichnet.

