Est-il vrai que la cohérence séquentielle est une propriété plus forte que la cohérence du cache?
Selon
Sorin, Daniel J; Hill, Mark D; Wood, David A: Une introduction à la cohérence de la mémoire et à la cohérence du cache , Morgan et Claypool, 2011
la cohérence séquentielle peut être décrite comme (non formellement):
Le modèle de mémoire de cohérence séquentielle spécifie que le système doit apparaître pour exécuter toutes les charges des threads et les stocker dans tous les emplacements de mémoire dans un ordre total qui respecte l'ordre des programmes de chaque thread. Chaque chargement obtient la valeur du magasin le plus récent de cette commande totale.
En d'autres termes, le système est séquentiellement cohérent, si on donne des événements de mémoire (charges et magasins) de chaque thread, nous pouvons ordonner tous ces événements de telle sorte que: 1) pour chaque thread, l'ordre de ses événements soit préservé, et 2) l'ordre global soit série (toute charge renvoie la dernière valeur stockée).
Maintenant, ils continuent et décrivent la cohérence:
Une définition de la cohérence qui est analogue à la définition de la cohérence séquentielle est qu'un système cohérent doit apparaître pour exécuter toutes les charges des threads et les stocker dans un seul emplacement de mémoire dans un ordre total qui respecte l'ordre des programmes de chaque thread.
En d'autres termes, le système est cohérent, si on donne des événements de mémoire de chaque thread pour chaque emplacement, nous pouvons ordonner des événements pour cet emplacement, tels que: 1) pour chaque thread, l'ordre de ses événements vers cet emplacement est préservé, et 2) pour chaque l'emplacement de la commande est en série.
Enfin, ils soulignent la différence:
Cette définition met en évidence une distinction importante entre cohérence et cohérence : la cohérence est spécifiée sur une base d'emplacement par mémoire, tandis que la cohérence est spécifiée par rapport à tous les emplacements de mémoire.
Il semble donc que la différence est que pour les systèmes cohérents, nous avons besoin d'un ordre total sur tous les événements pour chaque emplacement (donc l'ordre entre les événements pour un emplacement particulier), tandis que pour les systèmes cohérents, l'ordre total devrait être défini sur tous les événements (et donc le la commande est également entre les événements pour différents endroits)?
Est-ce à dire que la cohérence est moins stricte que la cohérence? (ce qui semble amusant!) Y a-t-il des traces cohérentes mais pas cohérentes?