Readunique and cleanunique transactions in ACE protocol

In case of readunique transaction cache line is copied into the initiating master's cache(whether it is clean or dirty) and invalidated in snooped master's cache and then store operaation is performed in initiating master's cache line.

In case of cleanunique transaction cache line is copied to main memory if it is dirty(and invalidate)  and then  store operation performed in initiating master's cache.

Why do we need extra write to memory in case of cleanunique transaction? 

Parents
  • The extra write is required in order for the Dirty responsibility not to be lost.  If a cache line is not the same as main memory, then one component in the system must maintain the line in a Dirty state to ensure that memory is eventually updated with the new data.

    CleanUnique is not allowed to return PassDirty = 1 to the initiating.  When the snooped master receives the CleanInvalid snoop (CleanUnique generates a CleanInvalid snoop), it must invalidate the line.  If the line is in a Dirty state, then the snooped master must either write that data back to main memory or assert PassDirty in response to the snoop.

    If it asserts PassDirty in response to the snoop, then the interconnect must take the Dirty responsibility as it cannot assert PassDirty back to the initiating master.  

Reply
  • The extra write is required in order for the Dirty responsibility not to be lost.  If a cache line is not the same as main memory, then one component in the system must maintain the line in a Dirty state to ensure that memory is eventually updated with the new data.

    CleanUnique is not allowed to return PassDirty = 1 to the initiating.  When the snooped master receives the CleanInvalid snoop (CleanUnique generates a CleanInvalid snoop), it must invalidate the line.  If the line is in a Dirty state, then the snooped master must either write that data back to main memory or assert PassDirty in response to the snoop.

    If it asserts PassDirty in response to the snoop, then the interconnect must take the Dirty responsibility as it cannot assert PassDirty back to the initiating master.  

Children
No data