|ARM Technical Support Knowledge Articles|
Applies to: ACE
The ACE protocol requires that if a cache line is allocated when the master issues a WriteUnique or WriteLineUnique transaction, then the cache line is held in the SharedClean state. This outcome often causes confusion since these transactions invalidate any copies of the cache line that are held by other masters, and so it would seem logical to leave the initiating master with the line held in the UniqueClean state.
The reason for the SharedClean requirement relates to how the interconnect processes write transactions.
For WriteBack and WriteClean transactions, the interconnect provides a nonblocking path to memory because these transactions do not generate any snoops. However, for WriteUnique or WriteLineUnique transactions, the interconnect must snoop the other masters to invalidate copies of the cache line, before it can issue the write downstream. Also, for WriteUnique transactions, if another master holds the line in the SharedDirty state, their data must be combined with the WriteUnique data and issued downstream.
The SharedClean state is required, because this state prevents a master from issuing a WriteBack transaction that could overtake the write transactions that are associated with the WriteUnique or WriteLineUnique, due to the nonblocking path.
In the SharedClean state, if the master wants to perform a write it must issue another WriteUnique or issue a transaction that results in the UniqueClean state such as ReadUnique or MakeUnique.
The ACE protocol enables an interconnect to issue the WriteUnique transaction response before it generates all of the associated writes to memory, provided:
In practice, the types of masters that use WriteUnique or WriteLineUnique transactions are:
None of these masters would benefit from being able to hold the cache line in the UniqueClean state.
Did you find this article helpful? Yes No
How can we improve this article?