Store operations where the cache line is already cached (ACE protocol)

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 CleanUnique
transaction on the read address channel. This removes all other copies of the cache line and writes any dirty
copy 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?

Parents
  • The behaviour depends on the nature of the cpu pipeline and of the store-to-load forwarding.

    The store, which is waiting on acquiring the rights to the cache-line, is likely held in a store buffer which the cpu (load-store unit) can possibly search to satisfy a partially- or completely- contained program-order-later load.

    If the load is completely satisfied by the store, load transactions can be avoided.

    Or, the load waits until the store is drained into the cache, and then proceeds in a manner usual for loads (reading from the line and/or issuing appropriate transactions).

    If the question is instead about two transactions to the same cache-line from one ACE master, where the first is a store and the second is a load, it seems reasonable to assume that the master will serialize them (Section: "Definition of the ordering model" of the axi4 spec) to maintain the ordering, if nothing else does.

Reply
  • The behaviour depends on the nature of the cpu pipeline and of the store-to-load forwarding.

    The store, which is waiting on acquiring the rights to the cache-line, is likely held in a store buffer which the cpu (load-store unit) can possibly search to satisfy a partially- or completely- contained program-order-later load.

    If the load is completely satisfied by the store, load transactions can be avoided.

    Or, the load waits until the store is drained into the cache, and then proceeds in a manner usual for loads (reading from the line and/or issuing appropriate transactions).

    If the question is instead about two transactions to the same cache-line from one ACE master, where the first is a store and the second is a load, it seems reasonable to assume that the master will serialize them (Section: "Definition of the ordering model" of the axi4 spec) to maintain the ordering, if nothing else does.

Children