miércoles, 20 de febrero de 2013

Contralador de coherencia



Controlador de coherencia
Para mantener la coherencia el hardware tiene
que controlar tanto las acciones del procesador
como del bus.
Las peticiones para trabajar con la cache pueden
venir simultáneamente del procesador local y del
bus.

  El snoopy es un algoritmo distribuido y por
definición, no atómico; por tanto, pueden
aparecer varios problemas.


  Veamos las características físicas de un
determinado controlador de coherencia, para
entender cómo se resuelven algunos problemas.


Replicar el directorio de la cache, uno para el procesador y el otro para las operaciónes del bus.


Un bloque de datos puede estar también en el búfer de escritura: hay que replicar el hardware de búsqueda.





¿Cuánto tiempo hay que esperar a la respuesta de los snoopys?



-  tiempo fijo   (max.)
-   tiempo variable   (el necesario)
Más líneas de control en el bus:
  sh, dirty, inh...



El problema principal es la falta de atomicidad: se pueden mezclar acciones de distintos procesadores sobre el mismo bloque de datos. 


P.e., dos procesadores, a la vez, solicitan el mismo bloque de datos. Si en ese momento no hay ninguna copia en el sistema (sh = 0), ambos cargarán el bloque en estado E!
  O, dos procesadores escriben a la vez en su cache en un bloque que está en estado S, por lo que se anulan mutuamente sus copias!



Una simplificación: la utilización del bus es atómica. Para ello, dos señales de control:
  BRQ (bus request): quiero utilizar el bus.
  BGR (bus grant): el bus es para ti.



A pesar de todo, la atomicidad no está garantizada, y por lo tanto, pueden ocurrir carreras (races):
  llegar, siguiendo un algoritmo, a un estado   incorrecto, debido a que el algoritmo no se ha   ejecutado de manera atómica.



Solución:
  Además de la atomicidad de las operaciones del bus (BRQ, BGR), añadir estados transitorios al protocolo de coherencia.
    Los estados transitorios no se introducen en el directorio (a nivel de bloque) sino que son estados del controlador.






El protocolo MESI consiste en cuatro estados:
Modificado (M)
Exclusivo (E)
Compartido(S)
Invalido (I)

Exclusivo (E).- El estado exclusivo, significa que únicamente una cache tiene una copia del bloque, y no ha sido modificado (es decir, la memoria principal esta actualizada)
Compartido(S) .- El estado compartido significa que potencialmente dos o mas procesadores tienen este bloque en su cache en un estado no modificado.

M - Modified (Modificado): La línea de caché sólo está en la caché actual, y está "sucia"; ha sido modificado el valor de la memoria principal . Es necesario que los datos sean escritos otra vez en la memoria principal antes de permitir cualquier otra lectura del estado de la memoria (ya no es válida).
I - Invalid (Inválido): Indica que esta línea de caché no es válida.












No hay comentarios:

Publicar un comentario