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”.
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