Sobes.tech
Middle+

Qu'est-ce que la cohérence séquentielle?

sobes.tech IA

Réponse de l'IA

La cohérence séquentielle (Sequential Consistency) est un modèle de cohérence dans les systèmes distribués ou les programmes multithread, garantissant que le résultat de l'exécution de tout programme parallèle sera comme si toutes les opérations de tous les processeurs (fils d'exécution) avaient été effectuées dans un ordre séquentiel, et que les opérations de chaque processeur (fil d'exécution) dans cet ordre séquentiel suivaient l'ordre dans lequel elles ont été spécifiées dans le programme.

En d'autres termes :

  1. Maintenir l'ordre des opérations à l'intérieur d'un fil : Les opérations initiées par un fil sont visibles par d'autres fils dans le même ordre dans lequel elles ont été effectuées par ce fil.
  2. Un ordre global unique : Il existe un ordre linéaire, global, unique, dans l'exécution de toutes les opérations de tous les fils, que tous respectent.

Ce modèle est l'un des plus forts et intuitifs, mais sa mise en œuvre peut être coûteuse en termes de performance en raison de la nécessité de synchronisation et d'empêcher la réorganisation des opérations par le compilateur et le matériel.

Exemple :

// Fil 1
x = 1;
y = 2;

// Fil 2
// Opérations de lecture de x et y

Avec cohérence séquentielle, si le Fil 1 écrit d'abord 1 dans x, puis 2 dans y, alors le Fil 2 ne verra jamais y égal à 2 avant de voir x égal à 1. Les exécutions séquentielles possibles :

  • x = 1; y = 2; read(x); read(y); (read(x) = 1, read(y) = 2)
  • x = 1; read(x); y = 2; read(y); (read(x) = 1, read(y) = 2)
  • read(x); x = 1; read(y); y = 2; (read(x) peut être 0, read(y) peut être 0, puis read(x) = 1, read(y) = 2)

Il n'est pas possible que le Fil 2 voie y = 2, mais que x soit encore 0, si le Fil 1 écrit d'abord x = 1, puis y = 2.