In Section C1.3 Channel Overview of the AMBA_AXI_and_ACE protocol specifications, It is mentioned under "Store operations where the cache line is already cached" as :
The initiating master component requests a unique copy of the cache line by issuing a CleanUniquetransaction on the read address channel. This removes all other copies of the cache line and writes any dirtycopy to main memory.
Consider that our initiating master has a clean, shared copy. There is another master having a dirty, shared copy.
Now the initiating master issues a CleanUnique transaction on the Read Address Channel. Since the snooped master has had a dirty copy, the interconnect constructs a transaction to write the cacheline to the main memory, and provides a response to the initiating master.
Now at this point in time, the initiating master has a copy that is no more clean, since the copy it has with itself is modified relative to the main memory; and the previously dirty cacheline was not provided to the initiating master.
The next step mentioned is that the master performs a store and uses the RACK signal to indicate that the transaction has been completed.
This seems ambiguous since the initiating master performed a store even when it's copy of the cacheline, though unique ; wasn't clean.
Am I missing something?
That is correct , but why it is required ? Like in readunique case , we also can send copy of cache line directly to initiating master itself right?