High-performance streaming of ordered write stashes to enable optimized data sharing between I/O masters and CPUs
First Claim
1. A method for transferring ordered data from a source device to a target device in a data processing network, where the source device is coupled to a Request Node of the data processing network, the method comprising:
- receiving, by the Request Node, a first write request from the source device, where the first write request is targeted to the target device and is associated with a stream identifier;
sending, by the Request Node to a Home Node of the data processing network, a second write request;
sending, by the Home Node to the Request Node responsive to the second write request, a write data buffer credit message, identifying a data buffer for receiving data to be written, and a completion message indicating completion by the Home Node;
sending, by the Request Node to the Home Node responsive to the write data buffer credit message, the data to be written;
sending, by the Request Node to the Home Node responsive to the completion message, a first completion acknowledgement message;
sending, by the Home Node to the target device responsive to the first completion acknowledgement message, the data to be written; and
sending, by the target device to the Home Node responsive to receiving the data to be written, a second completion acknowledgement message;
where the first completion acknowledgement message is not sent by the Request Node until completion messages for all write requests older than the first write request and having the same stream identifier as the first write request have been received by the Request Node.
1 Assignment
0 Petitions
Accused Products
Abstract
A data processing network and method of operation thereof are provided for efficient transfer of ordered data from a Request Node to a target node. The Request Node send write requests to a Home Node and the Home Node responds to a first write request when resources have been allocated the Home Node. The Request Node then sends the data to the written. The Home Node also responds with a completion message when a coherency action has been performed at the Home Node. The Request Node acknowledges receipt of the completion message with a completion acknowledgement message that is not sent until completion messages have been received for all write requests older than the first write request for the ordered data, thereby maintaining data order. Following receipt of the completion acknowledgement for the first write request, the Home Node sends the data to be written to the target node.
-
Citations
25 Claims
-
1. A method for transferring ordered data from a source device to a target device in a data processing network, where the source device is coupled to a Request Node of the data processing network, the method comprising:
-
receiving, by the Request Node, a first write request from the source device, where the first write request is targeted to the target device and is associated with a stream identifier; sending, by the Request Node to a Home Node of the data processing network, a second write request; sending, by the Home Node to the Request Node responsive to the second write request, a write data buffer credit message, identifying a data buffer for receiving data to be written, and a completion message indicating completion by the Home Node; sending, by the Request Node to the Home Node responsive to the write data buffer credit message, the data to be written; sending, by the Request Node to the Home Node responsive to the completion message, a first completion acknowledgement message; sending, by the Home Node to the target device responsive to the first completion acknowledgement message, the data to be written; and sending, by the target device to the Home Node responsive to receiving the data to be written, a second completion acknowledgement message; where the first completion acknowledgement message is not sent by the Request Node until completion messages for all write requests older than the first write request and having the same stream identifier as the first write request have been received by the Request Node. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
where the data to be written is not sent from the Home Node to the target device until the response to the snoop message is received by the Home Node.
-
-
6. The method of claim 1, where the first write request comprises a stash request and where the data to be written is stored in a unique-dirty coherence state at the target device.
-
7. The method of claim 1, further comprising:
-
detecting, by the Request Node, deadlock resulting from resource conflict in an interconnect of the data processing network; sending, by the Request Node to the Home Node, a message to cancel the first write request; sending, by the Home Node responsive to the message to cancel the first write request, a snoop request to a memory controller to retrieve a latest copy of the data associated with an address of the data to be written; and receiving, by the Home Node from the memory controller, the latest copy of the data associated with the address of the data to be written; where the latest copy of the data associated with an address of the data to be written is sent to the target device instead of the data to be written.
-
-
8. The method of claim 1, where the source device comprises an input/output device, an accelerator device, or a graphics processing unit.
-
9. The method of claim 1, further comprising the Home Node freeing the data buffer responsive to the second completion acknowledgement message.
-
10. A method for transferring ordered data of a data stream from a Request Node to a target device in a data processing network, the method comprising:
-
sending, by the Request Node to one or more Home Nodes of the data processing network, a plurality of first write requests; for each first write request of the plurality of first write requests; sending, by a Home Node of the one or more Home Nodes to which the first write request was sent, a write data buffer credit message, identifying a data buffer for receiving data associated with the first write request, and a completion message indicating completion by the Home Node; sending, by the Request Node to the Home Node responsive to the write data buffer credit message, data to be written; sending, by the Request Node to the Home Node responsive to the completion message, a first completion acknowledgement message; sending, by the Home Node to the target device responsive to the first completion acknowledgement message, the data to be written; and sending, by the target device to the Home Node responsive to receiving the data to be written, a second completion acknowledgement message; where the first completion acknowledgement message is not sent by the Request Node until completion messages for all older write requests of the data stream have been received by the Request Node. - View Dependent Claims (11, 12, 13, 14, 15, 16)
where data associated with the first write request is not sent from the Home Node to the target device until the response to the snoop message is received by the Home Node.
-
-
14. The method of claim 10, where the plurality of first write requests comprise stash requests and where the data associated with the first write requests is stored in a unique-dirty coherence state at the target device.
-
15. The method of claim 10, further comprising:
-
detecting, by the Request Node, deadlock resulting from resource conflict in an interconnect of the data processing network; sending, by the Request Node to a Home Node of the one or more Home Nodes, a message to cancel a first write request of the plurality of first write requests; sending, by the Home Node responsive to the message to cancel the first write request, a snoop request to a memory controller to retrieve a latest copy of the data associated with an address of the data to be written; and receiving, by the Home Node from the memory controller, the latest copy of the data associated with the address of the data of the cancelled first write request; where the latest copy of the data of the cancelled first write request is sent to the target device instead of the data associated with the first write request.
-
-
16. The method of claim 10, where the ordered data of the data stream is received at the Request Node from an input/output device, an accelerator device, or a graphics processing unit.
-
17. A data processing network comprising:
-
Target Node; a Request Node configured for receiving a first write request from a source device for data to be written to the Target Node, the data associated with an ordered data stream and the first write request associated with a data stream identifier; a Home Node that provides a point of coherency for the data processing network, where the Home Node is coupled to the Target Node and the Request Node via an interconnect; where the Request Node is configured for; sending a second write request to the Home Node responsive to the first write request from the source device; receiving, from the Home Node responsive to the second write request, a write data buffer credit message, identifying a data buffer for receiving the data to be written, and a completion message; sending, to the Home Node responsive to the write data buffer credit message, the data to be written; and sending, to the Home Node responsive to the completion message, a first completion acknowledgement message, where the first completion acknowledgement message is not sent until completion messages for all write requests that are older than the first write request and are associated with the same data stream identifier as the first write request have been received by the Request Node; where the Home Node is configured for sending the data to be written to the Target Node responsive to the first completion acknowledgement message; and where the Target Node is configured for sending a second completion acknowledgement message to the Home Node responsive to receiving the data to be written. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25)
-
Specification