A channel-based mechanism resolves race conditions in a computer system between
a first processor writing modified data back to memory and a second processor trying
to obtain a copy of the modified data. In addition to a Q0 channel for carrying
requests for data, a Q1 channel for carrying probes in response to Q0
requests, and a Q2 channel for carrying responses to Q0 requests,
a new channel, the QWB channel, which has a higher priority than Q1 but
lower than Q2, is also defined. When a forwarded Read command from the second
processor results in a miss at the first processor's cache, because the requested
memory block was written back to memory, a Loop command is issued to memory by
the first processor on the QWB virtual channel. In response to the Loop command,
memory sends the written back version of the memory block to the second processor.