A mechanism and method for maintaining cache consistency in computer systems.
When
a request transfers exclusive access to a cache block from an active device D1
to a second active device D2, the sending of the data from D1 terminates
D1's access rights to the block and the reception of the data at D2 initiates
its access rights. When a request changes exclusive access to a cache block at
an active device D1 to a shared state with an active device D2, the
sending of the data from D1 terminates D1's exclusive access right
and the arrival of the data at D2 initiates its access rights. When a request
transfers a cache block from a shared state to exclusive access at an active device
D2, the access rights at all active devices other than D2 and the
active device which owns the cache block are terminated upon reception of the request,
the access right of the active device that owns the cache block is terminated when
it sends the data, and the exclusive access right at D2 is initiated when
D2 has received the data from the previous owner.