A computer system supports a first set of processors configured to operate in
a
dirty-shared mode and a second set of processors configured to operate in a non
dirty-shared mode. The computer system may include a portion of shared memory that
stores data in terms of memory blocks. Upon receiving a snoop read requesting shared
access to a memory block held in a dirty state, a dirty-shared processor sends
a copy of the memory block to the originator of the snoop read and retains a valid
a copy of the block in its cache. Non dirty-shared processors additionally write
the block back to main memory in response to snoop reads and may also send a copy
to the originator. Until the write back is completed at main memory or another
processor is granted write access to the block, the dirty-shared and non dirty-shared
processors preferably continue to satisfy sub-sequent snoop reads targeting the
memory block.