I'm assuming that every time you want to do a BusRead__ you have to go check the directory to see which processor caches to broadcast the message to. Does this add any significant overhead? Perhaps I am not understanding the problems behind snooping scheme broadcast. Is the problem that even if a cache does not have the cache line relevant to the broadcast, it will have to change its state to the I state, and the directory scheme avoids this unnecessary update?
The problem with snooping is this: It uses a common interconnect network (a bus) on which all the cache controllers are continuously broadcasting information about their memory accesses. This information is in the form of bus transactions. This is why snooping is not scalable to large ditributed systems.
If there are hundreds of processors and their corresponding cache controllers, a single bus will not be able to handle the traffic of all the broadcast transactions.
Please log in to leave a comment.