One thing which came to mind after seeing 'broadcast' in the past few slides is that the invalidation protocol is similar to the CAN bus protocol where the message is always broadcasted to every node in the CAN network.
In snooping based schemes, different caches may own a line (corresponding to the same data) with different status. In a large distributed system, this causes overhead to maintain the cache coherence. That's why we introduce directories.
At what point (how many processors, what is the memory size) does a directory based implementation have an advantage over a snooping based implementation of cache coherence?