Stimmt es, dass die sequentielle Konsistenz eine stärkere Eigenschaft als die Cache-Kohärenz ist?
Gemäß
Sorin, Daniel J; Hill, Mark D; Wood, David A: Eine Einführung in Speicherkonsistenz und Cache-Kohärenz , Morgan & Claypool, 2011
sequentielle Konsistenz kann beschrieben werden als (nicht formal):
Das sequentielle Konsistenzspeichermodell gibt an, dass das System so angezeigt werden muss, dass alle Ladevorgänge und Speicherorte der Threads in einer Gesamtreihenfolge ausgeführt werden, die die Programmreihenfolge jedes Threads berücksichtigt. Jede Ladung erhält den Wert des letzten Geschäfts in dieser Gesamtreihenfolge.
Mit anderen Worten, das System ist sequentiell konsistent, wenn gegebene Speicherereignisse (Laden und Speichern) jedes Threads so angeordnet werden können, dass: 1) für jeden Thread die Reihenfolge seiner Ereignisse beibehalten wird und 2) die globale Reihenfolge erhalten bleibt seriell (jede Last gibt den zuletzt gespeicherten Wert zurück).
Jetzt fahren sie fort und beschreiben die Kohärenz:
Eine Definition der Kohärenz , die analog zur Definition der sequentiellen Konsistenz ist, besteht darin, dass ein kohärentes System angezeigt werden muss, um alle Ladevorgänge und Speicher in einem einzelnen Speicherort in einer Gesamtreihenfolge auszuführen, die die Programmreihenfolge jedes Threads berücksichtigt.
Mit anderen Worten ist das System kohärent, wenn gegebene Speicherereignisse jedes Threads für jeden Ort Ereignisse für diesen Ort ordnen können, so dass: 1) für jeden Thread die Reihenfolge seiner Ereignisse zu diesem Ort erhalten bleibt, und 2) für jeden Ort der Bestellung ist seriell.
Schließlich weisen sie auf den Unterschied hin:
Diese Definition hebt einen wichtigen Unterschied zwischen Kohärenz und Konsistenz hervor : Die Kohärenz wird für jeden Speicherort angegeben, während die Konsistenz für alle Speicherorte angegeben wird.
Es scheint also der Unterschied zu sein, dass für kohärente Systeme eine Gesamtreihenfolge für alle Ereignisse für jeden Standort erforderlich ist (also die Reihenfolge zwischen Ereignissen für einen bestimmten Standort), während für konsistente Systeme die Gesamtreihenfolge für alle Ereignisse definiert werden sollte (und damit auch für die Bestellung ist auch zwischen Veranstaltungen für verschiedene Standorte)?
Bedeutet das, dass Kohärenz weniger streng ist als Konsistenz? (was amüsant erscheint!) Gibt es Spuren, die kohärent, aber nicht konsistent sind?