When reading about cache coherence systems (e.g. MESI) I've not a clear understanding about the timing involved.
Consider the case in which a Core1 wants to write to a cache line in state MESI S on its local cache. The local cache controller has to initiate an RFO to invalidate that line on all other caches in the cache coherence domain.
I believe all cache transactions are actually based on a clock interval so in the clock interval in which the RFO takes place other Cores (e.g. Cores2) are not allowed to read that cache line from their local cache (even if before the RFO takes place that line was locally in S MESI state).
Can you help me in understanding how things works from a clock timing point of view ?