Bus snooping

This scheme was introduced by Ravishankar and Goodman in 1983, under the name "write-once" cache coherency.

This change propagation prevents the system from violating cache coherency.

[2] There are two kinds of snooping protocols depending on the way to manage a local copy of a write operation: When a processor writes on a shared cache block, all the shared copies in the other caches are invalidated through bus snooping.

[3] This method ensures that only one copy of a datum can be exclusively read and written by a processor.

MSI, MESI, MOSI, MOESI, and MESIF protocols belong to this category.

Each value is either in main memory (which is very slow to access), or in one or more local caches (which is fast).

[1] The advantage of using bus snooping is that it is faster than directory based coherency mechanism.

The data being shared is placed in a common directory that maintains the coherence between caches in a directory-based system.

It means that the size of the (physical or logical) bus and the bandwidth it provides must grow, as the system becomes larger.

But the tag lookup disturbs the cache access by a processor and incurs additional power consumption.

A snoop filter determines whether a snooper needs to check its cache tag or not.

Another is a destination filter that is located at receiver caches and prevents unnecessary cache-tag look-ups at the receiver core, but this type of filtering fails to prevent the initial coherence message from the source.

Lastly, in-network filters prune coherence traffic dynamically inside the shared bus.