ACE:why writeunqiue/writelineunqiue cant overlap with writeback?

writeunqiue/writelineunqiue may cause a interconnection snoop,and if all master can answer a snoop(need data)back  from snoop data(cd) channel,then when cant writeunqiue/writelineunqiue overlap with writeback?

I knwon it is  forbidden becase this may cause deadlock,but why?If possible, please provide additional details. Thanks guys.

  • It is due to a potential deadlock - references below are to the AXI.H.c Specification.

    An ACE manager is allowed to delay responding to snoop until a WriteBack completes (D5.2.3).  In some cases, the ACE managers only choice is to delay responding to the snoop as it would need to invalidate the line (for example, with a ReadUnique snoop) - see the same reference as above.  If it does delay the response, then it potentially causes ordering/coherency issues.

    However, an ACE manager is not allowed to delay responding to snoop until a WriteUnique it has issued completes. .

    If the WriteBack was physically blocked behind the WriteUnique, and the manager was not able to respond to a snoop then you would have a deadlock as the WriteUnique might require the snoop to progress in order for the WriteBack to make progress.

    Using some addresses as an example:
    - M0 issues a WriteUnique to 0x10_0000
    - M0 issues a WriteBack to 0x20_0000
    - M0 receives an invalidating snoop to 0x20_0000
    - M0 receives a snoop to 0x10_0000

    - M0 cannot respond to snoop 0x20_0000 until the WriteBack completes.
    - The WriteBack requires the WriteUnique to make progress in order to complete.
    - The WriteUnique cannot complete as it would be address hazarding on the transaction that caused the snoop to 0x10_0000, and that requires the snoop to 0x10_0000 to complete.
    - The snoop to 0x10_0000 cannot complete until the snoop to 0x20_0000 completes.
    - Deadlock.