Let's say we have a multi core machine. Core 1 tries to write to variable X, it doesn't have that variables cache line in its L1d cache so it broadcasts a RFO . In the mean time, it writes the store into the store buffer in core 1 as it didn’t get acks from every core for exclusive ownership of the cache line containing X.
Now, Core 1 gets request for ownership of cache line where X is.
(Imagine that now core 2 is trying to modify variable X - maybe this is a shared counter that the threads are doing a x+=local_count
on)
Will the core ack this request and store it in the invalidation queue or will the core not respond to it since it is still in the middle of a phase transition to exclusive mode? I feel like resolving either of the scenarios might involve some overhead and bookkeeping unless I am missing something very basic.