as far as I understand, ReadUnique results from store instruction execution, which gets cacheline missed in local cache from peer core's cache or memory. After ReadUnique finishes, the write data is stored into new cacheline and its state transitions to UD. But as per CHI SPEC shown as below, the final state is UC if not PASS DIRTY or UD if PASS DIRTY. it seems like the data store is not taken into account.
why?
This should not be a realistic possibility.
If the RN is required to store to a cache line and issues a ReadUnique, then there should be no reason why it does not store to the line when the ReadUnique completes (ignoring exclusive sequences). If an RN delays storing to a cache line, then it is always at risk of losing the cache line before it has performed the store.
The general point here is that there is no requirement that a ReadUnique finishes in a Dirty state, as the RN is not required to update the cache line. If the RN does wish to update the cache line, then it should do this immediately.