Multi-hilo de Java - caché problema de coherencia y de coherencia de caché protocolo MESI (b)

buffer de escritura y invalidante

antecedentes:

MESI protocolo de coherencia de caché para resolver el problema, pero también hay una representación de su propia debilidad - el procesador para llevar a cabo la operación de escritura de la memoria, el procesador debe esperar a que los demás copia de los datos correspondientes en su caché y eliminar recibir estos procesadores Invalidar responden Reconocimiento / leer el mensaje después de que los datos de respuesta se pueden escribir en la memoria caché. Con el fin de evitar y reducir este retraso (latencia) de espera para la operación de escritura causada por los diseñadores de hardware introdujo el buffer de escritura y de reducción de espera,

buffer de escritura

buffer de escritura (memoria intermedia, también llamada escritura Buffer) es una capacidad del procesador interno es más pequeño que los medios de memoria caché privada de alta velocidad de tracción 6. Cada procesador tiene su buffer de escritura, un buffer de escritura puede ser interna que comprende una pluralidad de entradas (entrada). Un procesador no puede leer el contenido del buffer de escritura en otro procesador.
Aquí Insertar imagen Descripción
Después de la introducción del buffer de escritura, el procesador durante una operación de escritura, tales haría un trato:

Si la entrada de caché correspondiente en el estado E o M. continuación, el procesador puede escribir datos directamente a la línea de caché correspondiente sin tener que enviar algún mensaje a volar si el estado de la entrada de caché correspondiente es s. A continuación, el primer procesador escribe relevante los datos (incluyendo direcciones de memoria y datos para ser operados) entradas de la memoria se escribe en la memoria intermedia y envía mensaje de invalidación, si la entrada de caché correspondiente al estado i, que llamaremos la operación de escritura correspondiente encontrado un fallo de escritura (WriteMiss) , entonces el tiempo se procesará primero Shao escribe una entrada en los datos de escritura de búfer de memoria y las personas enviar mensajes ReadInvalidate.

Por lo tanto, la introducción de tales buffer de escritura de un procesador cuando la operación de escritura se puede realizar sin tener que esperar Invalidate mensaje acuse, reduciendo así la latencia de la operación de escritura. Esto permite que la operación de escritura ejecutado por el procesador en los otros procesadores respuesta Invalidate Reconocimiento / Leer el mensaje de respuesta en esta ocasión otras instrucciones pueden ser ejecutadas, lo que mejora la eficiencia de la ejecución de instrucciones del procesador.

Después de la introducción de la cola de invalidación (Invalidate Queue), el procesador no elimina la copia de los datos correspondientes a la dirección especificada en el mensaje después de recibir el mensaje de invalidación, pero el mensaje se almacena en la cola después de los revierte de invalidación invalidar el mensaje de reconocimiento, reduciendo de este modo la escritura la espera de operación requerida tiempo ejecutado por un procesador. Algunos procesadores (como x86) no pueden usar cola de invalidación.

buffer de escritura y la introducción de cola de invalidación traerá algunos problemas nuevos - reordenamiento de memoria y problemas de visibilidad.

Almacenamiento y reenvío

Este procesador lee los datos directamente desde la memoria búfer de escritura para poner en práctica una técnica de operación de lectura que se conoce como almacenamiento y retransmisión (tienda de reenvío). Tienda y hacia adelante para que la operación de escritura se puede realizar sin afectar el procesador en el procesador para realizar el resultado de la operación de lectura se almacena en la operación de escritura buffer de escritura.

reordenamiento de memoria Revisited

Comentario de amortiguamiento y la reducción de espera puede causar reordenamiento de memoria.

- hardware capa de barrera de la memoria se divide en dos: Load Barrier y  Store Barrierque se lee barrera y barrera de escritura.
- un procesador de bajo ciertas condiciones (tales como el buffer de escritura está llena, I / es ejecutado 0 instrucción) escribirá tampón de vaciado (Drain) o rubor (la descarga), está a punto de escribir el contenido de la memoria intermedia de almacenamiento temporal de escritura, sin embargo, a partir de un programa o un conjunto de variables tirón punto de vista actualizada, el procesador sí mismo no garantiza que el programa esté al mismo nivel oportuna.

Con el fin de garantizar unas medidas de procesadores compartidos se pueden hacer variaciones para actualizar los otros procesadores sincronizados, tales como el compilador por el sistema subyacente requiere un tipo especial de instrucciones de barrera memoria se refiere. barrera barrera de memoria (tienda de almacenamiento
de barrera) de instrucciones puede causar que el procesador ejecute la escritura tampón de lavado del mismo.

Sin embargo, vaciar el búfer de escritura es sólo resuelve la mitad del problema de la visibilidad. Debido a que la otra mitad es la visibilidad del problema debido a la cola de invalidación. La introducción de la invalidación de colas en sí dará lugar a nuevos problemas si un procesador no borra la memoria antes de realizar una operación de lectura en la copia caché del procesador de los datos relevantes basados ​​en el contenido de la cola no es válida, entonces puede dar lugar a el procesador lee los datos son los datos antiguos, obsoletos, por lo que las actualizaciones hechas a la pérdida de otros procesadores.

