ACE protocol : Eviction and snoop request at same time

How to handle below scenario ?

  • At time t1 let us suppose L1 data cache is evicting a line and write address is sent on write address channel by asserting AWVALID (AWREADY is high)
  • At same time t1, there is a snoop request from interconnect on snoop address channel with ACVALID signal asserted but ACREADY signal is low.
  • Both write address and snoop address are same, let us say address is ‘X’.
    • From Data cache point of view eviction address is accepted by the interconnect and eviction is in progress (write address channel)
    • From Interconnect point of view snoop request is issued on the channel and request will not be modified until there is ready signal from Data cache (snoop address channel)
    • In this case when snoop request is accepted by the Data cache, snoop address ‘X’ will not be present in Data cache.

Consider interconnect has snoop filter. As per the snoop filter the snoop request should be hit in cache but it will be a miss in this case.

Questions :

  1. Since data cache evicted the line, should it give snoop response indicating that line is not present in cache ?
  • This is described in Section D5.2.3 of the ACE Specification.  The master that's being snooped can either:

    • Give a snoop response with PassDirty deasserted and IsShared asserted, which does not pass permission to store to the line and does not pass responsibility for updating memory.

    • Delay the snoop response until the snooped master has completed the update to main memory.

    For an eviction (i.e. a WriteBack), it's more likely to perform the second point.  In this case, it will return a missed snoop response only after the eviction has completed.  The interconnect can then fetch this data from main memory.

More questions in this forum