MOESI protocol

This avoids the need to write modified data back to main memory before sharing it.

This protocol, a more elaborate version of the simpler MESI protocol, avoids the need to write a dirty cache line back to main memory when another processor tries to read it.

If a cache line is clean with respect to memory and in the shared state, then there is no obvious single candidate cache to respond to a read request, so it is normal to let the read request be filled from memory.

(This is solved by the MESIF protocol, which may be combined with MOESI to make MOESIF.)

The latter reduces cache traffic if there are multiple active readers of e.g. a heavily contended lock; one broadcast write is less communication than separate replies to a thundering herd of read requests.