stringtranslate.com

protocolo MOSI

El protocolo MOSI es una extensión del protocolo básico de coherencia de caché MSI . Agrega el estado Propiedad , que indica que el procesador actual es propietario de este bloque y atenderá las solicitudes de otros procesadores para el bloque.

Descripción general de los estados

Los siguientes son los estados permitidos de una línea de caché determinada:

Modificado (M) : solo un caché tiene una copia válida del bloque y es probable que el valor sea diferente del de la memoria principal. Tiene casi el mismo significado que un estado sucio en una caché de reescritura excepto por la diferencia de que el estado modificado también implica la propiedad exclusiva de ese bloque. El estado sucio simplemente significa que el valor del bloque es diferente del de la memoria principal, mientras que modificado implica que el valor es diferente al de la memoria principal y que está almacenado en caché en una sola ubicación.

Propiedad (O) : varias cachés pueden contener el valor más reciente y correcto de un bloque y el valor en la memoria principal puede ser correcto o no. A la vez, sólo una caché puede tener el estado de propiedad de un bloque. Todos los demás cachés con el mismo bloque deben estar en estado compartido. [1]

Compartido (S) : el bloque de caché es válido, puede ser compartido por varios cachés y puede tener o no el mismo valor que la memoria principal. Otros procesadores pueden leer esto, pero no tienen permisos de escritura.

No válido (I) : el bloque de caché no es válido.

Para cualquier par de cachés determinado, los estados permitidos de una línea de caché determinada son los siguientes:

Operaciones

Una máquina de estados finitos que muestra las transacciones del procesador para el protocolo MOSI.

En el protocolo MOSI, cada caché tiene las siguientes solicitudes:

Transacciones del procesador

Si analizamos el caso de las transacciones del procesador, cuando el bloque está en el estado No válido (I) , el bloque de caché nunca se recuperó de la memoria o fue invalidado. Cuando hay una lectura del procesador ( PrRd ), el estado cambia de no válido (I) a compartido (S), generando así una lectura del bus ( BusRd ). Al mismo tiempo, si se trata de una solicitud de escritura del procesador ( PrWr ), entonces el estado del bloque cambia a modificado (M) junto con una solicitud de escritura espiada ( BusRdX ).

Una vez que el bloque está en el estado Propiedad (O) , una lectura del procesador (PrRd) no genera ninguna señal espiada y el bloque permanece en el mismo estado. Mientras que una solicitud de escritura del procesador (PrWr) da como resultado un cambio en el estado del bloque de propiedad (O) a modificado (M), además de generar una solicitud de escritura espiada ( BusUpgr ). [3]

Cuando el bloque está en el estado Modificado (M) , ni una solicitud de lectura (PrRd) ni de escritura (PrWr) del procesador genera una señal espiada, ya que el bloque ya indica que el valor más reciente y correcto reside solo en esa caché. Por lo tanto, no cambia de estado y permanece en estado modificado (M).

Una máquina de estados finitos que muestra las transacciones de bus espiadas para el protocolo MOSI.

Mientras el bloque está en el estado Compartido (S) y hay una solicitud de lectura del procesador (PrRd), dado que el valor del bloque de caché es el mismo en todos los demás procesadores y en la memoria principal, no se genera ninguna señal de bus después. una lectura del procesador (PrRd). Se genera una solicitud de escritura de bus (BusUpgr) una vez que hay una solicitud de escritura del procesador (PrWr) en un bloque en el estado compartido (S) porque el bloque de caché ya no es válido en todos los demás cachés y el estado del bloque cambia. de compartido (S) a modificado (M).

Transacciones de autobús

Teniendo en cuenta el comportamiento de la máquina de estados finitos ante las transacciones de bus espiadas, si el bloque de caché está en estado No válido (I) , ninguna solicitud de bus espiada afectará al bloque de ninguna manera, por lo que incluso si se trata de una lectura de bus (BusRd) o un bus. solicitud de escritura de un procesador que tiene o no el bloque (BusRdX o BusUpgr) , el bloque permanece en el mismo estado no válido (I) y no genera más acciones.

Cuando el bloque de caché está en el estado Compartido (S) y hay una transacción de lectura de bus espía (BusRd), entonces el bloque permanece en el mismo estado y no genera más transacciones ya que todos los bloques de caché tienen el mismo valor, incluida la memoria principal. y sólo se lee, no se escribe. Si hay una solicitud de escritura espiada (BusRdX o BusUpgr), entonces el estado del bloque cambia de compartido (S) a no válido (I) ya que el valor del bloque se ha modificado en uno de los otros bloques de caché y en todas las demás copias. ahora debe ser invalidado.

