Atomicity
Even with atomic bus the protocol requires multiple operations by multiple controllers, and multiple requests can be outstanding at once
P1 wants to perform a BusRdX but cannot get access, meanwhile P2 is performing a BusRd on data P1 has modified
Consider two caches simultaneously issuing write to same block they hold shared
- P1 promotes S-->M and issues upgrade
- P2 does too, but wins arbitration
- P1 downgrades M--> I, but upgrade request till out
- P1’s revises to be BusRdX
- Therefore, snoop against requests