I think a good way to think of the distinction is this: In this protocol a processor's cache doesn't get the new value to be written from a BusRdX, instead it gets the knowledge that it must move to the invalid state.
BusRd means shouting to everyone who has something "I am reading this, so make sure you have it marked as shared, and flush it if you've modified it."
BusRdX means shouting to everyone who has something "I am going to write to this, so make sure you have it marked as invalid, and flush it if you've modified it."
For clarification: BusRdX is a bus write.
BusRdX is a bus read with the intention to write
I think a good way to think of the distinction is this: In this protocol a processor's cache doesn't get the new value to be written from a BusRdX, instead it gets the knowledge that it must move to the invalid state.
BusRd means shouting to everyone who has something "I am reading this, so make sure you have it marked as shared, and flush it if you've modified it."
BusRdX means shouting to everyone who has something "I am going to write to this, so make sure you have it marked as invalid, and flush it if you've modified it."