Reputation: 549
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.
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
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
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