Articulo de referencia

Consistencia secuencial

La consistencia secuencial es un modelo de consistencia utilizado en el ámbito de la computación concurrente (por ejemplo, en memoria compartida distribuida , transacciones dist...

La consistencia secuencial es un modelo de consistencia utilizado en el ámbito de la computación concurrente (por ejemplo, en memoria compartida distribuida , transacciones distribuidas , etc.).

Es la propiedad de que "... el resultado de cualquier ejecución es el mismo que si las operaciones de todos los procesadores se ejecutaran en algún orden secuencial, y las operaciones de cada procesador individual aparecen en esta secuencia en el orden especificado por su programa." [ 1 ]

Es decir, el orden de ejecución de un programa en el mismo procesador (o hilo) es el mismo que el orden del programa, mientras que el orden de ejecución de un programa en diferentes procesadores (o hilos) no está definido. En un ejemplo como este:

El orden de ejecución entre A1, B1 y C1 se mantiene, es decir, A1 se ejecuta antes que B1, y B1 antes que C1. Lo mismo ocurre con A2 y B2. Sin embargo, dado que el orden de ejecución entre los procesadores no está definido, B2 podría ejecutarse antes o después de C1 (B2 podría ejecutarse físicamente antes que C1, pero el efecto de B2 podría observarse después del de C1, lo que equivale a decir que "B2 se ejecuta después de C1").

Conceptualmente, existe una única memoria global y un "interruptor" que conecta un procesador arbitrario a la memoria en cualquier paso de tiempo. Cada procesador realiza operaciones de memoria en el orden del programa y el interruptor proporciona la serialización global entre todas las operaciones de memoria [ 2 ].

La consistencia secuencial es menos estricta que la consistencia estricta . Ambas requieren que una lectura de una ubicación devuelva el valor de la última escritura en esa ubicación, y que las operaciones se vean en el orden en que se realizaron. La consistencia estricta, además, requiere que los diferentes hilos de ejecución se ejecuten de forma sincronizada, con una sincronización y un comportamiento deterministas.

La mayoría de las arquitecturas de conjuntos de instrucciones , incluidas x86 , x86-64 , ARM y RISC-V , no ofrecen un modelo de memoria secuencialmente consistente a los programas. Algunas optimizaciones de hardware importantes, como el almacenamiento en caché de escritura diferida , entran en conflicto con la consistencia secuencial. Esto significa que los programas multihilo en sistemas multiprocesador con estas arquitecturas pueden presentar un comportamiento inconsistente con la intercalación de las instrucciones en los hilos, generalmente mediante la lectura de valores obsoletos.

Véase también

Referencias

  1. Leslie Lamport , [acceso abierto a través del sitio web de Lamport] "Cómo hacer una computadora multiprocesador que ejecute correctamente programas multiproceso", IEEE Trans. Comput. C-28,9 (septiembre de 1979), 690-691.
  2. ^ Sarita V. Adve , Kourosh Gharachorloo , "Modelos de coherencia de memoria compartida: un tutorial"
Obtenido de " https://en.wikipedia.org/w/index.php?title=Sequential_consistency&oldid=1298245947 "