Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Definición de Coherencia
Esta definición se puede representar en 3 partes:
3. Las escrituras a la misma dirección son serializadas, esto quiere decir que si C1 escribió
1 y luego 3 en X, C2 debe notar que primero se escribió un 1 y luego un 3.
1
¿Cómo Obtener Coherencia?
Se proponen varias soluciones:
1. No usar cachés (muy malo para el desempeño ya que la memoria principal es muy
lenta).
2. Todos los núcleos usan el mismo caché (mal desempeño ya que la caché tendrı́a que
ser muy grande por lo que la harı́a lenta).
3. Implementar cachés con protocolo write-through (provoca incoherencias ya que no se
actualiza la memoria principal).
4. Utilizar el write update coherence, implica actualizar todos los cachés cada vez que se
realiza una escritura. Esto resolverı́a lo mencionado en la 2da parte de la definición de
coherencia.
5. Hacer que una escritura en caché provoque misses en los demás cachés si intentan
accesar el mismo bloque, a esto se le denomina write invalidate coherence lo que resuelve
lo mencionado en la 2da parte de la definción de coherencia.
6. Para resolver la 3era parte de la definición se puede utilizar un bus compartido por los
cachés, gracias a esto todos los cachés están al tanto de las operaciones que realizan
los demás (a esto se le llama snooping).
2
La aplicación Update Invalidate
hace
Ráfaga de escrit- Cada escritura envı́a una actual- La primera escritura inválida los
uras a una misma ización, saturando el bus común demás cachés y las demás solo
dirección y además se consume mucha en- marcan hits.
ergı́a.
Escribe diferentes Hay una actualización por cada La primera escritura inválida los
palabras en el palabra, lo que puede saturar el demás cachés y las demás solo
mismo bloque bus. marcan hits, lo que hace que no
(inicialización de haya un tráfico excesivo en el
caché) bus.
Productor - Con- El productor actualiza cada vez El consumidor solo va a ver
sumidor: Uno crea que actualiza y el consumidor misses y esto implica traer el
y otro lee solo va a obtener hits, lo que es dato desde memoria aumen-
bueno tando el tráfico del bus, es malo.
El thread se mueve Se actualiza el caché del núcleo No hay tráfico innecesario gra-
a otro núcleo viejo provocando demasiado cias a esta implementación.
tráfico en el bus.
Coherencia MSI
A continuación se presentan los estados de la coherencia MSI:
• Invalid (I): bloque presente en el caché pero el bit valid está en 0 o cuando el bloque
no está en el caché.
3
• Shared (S): el bloque puede leer sin ninguna complicación pero si se realiza una escritura
hay que hacer algo.
• Modified (M): puede leerse y escribirse localmente, cualquier otro caso hay que cambiar
de estado.
Coherencia MOSI
Es igual que el MSI, excepto que cuando se está en M y ocurre un snoop a read se pasa
al estado O y no al S. Por lo tanto, no se accesa a la memoria y nada más se da el dato
al solicitante sin actualizar la memoria. El estado es muy parecido al S solo que cuando
ocurre un snoop read se da el dato y solo se da un write-back a la memoria si el bloque es
reemplazado. En resumen, O está dirty, lo que significa que es el valor más actualizado por
lo que este da el dato para que la memoria no lo haga y mejorar los tiempos.