ARM Technical Support Knowledge Articles

Why is UniqueClean an illegal end state for WriteUnique and WriteLineUnique transactions?

Applies to: ACE

Answer

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:

Note: If a protocol did allow the master to hold the line in the UniqueClean state, then it would require an interconnect to either:

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.

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential