Protocolo MSI
En informática, el protocolo MSI, un protocolo básico de coherencia de caché, opera en sistemas multiprocesador. Al igual que con otros protocolos de coherencia de caché, las letras del nombre del protocolo identifican los posibles estados en los que puede encontrarse una línea de caché.
Descripción general
En MSI, cada bloque contenido dentro de un caché puede tener uno de tres estados posibles:
- Modified: El bloque ha sido modificado en el caché. Los datos en el caché son entonces inconsistentes con la tienda de respaldo (por ejemplo, memoria). Un caché con un bloque en el estado "M" tiene la responsabilidad de escribir el bloque a la tienda de respaldo cuando se desaloja.
- SCriado: Este bloque no está modificado y existe en estado solo lectura en al menos un caché. El caché puede desalojar los datos sin escribirlos a la tienda de respaldo.
- INvalid: Este bloque no está presente en el caché actual o ha sido invalidado por una solicitud de autobús, y debe ser arrebatado de memoria u otro caché si el bloque debe ser almacenado en este caché.
Estos estados de coherencia se mantienen a través de la comunicación entre las cachés y el almacén de respaldo. Los cachés tienen diferentes responsabilidades cuando se leen o escriben bloques, o cuando se enteran de que otros cachés emiten lecturas o escrituras para un bloque.
Cuando llega una solicitud de lectura a la caché de un bloque en el directorio "M" o "S" estados, la caché proporciona los datos. Si el bloque no está en el caché (en el estado "I"), se debe verificar que el bloque no esté en el estado "M" estado en cualquier otro caché. Las diferentes arquitecturas de almacenamiento en caché manejan esto de manera diferente. Por ejemplo, las arquitecturas de bus suelen realizar snooping, donde la solicitud de lectura se transmite a todas las cachés. Otras arquitecturas incluyen directorios de caché que tienen agentes (directorios) que saben qué cachés tuvieron copias de un bloque de caché en particular por última vez. Si otro caché tiene el bloque en la carpeta "M" estado, debe volver a escribir los datos en la tienda de respaldo e ir a la página "S" o "yo" estados. Una vez que cualquier "M" Cuando se vuelve a escribir la línea, el caché obtiene el bloque del almacén de respaldo o de otro caché con los datos en el directorio "S" estado. Luego, la caché puede proporcionar los datos al solicitante. Después de proporcionar los datos, el bloque de caché está en la posición "S" estado.
Cuando llega una solicitud de escritura a la caché para un bloque en el directorio "M" estado, el caché modifica los datos localmente. Si el bloque está en la zona "S" estado, el caché debe notificar a cualquier otro caché que pueda contener el bloque en el estado "S" afirman que deben desalojar el bloque. Esta notificación puede realizarse a través de espionaje en el autobús o de un directorio, como se describe anteriormente. Entonces los datos pueden modificarse localmente. Si el bloque está en la posición "I" estado, el caché debe notificar a cualquier otro caché que pueda contener el bloque en el estado "S" o "M" afirma que deben desalojar el bloque. Si el bloque está en otra caché en el directorio "M" estado, esa caché debe escribir los datos en el almacén de respaldo o proporcionarlos a la caché solicitante. Si en este punto el caché aún no tiene el bloque localmente, el bloque se lee desde el almacén de respaldo antes de modificarlo en el caché. Una vez modificados los datos, el bloque de caché está en la carpeta "M" estado.
Para cualquier par de cachés determinado, los estados permitidos de una línea de caché determinada son los siguientes:
M | S | I | |
---|---|---|---|
M | ![]() | ![]() | ![]() |
S | ![]() | ![]() | ![]() |
I | ![]() | ![]() | ![]() |
Máquina de estados

Las solicitudes del procesador al caché incluyen:
- PrRd: Procesador solicita leer un bloque de caché.
- PrWr: Procesador solicita escribir un bloque de caché.

Además, hay solicitudes en el lado del autobús. Éstas incluyen:
- BusRd: Cuando una falta de lectura ocurre en el caché de un procesador, envía una solicitud BusRd en el autobús y espera recibir el bloque de caché a cambio.
- BusRdX: Cuando una falta de escritura ocurre en el caché de un procesador, envía una solicitud BusRdX en el autobús que devuelve el bloque de caché e invalida el bloque en los caches de otros procesadores.
- BusUpgr: Cuando hay un golpe de escritura en la caché de un procesador, envía una solicitud de BusUpgr en el autobús para invalidar el bloque en los caches de otros procesadores.
- Flush: Solicitud que indica que todo un bloque de caché está siendo escrito de nuevo a la memoria.
Transiciones de estado:
- Inválidos:
- En un PrRd, BusRd es emitido y cambios estatales Compartida.
- En un PrWr, BusRdX es emitido y cambios estatales Modificado.
- En un BusRd, BusRd X o un BusUpgr permanece un bloque inválido Inválidos.
- Compartida:
- En un PrRd, el bloque permanece en el Compartida estado.
- En un PrWr, BusUpgr es emitido y cambios estatales Modificado.
- En un BusRd, el bloque permanece en el Compartida estado.
- En un BusRdX o BusUpgr, el bloque pasa a Inválidos.
- Modificado:
- En un PrRd o PrWr, el bloque permanece en el Modificado estado.
- En un BusRd, el bloque de caché se lanza sobre el autobús y los cambios estatales Compartida.
- En un BusRdX, el bloque de caché se lanza sobre el autobús y los cambios estatales Inválidos.
- Un BusUpgr no es posible. Note que por estar en Modificado estado en un procesador en particular, un bloque de caché tiene que estar en Inválidos estado en todos los demás procesadores, como el Modificado el estado está permitido en ninguno o sólo un procesador. Esto niega efectivamente la posibilidad de un BusUpgr en el autobús, que requeriría que este bloque estuviera en el Compartida estado en uno de los procesadores que, como se ha visto anteriormente, emite un PrWr.
Uso
Este protocolo es similar al utilizado en la máquina SGI 4D.
Variantes
Los sistemas modernos utilizan variantes del protocolo MSI para reducir la cantidad de tráfico en la interconexión de coherencia. El protocolo MESI añade una opción "Exclusiva" state para reducir el tráfico causado por escrituras de bloques que solo existen en un caché. El protocolo MOSI agrega un protocolo "propiedad" state para reducir el tráfico causado por las reescrituras de bloques leídos por otras cachés. El protocolo MOESI hace ambas cosas.
Contenido relacionado
Precisión y exactitud
Evidencia empírica
Teoría del flogisto