Eine allgemeine Einführung in die Cache-Kohärenz
Zusammenfassung: Das Konzept der Cache-Kohärenz mag für Sie relativ neu sein, aber es ist ein relativ wichtiges Konzept auf dem Gebiet der Computer. Auf dieser Seite erhalten Sie heute eine allgemeine Einführung in die Cache-Kohärenz.
Inhaltsverzeichnis
Überblick
In der Computerarchitektur ist Cache-Kohärenz die Konsistenz von gemeinsam genutzten Ressourcendaten, die schließlich in mehreren lokalen Caches gespeichert werden. Bei inkohärenten Daten können Probleme auftreten, wenn Clients Caches gemeinsamer Speicherressourcen verwalten, insbesondere bei CPUs in Mehrprozessorsystemen.
Jeder Prozessor hat einen separaten Cache-Speicher in einem Mehrprozessorsystem mit gemeinsam genutztem Speicher. Es ist wahrscheinlich, dass viele Kopien der gemeinsam genutzten Daten vorhanden sind: eine Kopie im Primärspeicher und eine im lokalen Cache jedes Prozessors, der sie anfordert.
Wenn sich eine der Kopien der Daten ändert, müssen die anderen Kopien die Änderung widerspiegeln. Cache-Kohärenz ist eine Disziplin, und sie stellt sicher, dass sich Änderungen der Werte der gemeinsam genutzten Operanden (Daten) unverzüglich im gesamten System ausbreiten.
Der folgende Teil listet die Anforderungen für die Cache-Kohärenz auf.
- Schreiben Sie Propagation: Datenänderungen in einem Cache müssen an andere Kopien im entsprechenden Cache weitergegeben werden.
- Transaktionsserialisierung: Alle Prozessoren müssen Lese-/Schreibvorgänge an einem einzelnen Speicherort in derselben Reihenfolge anzeigen.
Theoretisch kann Kohärenz mit Lade-/Speicher-Granularität implementiert werden. In der Praxis wird es jedoch normalerweise mit der Cache-Block-Granularität ausgeführt.
Definition
Kohärenz definiert das Verhalten beim Lesen und Schreiben an einen einzelnen Adressort. Ein Datentyp, der gleichzeitig in den verschiedenen Cache-Speichern erscheint, wird Cache-Kohärenz genannt. In einigen Systemen wird er auch als globaler Speicher bezeichnet.
In einem Multiprozessorsystem hat mehr als ein Prozessor eine Kopie des Speicherplatzes X zwischengespeichert. Um Cache-Kohärenz zu erreichen, ist es notwendig, die folgenden Bedingungen zu erfüllen.
- Wenn der Prozessor P die Stelle X nach dem Schreiben durch denselben Prozessor P auf X liest und das Schreiben auf X durch einen anderen Prozessor nicht zwischen dem Schreib- und dem Lesebefehl von P erscheint, muss X immer einen von P geschriebenen Wert zurückgeben.
- Wenn der Prozessor P1 die Stelle X liest, schreibt ein anderer Prozessor von P2 nach X, und jeder andere Prozessor schreibt nach X zwischen zwei Zugriffen, und die Lese- und Schreibvorgänge sind ausreichend getrennt. X muss immer einen von P2 geschriebenen Wert zurückgeben. Diese Bedingung definiert das Konzept einer kohärenten Speicheransicht. Die Weitergabe von Schreibvorgängen an gemeinsam genutzte Speicherorte stellt sicher, dass alle Caches eine kohärente Ansicht des Speichers haben. Wenn der Prozessor P1 den alten Wert von X liest, können wir sagen, dass der Speicher auch nach dem Schreiben von P2 inkohärent ist.
Die obigen Bedingungen erfüllen die Bedingungen für die Schreibausbreitung, die für die Cache-Kohärenz erforderlich sind. Sie sind jedoch nicht ausreichend, da sie die Kriterien für die Transaktionsserialisierung nicht erfüllen.
Kohärenzmechanismen
Es gibt zwei gängigste Mechanismen zur Gewährleistung der Kohärenz:schnüffeln und verzeichnisbasiert, jedes mit seinen Vor- und Nachteilen. Wenn genügend Bandbreite verfügbar ist, sind Snooping-basierte Protokolle tendenziell schneller, da alle Transaktionen Anfragen/Antworten sind, die alle Prozessoren sehen.
Der Nachteil ist, dass Snooping keine Skalierbarkeit hat. Jede Anforderung muss an alle Knoten im System rundgesendet werden, was bedeutet, dass mit zunehmender Größe des Systems die Busgröße und die von ihm bereitgestellte Bandbreite zunehmen müssen.
Auf der anderen Seite neigen Verzeichnisse zu einer längeren Latenz mit drei Hop-Anfragen/Weiterleitungen/Antworten. Verzeichnisse verwenden jedoch viel weniger Bandbreite, da Nachrichten Punkt-zu-Punkt-Nachrichten sind und nicht übertragen werden. Als Ergebnis übernehmen viele große Systeme diese Art von Cache-Kohärenz.
Kohärenzprotokolle
Das Konsistenzprotokoll wendet Cache-Konsistenz in Mehrprozessorsystemen an. Das Ziel besteht darin, sicherzustellen, dass zwei Clients keine unterschiedlichen Werte in denselben gemeinsam genutzten Daten sehen dürfen.
Das Protokoll muss die grundlegenden Anforderungen an Kohärenz erfüllen, zugeschnitten auf Zielsysteme oder Anwendungen.
Protokolle können auch als snoopy oder verzeichnisbasiert kategorisiert werden. Typischerweise verwendeten frühe Systeme verzeichnisbasierte Protokolle, bei denen Verzeichnisse gemeinsam genutzte Daten und gemeinsam genutzte Daten nachverfolgen. Transaktionsanforderungen werden in einem Snoopy-Protokoll an alle Prozessoren gesendet. Alle Prozessoren überwachen Anfragen und reagieren entsprechend.
Vorheriger Artikel
[2022] Best Watermark Software On Windows Zusammenfassung: Das Konzept der Cache-Kohärenz mag für Sie relativ neu sein, aber es ist ein relativ wichtiges Konzept auf dem Gebiet der Computer. Also heute, das...Nächster Artikel
Beste Online-OCR-Software für Windows/iOS/Android Zusammenfassung: Das Konzept der Cache-Kohärenz mag für Sie relativ neu sein, aber es ist ein relativ wichtiges Konzept auf dem Gebiet der Computer. Also heute, das...Über Bitwar-Datenwiederherstellung
3 Schritte, um mehr als 500 Arten von gelöschten, formatierten oder verlorenen Dokumenten, Fotos, Videos, Audios und Archivdateien aus verschiedenen Datenverlustszenarien zurückzubekommen.
Erfahren Sie mehr