The snoop filter can respond to snoop transactions in the case of a miss, and
snoop appropriate masters only in the case of a hit. Snoop filter entries are maintained
by observing transactions from ACE masters to determine when entries have to be
allocated and deallocated.
The snoop filter can respond to multiple coherency requests without it being
necessary to broadcast to all ACE interfaces. For example, if the address is not in any
cache, the snoop filter responds with a miss and directs the request to memory. If the
address is in a processor cache, the request is considered a hit and is directed to the
ACE port containing that address in its cache.
ARM® recommends that you configure the snoop filter directory to be 0.75-1 times
the total size of exclusive caches of processors that are attached to the CCI-550. The snoop filter is 8-way
set associative and, to minimize conflicts, stores twice as many tags as the configured
size. An example of a conflict is when the CCI-550 is unable to insert a new
entry in an available position in the snoop filter. If a conflict occurs, an existing
entry is evicted, and the snoop filter issues a CleanInvalid snoop to processors that
might be holding the evicted lines. This type of eviction is known as a
back-invalidation, and is expected to occur rarely if you configure the snoop filter
size as ARM recommends.
The snoop filter is updated by monitoring transactions from the attached
masters, that allocate and deallocate data into their caches. In the ACE protocol, the
deallocation of clean data is indicated using the Evict transaction.
NoteEnsure that masters connected to the CCI-550 issue Evict transactions
when they deallocate clean data. For ARM processors, you can control the issuing of
Evict transactions using bit of the L2 Auxiliary Control Register.