Articulo de referencia

Protocolo MOSI

El protocolo MOSI es una extensión del protocolo básico de coherencia de caché MSI . Añade el estado " Owned", que indica que el procesador actual es el propietario de este bloq...

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

Panorama general de los estados

A continuación se muestran los estados permitidos de una línea de caché determinada:

Modificado (M) : Solo una caché tiene una copia válida del bloque y es probable que su valor sea diferente al de la memoria principal. Tiene prácticamente el mismo significado que un estado de modificación en una caché de escritura diferida, con la diferencia de que el estado de modificación también implica la propiedad exclusiva de ese bloque. El estado de modificación simplemente significa que el valor del bloque es diferente al de la memoria principal, mientras que el estado de modificación 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. En un momento dado, solo una caché puede tener el estado de propiedad para un bloque. Todas las 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 varias cachés y puede o no tener el mismo valor que la memoria principal. Otros procesadores pueden leer de él, pero no tienen permisos de escritura.

Inválido (I) - El bloque de caché no es válido.

Para cualquier par de cachés dado, 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:

  • PrRd - Solicitud del procesador para leer un bloque de caché.
  • PrWr : solicitud del procesador para escribir en un bloque de caché.
  • BusRd - Solicitud interceptada que indica que otro procesador ha realizado una solicitud de lectura a un bloque de caché.
  • BusRdX : solicitud interceptada que indica que hay una solicitud de escritura en un bloque de caché realizada por otro procesador que no tiene dicho bloque.
  • BusUpgr : solicitud interceptada que indica que hay una solicitud de escritura en un bloque de caché realizada por otro procesador que ya tiene el bloque en su caché.
  • Flush : solicitud interceptada después de la cual el bloque de caché se coloca en el bus para una transferencia de caché a caché. [ 2 ]

Transacciones del procesador

En el caso de las transacciones del procesador, cuando el bloque está en estado Inválido (I) , significa que el bloque de caché nunca se recuperó de la memoria o que fue invalidado. Cuando hay una lectura del procesador ( PrRd ), el estado cambia de invá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 ), el estado del bloque cambia a modificado (M) junto con una solicitud de escritura con snooping ( BusRdX ).

Una vez que el bloque está en estado de Propiedad (O) , una lectura del procesador (PrRd) no genera ninguna señal de snooping y el bloque permanece en el mismo estado. En cambio, 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 snooped ( BusUpgr ). [ 3 ]

Cuando el bloque se encuentra en estado Modificado (M) , ni una solicitud de lectura del procesador (PrRd) ni una solicitud de escritura del procesador (PrWr) generan una señal de snooping, ya que el bloque indica que el valor más reciente y correcto reside únicamente 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 interceptadas para el protocolo MOSI.

Mientras el bloque se encuentra en estado compartido (S) y existe 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 de una lectura del procesador (PrRd). Se genera una solicitud de escritura del bus (BusUpgr) cuando existe una solicitud de escritura del procesador (PrWr) a un bloque en estado compartido (S), ya que el bloque de caché deja de ser válido en todas las demás cachés y su estado cambia de compartido (S) a modificado (M).

Transacciones de autobuses

Considerando el comportamiento de la máquina de estados finitos a las transacciones de bus monitoreadas, si el bloque de caché está en estado Inválido (I) , ninguna solicitud de bus monitoreada afectará al bloque de ninguna manera, por lo que incluso si se trata de una solicitud de lectura de bus (BusRd) o de escritura de bus de un procesador que tiene o no tiene el bloque (BusRdX o BusUpgr) , el bloque permanece en el mismo estado inválido (I) y no genera ninguna acción adicional.

Cuando el bloque de caché está en estado Compartido (S) y hay una transacción de lectura de bus con monitorización (BusRd), 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 solo se está leyendo, no escribiendo. Si hay una solicitud de escritura con monitorización (BusRdX o BusUpgr), el estado del bloque cambia de compartido (S) a inválido (I), ya que el valor del bloque se ha modificado en uno de los otros bloques de caché y todas las demás copias deben invalidarse.

Una vez que el bloque de caché está en estado Modificado (M) y hay una solicitud de lectura del bus (BusRd), el bloque vacía (Flush) los datos modificados y cambia su estado a propiedad (O), convirtiéndose así en el único propietario de ese bloque de caché en particular. Al mismo tiempo, cuando está en estado Modificado (M), nunca habrá una solicitud de escritura del bus (BusUpgr) de otro procesador, ya que este 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 invá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é se encuentra en estado modificado, ningún otro procesador puede solicitar una actualización de bus, ya que ninguno de ellos posee dicho bloque. Según la definición del estado modificado (M), solo ese procesador tiene el bloque; los demás quedan invalidados y, por lo tanto, no pueden iniciar una solicitud de actualización de bus.

Mientras se encuentra en el estado Propietario (O) y hay una solicitud de lectura con snooping (BusRd), el bloque permanece en el mismo estado mientras se vacían (Flush) los datos para que el otro procesador pueda leerlos. Con una solicitud de escritura con snooping (BusRdX), el bloque cambia de estado a inválido (I) y se vacían (Flush) los datos mientras otro procesador escribe en él, perdiendo así su propiedad sobre ese bloque. Siempre que otro procesador intente acceder a ese bloque, en lugar de ir a la memoria para acceder a él, el procesador lo toma de otra caché que ya tiene ese bloque en estado propietario (O). Con un BusUpgr, simplemente cambia el estado de propietario (O) a invá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 (poseído) en MOSI además de tener solo un estado modificado (M).

In the MSI protocol, whenever there is a read miss request to block which is in the modified (M) state, it writes back to the main memory while changing the status of the block to shared (S). But in the case of MOSI protocol, where we have an additional state (owner), whenever another processor requests for a read operation, the block changes from modified to the owned (O) state and so retains the dirty block of cache, thereby removing the need to write back to the main memory immediately.

This deferral can save bus traffic and main memory writes in certain sequences of transactions. Consider for example if a cache is M for processor 1, then processor 2 reads from it, and then processor 1 writes again to it. In MSI, the MS transition of processor 1 from the read leads to one memory write, and then the SM transition leads to a BusUpgr. On MOSI, the MO transition generates no traffic, and the OM transition also generates one BusUpgr as before. MOSI therefore dispensed the initial memory write back and associated bus traffic which MSI would do.

Comparison to MESI Protocol

Both MESI (also known as Illinois)[4] and MOSI protocols, are extensions of the MSI protocol to improve different functionalities. MOSI focuses on reducing write backs and MESI attempts to reduce the number of bus transactions required after a read and write request from another processor. The exclusive (E) state in MESI protocol implies that the cache block is valid, clean (same value as in the main memory) and cached only in one cache whereas the owned (O) state in MOSI protocol implies that the cache block is valid, potentially dirty, writable and could be present in more than one cache (all caches have the same value).

References

  1. Sorin, Daniel; Hill, Mark; Wood, David (2011). A Primer on Memory Consistency and Cache Coherence. Morgan & Claypool. pp. 119–122. ISBN 9781608455645.
  2. Solihin, Yan (2016). Fundamentals of parallel multi core architecture. RC Press, Taylor & Francis Group. ISBN 9781482211184.
  3. 12"An Evaluation of Snoop-Based Cache Coherence Protocols"(PDF).
  4. 12Yang, Q.; Bhuyan, L.N.; Liu, B.-C. (1989). "Analysis and Comparison of Cache Coherence Protocols for a Packet-Switched Multiprocessor". IEEE Transactions on Computers. 38 (8): 1143–1153. doi:10.1109/12.30868.

See also