Was ist Cache-Kohärenz und was bedeutet sie in der Computerarchitektur? Cache-Kohärenz ist die Einheit gemeinsam genutzter Ressourcendaten. Lesen Sie jetzt diesen Artikel von MiniTool, um alle Informationen zu erhalten.

Was ist Cache-Kohärenz?

Zunächst einmal: Was ist Cache-Kohärenz? In der Computerarchitektur ist Cache-Konsistenz die Einheit gemeinsam genutzter Ressourcendaten, und die Ressource wird letztlich in mehreren lokalen Caches gespeichert. Wenn der Client im System Caches gemeinsamer Speicherressourcen verwaltet, kann Dateninkonsistenz zu Problemen führen, insbesondere für CPUs in einem Multiprozessorsystem.

Tipp:
Wenn Sie eine hohe CPU-Auslastung beheben möchten, die aus verschiedenen Gründen verursacht wurde, empfehlen wir Ihnen, die Webseite MiniTool aufzurufen.

In einem Multiprozessorsystem mit gemeinsam genutztem Speicher verfügt jeder Prozessor über einen separaten Cache-Speicher, und es können viele Kopien gemeinsam genutzter Daten vorhanden sein: eine im Hauptspeicher und eine im lokalen Cache jedes Prozessors, der sie angefordert hat. Wenn eine Kopie der Daten geändert wird, müssen die anderen Kopien die Änderung widerspiegeln. Die Cache-Kohärenz soll sicherstellen, dass Änderungen an gemeinsam genutzten Operanden (Daten) rechtzeitig im gesamten System weitergegeben werden.

Folgende Anforderungen gelten für die Cache-Kohärenz:

  • Schreibweitergabe: Alle Datenänderungen im Cache müssen an andere Kopien (die Kopie der Cache-Zeile) in den Peer-Caches weitergegeben werden.
  • Transaktionsserialisierung: Sämtliche Prozessoren müssen die Lese-/Schreibvorgänge an einem einzelnen Speicherort in derselben Reihenfolge sehen.

Theoretisch kann die Cache-Kohärenz auf der Ebene von Lade-/Speichergranularität erzwungen werden. In der Praxis wird sie jedoch normalerweise auf der Ebene von Cache-Blöcken ausgeführt.

Definition

Die Kohärenz definiert das Verhalten von Lese- und Schreibvorgängen an einer einzelnen Adressposition. Eine Art von Daten, die gleichzeitig in verschiedenen Caches angezeigt werden, wird als Cache-Kohärenz bezeichnet, die in einigen Systemen als globaler Speicher bezeichnet wird.

In einem Multiprozessorsystem ist zu berücksichtigen, dass mehr als ein Prozessor eine Kopie des Speicherplatzes X zwischengespeichert hat. Um eine Cache-Kohärenz zu erreichen, müssen folgende Bedingungen erfüllt sein:

  1. Wenn der Prozessor P den Speicherplatz X nach dem Schreiben von X durch denselben Prozessor P liest, wenn das Schreiben von X durch einen anderen Prozessor nicht zwischen dem Schreib- und dem Lesevorgang von P erfolgt, muss X immer den von P geschriebenen Wert zurückgeben.
  2. Nachdem Prozessor P1 Speicherort X gelesen hat und ein anderer Prozessor P2 X schreibt, gibt es zwischen den beiden Zugriffen keine weiteren Schreibvorgänge für Prozessor X, und Lese- und Schreibvorgang müssen ausreichend voneinander getrennt sein. Daher muss X immer den von P2 geschriebenen Wert zurückgeben. Diese Bedingung definiert das Konzept einer kohärenten Ansicht des Speichers. Durch die Weitergabe von Schreibvorgängen an gemeinsam genutzte Speicherstellen wird sichergestellt, dass alle Caches eine kohärente Ansicht des Speichers haben. Wenn Prozessor P1 den alten Wert von X liest, auch nachdem P2 geschrieben wurde, kann man sagen, dass der Speicher inkohärent ist.

Die oben genannten Bedingungen erfüllen die für die Cache-Kohärenz erforderlichen Kriterien für die Weitergabe von Schreibvorgängen. Sie sind jedoch unzureichend, da sie die Bedingungen für die Transaktionsserialisierung nicht erfüllen.

In Verbindung stehender Artikel: Einführung in den Festplatten-Cache: Definition und Bedeutung.

Mechanismen für die Cache-Kohärenz

Die beiden gängigsten Mechanismen zur Sicherstellung der Konsistenz sind Snooping und Verzeichnis-basiert. Jeder Mechanismus hat seine eigenen Vor- und Nachteile. Wenn genügend Bandbreite vorhanden ist, sind Snooping-basierte Protokolle in der Regel schneller, da alle Transaktionen Anfragen/Antworten sind, die von allen Prozessoren gesehen werden.

Der Nachteil ist, dass Snooping nicht erweitert werden kann. Jede Anfrage muss an alle Knoten im System gesendet werden. Das bedeutet, dass bei einem größeren System auch der Bus (logisch oder physisch) und die von ihm bereitgestellte Bandbreite größer werden müssen.

Andererseits haben Verzeichnisse tendenziell längere Latenzen (3-Hop-Anfrage / Weiterleitung / Antwort), verbrauchen aber viel weniger Bandbreite, da die Nachrichten von Punkt zu Punkt und nicht per Broadcast gesendet werden. Daher verwenden viele größere Systeme (>64 Prozessoren) diese Art der Cache-Kohärenz.

Kohärenzprotokolle

Das Kohärenzprotokoll wendet die Cache-Kohärenz in einem Multiprozessorsystem an. Das Ziel besteht darin, dass zwei Clients nicht unterschiedliche Werte derselben gemeinsam genutzten Daten sehen. Das Protokoll muss die grundlegenden Anforderungen der Kohärenz erfüllen. Es kann auf das Zielsystem oder die Zielanwendung zugeschnitten werden.

Protokolle können auch als Snoopy- oder Verzeichnisprotokolle klassifiziert werden. Normalerweise wurden in frühen Systemen verzeichnisbasierte Protokolle verwendet, bei denen das Verzeichnis die gemeinsam genutzten Daten und die Nutzer verfolgte. Beim Snoopy-Protokoll werden Transaktionsanfragen (zum Lesen, Schreiben oder Aktualisieren) an alle Prozessoren gesendet. Alle Prozessoren durchsuchen die Anfragen und reagieren entsprechend.

Verwandte Artikel: Eine Kurzanleitung zum Löschen des Caches unter Windows 10/8/7.

  • linkedin