¿Por qué necesitamos los protocolos MOESI / MESIF?

2

Según tengo entendido, esos dos protocolos agregan un estado adicional para identificar qué caché debería responder a una solicitud errónea de otro caché para una línea de caché particular.

Pero, en el protocolo MESI, solo un caché puede tener una línea de caché 'A' en el estado modificado. Los otros cachés pueden tener 'A' en el estado no válido o no tenerlos en absoluto en el caché.

En lugar de agregar un estado adicional, ¿no podemos simplemente hacer que el caché que tiene la línea de caché solicitada en el estado modificado responda a una solicitud de error generada por otro caché para dicha línea de caché?

Además, ¿hay otro motivo para introducir los protocolos MOESI / MESIF?

    
pregunta Anish Ramaswamy

1 respuesta

4

MOESI permite que más de un caché tenga una copia de un bloque que está sucio (en relación con la memoria principal). MOESI proporciona los cuatro estados que uno esperaría para los dos rasgos binarios presente en un solo caché / posiblemente presente en múltiples cachés (M, E / O, S) y necesidades por escribir. to-memory-on-eviction / puede ser invalidado sin escritura (M, O / E, S). (El estado no válido excluye los cuatro de esos estados).

Bajo el uso tradicional de MESI, si un caché falla en un bloque Modificado en otro caché, el bloque de caché se escribiría en la memoria, se marcaría como No válido en el caché proveedor y se marcaría como Exclusivo en el caché de solicitud. Obviamente, el estado M podría transferirse a la memoria caché de solicitud (evitando la escritura en la memoria), pero la memoria caché proveedora todavía tendría que invalidar el bloque de la memoria caché para que varias memorias caché no puedan retener el bloque al mismo tiempo.

Evitar reescrituras puede reducir el uso del ancho de banda de la memoria principal. (Alternativamente, una programación más flexible de reescrituras que pueden distribuir chorros de actividad de memoria o explotar el menor costo de los accesos múltiples dentro de la misma fila de DRAM).

La adición del estado de Reenvío está destinada a reducir la cantidad de tráfico de coherencia al tener, como máximo, un caché que responda con datos. (El estado de propiedad proporciona una ventaja similar pero solo si el bloque "compartido" está sucio en relación con la memoria). En una falla de caché, se puede transmitir una solicitud y cualquier caché con el bloque en estado M, E o F puede proporcionar la datos. Con MESI, cada caché con el bloque en estado Compartido respondería con los datos.

(Si la interconexión entre cachés se cargó lo suficiente como para que hubiera un retraso en el almacenamiento en búfer, este retraso podría ser suficiente para verificar si la caché [s] en un nodo de red tenía un bloque en un estado de proveedor único [M, E, F ], permitiendo que una transmisión de solicitud de lectura no sea enviada. Otras optimizaciones más prácticas son posibles. "MESIF: A El Protocolo de coherencia de caché de dos saltos para interconexiones punto a punto " podría proporcionar más información. [No he leído ese documento y mi comprensión de MESIF es incluso menor que mi comprensión de MOESI.])

    
respondido por el Paul A. Clayton

Lea otras preguntas en las etiquetas