Snoopy Cache
From L08. The simplest transport mechanism for cache-coherence messages (vs a directory). Called “Snoopy” because each cache controller spies on what the others are doing over the shared bus, no central state, no explicit notifications.
All CPUs connect to a shared bus. On any memory write, the other CPU controllers watch (“snoop”). If a snooping cache holds the same memory location, it must take action, either invalidate (most common) or update the local copy.
Invalidate vs. update
- Air Canada emailing “Departure revised to 22:00” = update
- Deutsche Bahn emailing “Something changed; check the app” = invalidate
Either works for keeping you up to date, you just don’t get to choose which one the hardware uses.
On a read miss, a cache can effectively ask the others whether they have this block, and pull it from whoever does, otherwise from memory. The “update” action is called the write-broadcast protocol, it avoids the follow-up miss after invalidation but uses far more bus bandwidth.
Snoop Control Unit
The coherency controller inside each cache is sometimes called a Snoop Control Unit (SCU) (I saw this at NVIDIA).