Una vez que el bloque de caché está en el estado Modificado (M) y hay una solicitud de lectura del bus (BusRd), el bloque vacía (Flush) los datos modificados y cambia el estado a propiedad (O), convirtiéndolo así en el único propietario de ese bloque de caché particular. Al mismo tiempo, cuando está en el estado modificado (M), nunca habrá una solicitud de escritura en el bus (BusUpgr) de otro procesador ya que no tiene el bloque de caché. Con una solicitud de escritura de otro procesador que no tiene el bloque (BusRdX), el bloque cambia su estado a no válido (I) ya que otro procesador está escribiendo en el bloque y, por lo tanto, tendrá la propiedad de ese bloque.

Mientras un bloque de caché esté en estado modificado, no hay posibilidad de que ningún otro procesador realice una solicitud BusUpgr ya que ninguno de ellos tendrá el bloque. Según la definición del estado modificado (M), solo ese procesador tiene el bloque, el resto están invalidados y, por lo tanto, no pueden iniciar una solicitud BusUpgr.

Mientras está en el estado Propietario (O) y hay una solicitud de lectura espiada (BusRd), el bloque permanece en el mismo estado mientras vacía (Flush) los datos para que el otro procesador los lea. Con una solicitud de escritura espiada (BusRdX), el bloque cambia de estado a no válido (I) junto con el vaciado (Flush) de los datos mientras otro procesador escribe en él, perdiendo así su propiedad sobre ese bloque. Cada vez que otro procesador intenta acceder a ese bloque, en lugar de ir a la memoria para acceder a él, el procesador lo toma de otro caché que ya tiene ese bloque en el estado de propiedad (O). Con BusUpgr, simplemente cambia el estado de propietario (O) a no válido (I). [3]

Comparación con el protocolo MSI

La diferencia obvia entre el protocolo MSI y el protocolo MOSI, también conocido como protocolo Berkeley [4] es la presencia de un estado adicional (propiedad) en MOSI además de tener solo un estado modificado (M).

En el protocolo MSI, siempre que hay una solicitud de lectura perdida para bloquear que está en el estado modificado (M), se vuelve a escribir en la memoria principal mientras se cambia el estado del bloque a compartido (S). Pero en el caso del protocolo MOSI, donde tenemos un estado adicional (propietario), cada vez que otro procesador solicita una operación de lectura, el bloque cambia del estado modificado al estado de propiedad (O) y, por lo tanto, retiene el bloque sucio de caché, eliminando así la necesidad de volver a escribir en la memoria principal inmediatamente.

Este aplazamiento puede ahorrar tráfico de bus y escrituras en la memoria principal en determinadas secuencias de transacciones. Considere, por ejemplo, si un caché es M para el procesador 1, entonces el procesador 2 lee en él y luego el procesador 1 vuelve a escribir en él. En MSI, la transición MS del procesador 1 desde la lectura conduce a una escritura en la memoria, y luego la transición SM conduce a BusUpgr. En MOSI, la transición MO no genera tráfico y la transición OM también genera un BusUpgr como antes. Por lo tanto, MOSI prescindió de la reescritura de memoria inicial y del tráfico de bus asociado que haría MSI.

Comparación con el protocolo MESI

Tanto el protocolo MESI (también conocido como Illinois) [4] como el MOSI, son extensiones del protocolo MSI para mejorar diferentes funcionalidades. MOSI se centra en reducir las reescrituras y MESI intenta reducir la cantidad de transacciones de bus requeridas después de una solicitud de lectura y escritura de otro procesador. El estado exclusivo (E) en el protocolo MESI implica que el bloque de caché es válido, está limpio (el mismo valor que en la memoria principal) y está almacenado en caché solo en un caché, mientras que el estado de propiedad (O) en el protocolo MOSI implica que el bloque de caché es válido. , potencialmente sucio, grabable y podría estar presente en más de un caché (todos los cachés tienen el mismo valor).

Referencias

  1. ^ Sorín, Daniel; colina, marca; Madera, David (2011). Introducción a la coherencia de la memoria y la coherencia de la caché . Morgan y Claypool. págs. 119-122. ISBN 9781608455645.
  2. ^ Solihin, Yan (2016). Fundamentos de la arquitectura multinúcleo paralela . Prensa RC, Grupo Taylor & Francis. ISBN 9781482211184.
  3. ^ ab "Una evaluación de los protocolos de coherencia de caché basados ​​en Snoop" (PDF) .
  4. ^ ab Yang, Q.; Bhuyan, LN; Liu, B.-C. (1989). "Análisis y comparación de protocolos de coherencia de caché para un multiprocesador de conmutación de paquetes". Transacciones IEEE en computadoras . 38 (8): 1143-1153. doi :10.1109/12.30868.

Ver también