The snoop filter can respond to many of the 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, then it is considered to be a hit and the snoop is directed to the
appropriate 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 attached to the CCI-500. 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-500 is unable to insert a new
entry in an available position in the snoop filter. In the case of a conflict, an
existing entry is evicted, and the snoop filter issues a CleanInvalid snoop to the
processors that might be holding the evicted lines. This is known as a
back-invalidation, and is expected to be a rare occurrence 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.
NoteYou must ensure that masters connected to the CCI-500 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.