Articulo de referencia

Consistencia del procesador

La consistencia del procesador es uno de los modelos de consistencia utilizados en el ámbito de la computación concurrente (por ejemplo, en memoria compartida distribuida , tran...

La consistencia del procesador es uno de los modelos de consistencia utilizados en el ámbito de la computación concurrente (por ejemplo, en memoria compartida distribuida , transacciones distribuidas , etc.).

Un sistema presenta consistencia de procesador si el orden en que otros procesadores ven las escrituras de cualquier procesador individual es el mismo que el orden en que se emitieron. Debido a esto, la consistencia de procesador solo es aplicable a sistemas con múltiples procesadores. Es más débil que el modelo de consistencia causal porque no requiere que las escrituras de todos los procesadores se vean en el mismo orden, pero más fuerte que el modelo de consistencia PRAM porque requiere coherencia de caché . [ 1 ] Otra diferencia entre la consistencia causal y la consistencia de procesador es que la consistencia de procesador elimina los requisitos de que las cargas esperen a que las escrituras se completen y de atomicidad de escritura . [ 1 ] La consistencia de procesador también es más fuerte que la consistencia de caché porque requiere que todas las escrituras de un procesador se vean en orden, no solo las escrituras en la misma ubicación de memoria. [ 1 ]

Ejemplos de consistencia del procesador

En el Ejemplo 1 de la derecha, el sistema simple sigue la consistencia del procesador, ya que todas las escrituras realizadas por cada procesador son vistas por los demás procesadores en el orden en que ocurrieron, y las transacciones son coherentes.

El ejemplo 2 no es consistente con el procesador, ya que las escrituras de P1 y P3 son vistas fuera de orden por P2 y P4 respectivamente.

El ejemplo 3 es consistente en cuanto al procesador y no es consistente causalmente porque en P3: para que sea consistente causalmente debería serlo ya que W(x)2 en P1 precede causalmente a W(y)3 en P2.R(y)3,R(x)1R(y)3,R(x)2

El ejemplo 4 no es consistente con el procesador porque en P2: para que sea consistente con el procesador debería serlo, ya que W(x)2 es la última escritura en x que precede a W(y)3 en P1. Este ejemplo es consistente con la caché porque P2 ve las escrituras en ubicaciones de memoria individuales en el orden en que se emitieron en P1.R(y)3,R(x)1R(y)3,R(x)2

Consistencia del procesador frente a consistencia secuencial

La consistencia del procesador (PC) relaja el orden entre las escrituras más antiguas y las cargas más recientes que se impone en la consistencia secuencial (SC). [ 2 ] Esto permite que las cargas se emitan a la caché y potencialmente se completen antes que las escrituras más antiguas, lo que significa que las escrituras se pueden poner en cola en un búfer de escritura sin necesidad de implementar la especulación de carga (las cargas pueden continuar libremente). [ 3 ] En este sentido, PC funciona mejor que SC porque no se necesitan técnicas de recuperación para especulaciones fallidas, lo que significa menos vaciados de la tubería. [ 3 ] La optimización de precarga que emplean los sistemas SC también es aplicable a los sistemas PC. [ 3 ] La precarga es el acto de obtener datos por adelantado para las próximas cargas y escrituras antes de que realmente se necesiten, para reducir la latencia de carga/escritura. Dado que PC reduce la latencia de carga al permitir que las cargas se reordenen antes de las escrituras correspondientes, la necesidad de precarga se reduce un poco, ya que los datos precargados se usarán más para escrituras que para cargas. [ 3 ]

Intuición del programador

En cuanto a la fidelidad de un sistema PC a la intuición del programador, resulta que en sistemas correctamente sincronizados, los resultados de PC y SC son los mismos. [ 3 ] La intuición del programador es esencialmente cómo espera que se ejecuten las instrucciones, generalmente en lo que se denomina "orden del programa". El orden del programa en un sistema multiprocesador es la ejecución de instrucciones que produce el mismo resultado que una ejecución secuencial. El hecho de que tanto PC como SC sigan esta expectativa es una consecuencia directa de que las cargas y almacenamientos correspondientes en los sistemas PC aún se ordenan entre sí. [ 3 ] Por ejemplo, en la sincronización de bloqueo, la única operación cuyo comportamiento no está completamente definido por PC es el almacenamiento de adquisición de bloqueo, donde las cargas subsiguientes están en la sección crítica y su orden afecta el resultado. [ 3 ] Sin embargo, esta operación generalmente se implementa con una instrucción atómica o condicional de almacenamiento, de modo que si la operación falla, se repetirá más tarde y todas las cargas más recientes también se repetirán. [ 3 ] Todas las cargas que ocurren antes de esta tienda todavía están ordenadas con respecto a las cargas que ocurren en la sección crítica, y como tal, todas las cargas más antiguas tienen que completarse antes de que las cargas en la sección crítica puedan ejecutarse.

Consistencia del procesador frente a otros modelos de consistencia relajada

La consistencia del procesador, aunque más débil que la consistencia secuencial, sigue siendo en la mayoría de los casos un modelo de consistencia más robusto de lo necesario. Esto se debe a la cantidad de puntos de sincronización inherentes a los programas que se ejecutan en sistemas multiprocesador. [ 4 ] Esto significa que no pueden ocurrir condiciones de carrera (una condición de carrera es el acceso simultáneo múltiple a una ubicación de memoria donde al menos un acceso es una escritura). [ 3 ] Teniendo esto en cuenta, es evidente que un modelo podría permitir la reorganización de todas las operaciones de memoria, siempre que ninguna operación cruce un punto de sincronización [ 3 ] y una lo haga, lo que se denomina ordenamiento débil. Sin embargo, el ordenamiento débil impone algunas de las mismas restricciones que la consistencia del procesador, a saber, que el sistema debe permanecer coherente y, por lo tanto, todas las escrituras en la misma ubicación de memoria deben ser vistas por todos los procesadores en el mismo orden. [ 4 ] De forma similar al ordenamiento débil, el modelo de consistencia de liberación permite el reordenamiento de todas las operaciones de memoria, pero es aún más específico y descompone las operaciones de sincronización para permitir una mayor flexibilidad en los reordenamientos. [ 3 ] Ambos modelos asumen una sincronización adecuada del código y, en algunos casos, soporte de sincronización de hardware, por lo que la consistencia del procesador es un modelo más seguro al que adherirse si uno no está seguro de la confiabilidad de los programas que se ejecutarán utilizando el modelo.

Similitud con los modelos de memoria SPARC V8 TSO, IBM-370 y x86-TSO.

Uno de los componentes principales de la consistencia del procesador es que se permite que una escritura seguida de una lectura se ejecute fuera del orden del programa. Esto esencialmente oculta la latencia de escritura cuando se permite que las cargas se realicen antes que las escrituras. Dado que muchas aplicaciones funcionan correctamente con esta estructura, los sistemas que implementan este tipo de ordenación flexible suelen presentar consistencia secuencial. Otros dos modelos que cumplen con esta especificación son el SPARC V8 TSO (Total Store Ordering) y el IBM-370. [ 4 ]

El modelo IBM-370 sigue la especificación que permite que una escritura seguida de una lectura se ejecute fuera del orden del programa, con algunas excepciones. La primera es que si las operaciones se realizan en la misma ubicación, deben ejecutarse en el orden del programa. La segunda es que si alguna de las operaciones forma parte de una instrucción de serialización o hay una instrucción de serialización entre las dos operaciones, entonces las operaciones deben ejecutarse en el orden del programa. [ 4 ] Este modelo es quizás el más estricto de los tres modelos que se están considerando, ya que el modelo TSO elimina una de las excepciones mencionadas.

El modelo SPARC V8 TSO es muy similar al modelo IBM-370, con la diferencia clave de que permite que las operaciones en la misma ubicación se completen fuera del orden del programa. Con esto, es posible que una carga devuelva un almacenamiento que se produjo "desactualizado" en términos del orden del programa. [ 4 ] Estos modelos son similares a la consistencia del procesador, pero mientras que estos modelos solo tienen una copia de la memoria, la consistencia del procesador no tiene tal restricción. Esto sugiere un sistema en el que cada procesador tiene su propia memoria, lo que enfatiza la consistencia del procesador y el "requisito de coherencia " . [ 4 ]

El modelo x86-TSO tiene varias definiciones diferentes. El modelo de almacenamiento total, como su nombre indica, es muy similar al SPARC V8. La otra definición se basa en búferes de escritura locales. Las diferencias entre los modelos x86 y SPARC TSO radican en la omisión de algunas instrucciones y la inclusión de otras, pero los modelos en sí son muy similares. [ 5 ] La definición del búfer de escritura utiliza varios estados y bloqueos para determinar si se puede leer o escribir en un valor específico. Además, este modelo en particular para la arquitectura x86 no presenta los problemas de los modelos anteriores (de menor consistencia) y proporciona una base más intuitiva para que los programadores desarrollen sus soluciones. [ 5 ]

Véase también

Referencias

  1. 1 2 3 David Mosberger (1992). "Modelos de consistencia de la memoria" (PDF) . Universidad de Arizona . Recuperado el 1 de abril de 2015 .{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  2. Kourosh Gharachorloo; Daniel Lenoski; James Laudon; Phillip Gibbons; Anoop Gupta; John Hennessy (1 de agosto de 1998). «Consistencia de memoria y ordenación de eventos en multiprocesadores escalables de memoria compartida» (PDF) . 25 años de los simposios internacionales sobre arquitectura de computadoras (artículos seleccionados) . ACM. págs. 376–387 . doi : 10.1145/285930.285997 . ISBN  1581130589. S2CID 47089892 . Consultado el 01-04-2015 . 
  3. 1 2 3 4 5 6 7 8 9 10 11 Solihin, Yan (2009). Fundamentos de la arquitectura de computadoras paralelas : sistemas multichip y multinúcleo . Solihin Pub. pp. 297–299 . ISBN   978-0-9841630-0-7.
  4. 1 2 3 4 5 6 Kourosh Gharachorloo (1995). "Modelos de consistencia de memoria para multiprocesadores de memoria compartida" (PDF) . Western Research Laboratory . Recuperado el 7 de abril de 2015 .{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  5. 1 2 Scott Owens; Susmit Sarkar; Peter Sewell (2009). "Un mejor modelo de memoria x86: x86-TSO (versión extendida)" (PDF) . Universidad de Cambridge. doi : 10.48456/tr-745 . Recuperado el 8 de abril de 2015 .{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )