jkang
jkang

Reputation: 549

MOESI Protocol: What happens when Owned is dirty and other processors read the line in Shared?

I've been thinking about the "owned" state of the MOESI protocol. So let's say the following situation exists:

P0 has line A in O state. P1 has line A in S state.

  1. P0 writes to line A in its local cache.
  2. P1 then reads line A for local processing.

The data that P1 reads is now outdated. In a MESI protocol (or a MESIF protocol), anytime a processor can write to a cacheline, it is guaranteed that other processors will have to snoop the line out before assuming the data is correct. But that doesn't seem to be the case for MOESI.

What am I missing here?

Upvotes: 0

Views: 153

Answers (2)

Erkmen
Erkmen

Reputation: 56

Only E and M stated cache line could be modified silent. You can not make a silent write operation to an O stated cache line.

O state is the transformation of M state, when any other hart requests for it. M stated cache responds and goes to O state. O state is different from S because of it has the write back responsibility.

Upvotes: 2

Peter Cordes
Peter Cordes

Reputation: 365507

https://en.wikipedia.org/wiki/MOESI_protocol explains that your scenario is impossible:

Owned
This line is one of several copies in the system. This cache does not have permission to modify the copy ...

It "owns" the responsibility for writing-back the dirty data, but it doesn't have exclusive ownership so it can't modify it until after sending out an Invalidate request and receiving acknowledgements. (Like an RFO (Read For Ownership) but without needing to have the data sent.)

This is what makes O state different from M or E state.

Upvotes: 0

Related Questions