Was ist Cache-Kohärenz?
Cache-Kohärenz ist das natürliche Problem, das auftritt, wenn mehrere Agenten auf den Datensatz eines Systems zugreifen und diesen ändern. Der Hauptbereich der Computerarchitektur, in dem dies zu einem Problem wird, sind Multiprozessor-Computer. Jeder Prozessor in einem Multiprozessor-Computer verfügt über einen eigenen Cache, der Informationen aus dem Arbeitsspeicher (RAM) lädt und speichert. Wenn zwei Prozessoren auf denselben Speicherbereich zugreifen, geht die Cache-Kohärenz verloren, wenn bestimmte Vorsichtsmaßnahmen nicht getroffen werden.
Ohne Cache-Kohärenz wäre ein Multiprozessorsystem nicht funktionsfähig. Es wurden mehrere Methoden entwickelt, um dieses Problem zu beheben und potenzielle Probleme zu vermeiden. Verzeichnisbasierte Kohärenz, Snooping und Snarfing sind drei Methoden, mit denen der Verlust der Cache-Kohärenz verhindert wird.
Die verzeichnisbasierte Kohärenz fungiert als Filter, um die Kohärenz sicherzustellen. Die Daten werden in einem Teil des Speichers abgelegt, auf den alle Prozessoren zugreifen können. Wenn die in diesem Speicherbereich gespeicherten Informationen geändert werden, aktualisiert das System die Caches entweder oder macht sie ungültig.
Beim Snooping muss der Prozessor alle Zugriffe auf die zwischengespeicherten Speicherorte überwachen. Dadurch kann der Prozessor erkennen, wann eine Schreiboperation stattgefunden hat. Wenn bekannt ist, wann eine Schreiboperation stattfindet, kann der Prozessor seinen Cache aktualisieren.
Snarfing ist hinreichend ähnlich zu snooping. Beim Snarfing werden nicht nur die Zugriffe auf zwischengespeicherte Speicherorte überwacht, sondern auch die tatsächlichen Informationen, die im Speicher gespeichert sind. Bei einem Speicherschreibvorgang kann der Cache mit den neuen Informationen aktualisiert werden.
Verzeichnisbasierte Kohärenzsysteme weisen eine relativ hohe Latenz auf, was zu einer langsameren Verarbeitung führt. Geringere Bandbreitenanforderungen ermöglichen es, dass verzeichnisbasierte Kohärenzsysteme in umfangreichen Anwendungen der Cache-Kohärenz praktisch sind. Je mehr Prozessoren ein System verwendet, desto mehr Vorteile bietet die Verwendung eines verzeichnisbasierten Kohärenzsystems.
Schnüffeln ist eine viel schnellere Methode. Diese Methode erfordert mehr Bandbreite als der verzeichnisbasierte Ansatz. Diese Methode kann in Systemen mit relativ wenigen Prozessoren effektiv eingesetzt werden.
Snarfing wird normalerweise nicht als Methode zur Aufrechterhaltung der Cache-Kohärenz verwendet. Dies liegt in erster Linie daran, dass beim Snarfing im Vergleich zu Snooping- und verzeichnisbasierten Methoden mehr Ressourcen benötigt werden. Damit ein Snarfing-System funktioniert, muss es sowohl die Speicheradressen als auch die in diesen Speicherbereichen gespeicherten Daten verfolgen. Die Menge an Bandbreite und Verarbeitung, die von diesem Verfahren beansprucht wird, macht es für die meisten Anwendungen zur Aufrechterhaltung der Cache-Kohärenz unerwünscht.