Claims
- 1. A method comprising:
transmitting, from a first peer node, a request for a copy of a block of data to multiple nodes in a multi-node system; receiving, with the first peer node, a request for a copy of a block of data from a second peer node; determining whether the received request conflicts with the transmitted request; and transmitting a message to a home node for the block of data indicating a conflict exists if the received request conflicts with the transmitted request.
- 2. The method of claim 1 wherein determining whether the received request conflicts with the transmitted request comprises determining whether the received request and the transmitted request request the same data.
- 3. The method of claim 1 further comprising transmitting a message to a third peer node for the block of data indicating a conflict exists if the received request conflicts with the transmitted request
- 4. The method of claim 1 wherein the message to the home node causes the home node to transmit a message to a third peer node to cause the third peer node to transmit the requested data to the first peer node.
- 5. The method of claim 1 wherein the first peer node communicates with the second peer node via a peer agent that represents multiple peer nodes.
- 6. The method of claim 1 wherein the first peer node communicates with the home node via a home agent that represents multiple nodes.
- 7. An apparatus comprising:
an interface to be coupled with multiple system entities in system having multiple peer entities and a home entity; and a control circuit coupled with the interface to transmit a request for a copy of a block of data to one or more of the peer entities, the control circuit to detect conflicting request messages received from other peer entities, wherein in response to a conflicting request message, the control circuit sends a message indicating a conflict to a home node corresponding to the block of data.
- 8. The apparatus of claim 7 wherein the peer entities comprise one or more peer nodes and one or more peer agents that represent multiple peer nodes.
- 9. The apparatus of claim 7 wherein the home entity comprises a home node.
- 10. The apparatus of claim 7 wherein the home entity comprises a home agent that represents multiple nodes.
- 11. The apparatus of claim 7 further comprising a processor coupled with the interface.
- 12. The apparatus of claim 11 wherein the control circuit is included within the processor.
- 13. The apparatus of claim 7 wherein the control circuit provides copies of requested data to requesting peer nodes, if the requests do not conflict with requests made by the control circuit.
- 14. A method comprising:
transmitting, with a first peer node, a first request message to request a copy of a block of data, to at least a peer node and a home node corresponding to the requested block of data; transmitting, with a second peer node, a second request message to request a copy of the block of data to at least the first peer node and the home node, and to a third peer node; transmitting, from the third peer node to the first peer node, a copy of the block of data; transmitting from the first peer node to the home node, a message indicating receipt of the block of data from the third peer node; transmitting, from the first peer node to the second peer node, a copy of the block of data; and transmitting, from the second peer node to the home node, a message indicating receipt of the block of data from the second peer node.
- 15. The method of claim 14 wherein the block of data comprises a cache line.
- 16. The method of claim 14 wherein the first request message is transmitted to an agent that represents multiple nodes.
- 17. The method of claim 14 wherein the second request message is transmitted to an agent that represents multiple nodes.
- 18. The method of claim 14 wherein transmitting, from the third peer node to the first peer node, a copy of the block of data comprises changing a state of the block of data, if any, retained by the third peer node.
- 19. The method of claim 14 wherein transmitting, from the first peer node to the second peer node, a copy of the block of data comprises changing a state of the block of data, if any, retained by the first peer node.
- 20. A method comprising:
transmitting a first request message to request a copy of a block of data from a first peer node to at least a second peer node, a third peer node, and a home node corresponding to the block of data; transmitting, from the second peer node, a second request for a copy of the block of data, to the first peer node, the third peer node and the home node, wherein the second request message is transmitted before the second node receives the first request message; transmitting, from the first peer node to the second peer node, a message indicating a conflict between the first request message and the second request message; transmitting, from the third peer node to the first peer node, a copy of the block of data; transmitting, from the first node to the home node, a message indicating a conflict between the first request message and the second request message; and transmitting, from the home node to the first peer node, a message to cause the first peer node to transmit a copy of the block of data to the second node.
- 21. The method of claim 20 further comprising transmitting, from the first peer node to the second peer node, a copy of the block of data.
- 22. The method of claim 21 further comprising transmitting, from the second peer node to the first peer node, a message indicating a conflict between the second request message and the first request message.
- 23. The method of claim 21 wherein transmitting, from the first peer node to the second peer node, a copy of the block of data comprises changing a state of the block of data, if any, retained by the first peer node.
- 24. The method of claim 20 wherein the block of data comprises a cache line.
- 25. The method of claim 20 wherein the first request message is transmitted to an agent that represents multiple nodes.
- 26. The method of claim 20 wherein the second request message is transmitted to an agent that represents multiple nodes.
- 27. A method comprising:
transmitting a first request message to request a copy of a block of data from a first peer node to a second peer node, a third peer node and a home node corresponding to the block of data, wherein the message to the third peer node is delayed; transmitting, from the second peer node to the first peer node, the third peer node and the home node, a second request message to request a copy of the block of data, wherein the second request message is transmitted by the second peer node before the delayed first message is received by the third peer node; transmitting, from the second peer node to the first peer node, a message indicating a conflict between the first message and the second message; transmitting, from the third peer node to the second peer node, a copy of the block of data; transmitting, from the second peer node to the home node, a message indicating a conflict between the first request message and the second request message; and transmitting, form the home node to the second peer node, a message to cause the second peer node to transmit a copy of the block of data to the first peer node.
- 28. The method of claim 27 further comprising transmitting, from the second peer node to the first peer node, a copy of the block of data.
- 29. The method of claim 27 wherein the block of data comprises a cache line.
- 30. The method of claim 27 wherein the first node transmits the first request message to an agent that represents multiple nodes.
- 31. The method of claim 27 wherein the second node transmits the second request message to an agent that represents multiple nodes.
- 32. The method of claim 27 wherein transmitting, from the third peer node to the second peer node, a copy of the block of data comprises changing a state of the block of data, if any, retained by the first peer node.
- 33 A method comprising:
transmitting, from a first peer node to a second peer node and to a home node, a first message to request a copy of a block of data; transmitting, from a second peer node to the first peer node and to the home node, a second request for a copy of the block of data; transmitting, from the first peer node to the second peer node, a message indicating a conflict between the first message and the second message; transmitting, from the second node to the first node, a message indicating that the second node does not have a valid copy of the block of data; transmitting, from the home node to the first peer node, a copy of the block of data; and transmitting, from the home node to the first peer node, a message to cause the first peer node to transmit a copy of the block of data to the second peer node.
- 34. The method of claim 33 further comprising transmitting, from the second peer node to the first peer node, a message indicating a conflict between the second message and the first message.
- 35. The method of claim 33 further comprising transmitting, from the first peer node to the second peer node, a message indicating that the first peer node does not have a valid copy of the block of data.
- 36. The method of claim 35 further comprising transmitting, from the second peer node to the home node, a message indicating a conflict between the first request and the second request.
- 37. The method of claim 33 wherein the block of data comprises a cache line.
- 38. The method of claim 33 wherein the home node transmits a copy of the block of data and the message to cause the first peer node to transmit a copy of the block of data to the second peer node as a single message.
- 39. The method of claim 33 wherein the first message is transmitted to an agent that represents multiple nodes.
- 40. The method of claim 39 wherein the second message is transmitted to the agent that represents multiple nodes.
RELATED APPLICATIONS
[0001] The present U.S. Patent application is related to the following U.S. Patent applications filed concurrently:
[0002] (1) Application No. 10/XXX,XXX (Docket No. P13983), filed ______, 2002, entitled “FORWARD STATE FOR USE IN CACHE COHERENCY IN A MULTI-NODE SYSTEM”
[0003] (2) Application No. 10/XXX,XXX (Docket No. P13984), filed ______, 2002, entitled “HIERARCHICAL DIRECTORIES FOR CACHE COHERENCY IN A MULTIPROCESSOR SYSTEM”
[0004] (3) Application No. 10/XXX,XXX (Docket No. P13985), filed ______, 2002, entitled “HIERARCHICAL VIRTUAL MODEL OF A CACHE HIERARCHY IN A MULTIPROCESSOR SYSTEM”
[0005] (4) Application No. 10/XXX,XXX (Docket No. P13986), filed ______, 2002, entitled “NON-SPECULATIVE DISTRIBUTED CONFLICT RESOLUTION FOR A CACHE COHERENCY PROTOCOL”