Con el fin de hacer un hilo que se ejecuta en el procesador puede leer hilo adicional que se ejecuta en los procesadores actualizaciones hechas a una variable compartida, el procesador debe quitar primero la cola de invalidación de caché de acuerdo a los mensajes almacenados Invalidate correspondiente datos duplicados, de modo que otros hilos que se ejecuta en procesador actualiza la variable compartida save hecho bajo la acción de protocolo de coherencia de caché se puede sincronizar en el caché del procesador.

barreras de memoria en una barrera de carga (sin barreras) Se utiliza para resolver este problema. cola de invalidación Cargando barrera basado en el contenido de la dirección de memoria especificada, la entrada de caché correspondiente al estado de la memoria caché en los procesadores respectivos están etiquetados I 'que el procesador para la posterior ejecución de la dirección correspondiente (cola contenido invalidación leer mensajes deben ser enviados cuando la dirección especificada) de la memoria lee. A las demás actualizaciones de procesador hechas a las variables compartidas asociadas sincronizados a la caché del procesador.

arquitecturas Different procesador compatible (permitido) de memoria de reordenación diferente. Por ejemplo, los procesadores modernos adoptarán un buffer de escritura, pero algunos procesadores (como x86) garantizan una escritura secuencial, que estos procesadores no están permitidos StoreStore aparece reordenamiento.

visibilidad Revisited

Decimos que el buffer de escritura es una raíz de hardware causa problemas de visibilidad.

El procesador en ciertas condiciones (tales como el buffer de escritura está llena, I / es ejecutado 0 instrucción) escribirá tampón de vaciado (Drain) o rubor (la descarga), está a punto de escribir el contenido de la memoria intermedia de almacenamiento temporal de escritura, sin embargo, a partir de un programa o un conjunto de variables tirón punto de vista actualizada, el procesador sí mismo no garantiza que el programa esté al mismo nivel oportuna. En consecuencia, con el fin de garantizar unas medidas de procesadores compartidos se pueden hacer variaciones para actualizar los otros procesadores sincronizados, tales como el compilador por el sistema subyacente requiere un tipo especial de instrucciones de barrera memoria se refiere. barrera barrera de memoria (tienda de barrera) de instrucciones de almacenamiento puede provocar que el procesador ejecute la escritura tampón de lavado del mismo.

Sin embargo, vaciar el búfer de escritura es sólo resuelve la mitad del problema de la visibilidad. Debido a que la otra mitad es la visibilidad del problema debido a la cola de invalidación. La introducción de la invalidación de colas en sí dará lugar a nuevos problemas si un procesador no borra la memoria antes de realizar una operación de lectura en la copia caché del procesador de los datos relevantes basados ​​en el contenido de la cola no es válida, entonces puede dar lugar a el procesador lee los datos son los datos antiguos, obsoletos, por lo que las actualizaciones hechas a la pérdida de otros procesadores. En consecuencia, con el fin de hacer un hilo que se ejecuta en el procesador puede leer hilo adicional que se ejecuta en los procesadores actualizaciones hechas a una variable compartida, el procesador debe quitar primero la cola de invalidación de caché según los mensajes almacenados en Invalidate los datos de copias respectivas, de modo que el hilo que se ejecuta en otros procesadores a la variable compartida Guardar actualizaciones realizadas bajo la acción de protocolo de coherencia de caché pueden ser sincronizados en la memoria caché del procesador.

barreras de memoria en la planta además de barrera (sin barreras) Se utiliza para resolver este problema. cola de invalidación Cargando barrera basado en el contenido de la dirección de memoria especificada, la entrada de caché correspondiente al estado de la memoria caché en los procesadores respectivos están etiquetados I 'que el procesador para la posterior ejecución de la dirección correspondiente (cola contenido invalidación leer mensajes deben ser enviados cuando la dirección especificada) de la memoria lee. A las demás actualizaciones de procesador hechas a las variables compartidas asociadas sincronizados a la caché del procesador.

Por lo tanto, para resolver el problema de la visibilidad que se hizo primero en hacer la escritura hilo para actualizar las variables compartida puede alcanzar (a almacenar) caché, por lo que los cambios a los otros procesadores se sincronizan. En segundo lugar, el procesador lee el hilo donde lo desee inválido cola de contenido "Aplicar" para su caché, de modo que pueda ser compartida en otros procesadores se hacen cambios sorprendidos hechas para sincronizar la caché del procesador .

Esto se consigue por dos pares utilizando la barrera de almacenamiento con barrera de carga: ejecución del hilo barrera de escritura de almacenamiento realizado por el procesador para proteger el hilo compartidos actualizaciones variables hechas para leer un hilo, que está sincronizado ; barrera de carga de lectura ejecución del hilo realizada por el procesador va a escribir para actualizar el hilo de tracción variable compartida hizo sincronizado a la caché del procesador en.

Tienda y la tecnología hacia adelante también pueden causar problemas de visibilidad.

 

Publicados 136 artículos originales · ganado elogios 6 · vistas 1495

Supongo que te gusta

Origin blog.csdn.net/weixin_42073629/article/details/104731403
Recomendado
Clasificación