These are caches that spy on each other. Each CPU is connected to a BUS and each snoops to observe writes to memory (we can see if memory is being updates). Need need a cache controlled for every CPU.

Each CPU reads the bus to see if any memory operation is relevant (is that memory location in their cache). If it is, the controller takes appropriate action. Action is defined in Cache Coherency.