Read completion data management
First Claim
Patent Images
1. A method of managing read completions in response to multiple read requests from a client, comprising:
- tracking an order of the multiple read requests in a read request buffer;
generating first and second subrequests for each of the multiple read requests;
storing data fragments associated with the multiple read requests at locations within multiple read return buffers;
storing pointers to the locations within the multiple read return buffers where the data fragments are stored;
tracking completion of the first and second subrequests for each of the multiple read requests when data fragments associated with the multiple read requests have returned and stored in the multiple read return buffers, to determine whether the multiple read requests have completed;
examining an in-order first-in-first-out (FIFO) unit to determine whether a first read request of the multiple read requests generated by an in-order client has completed in-order, when the first read requests has completed;
storing an index for a second read requests of the multiple read requests generated by an out-of-order client, when the second read request has completed; and
reading out data fragments associated with the multiple read requests from the multiple read return buffers using the stored addresses and based on the tracked order of the multiple read requests.
1 Assignment
0 Petitions
Accused Products
Abstract
An input/output unit for a computer system that is interfaced with a memory unit having a plurality of partitions manages completions of read requests in the order that they were made. A read request buffer tracks the order in which the read requests were made so that read data responsive to the read requests can be completed and returned to a requesting client in the order the read requests were made.
-
Citations
19 Claims
-
1. A method of managing read completions in response to multiple read requests from a client, comprising:
-
tracking an order of the multiple read requests in a read request buffer; generating first and second subrequests for each of the multiple read requests; storing data fragments associated with the multiple read requests at locations within multiple read return buffers; storing pointers to the locations within the multiple read return buffers where the data fragments are stored; tracking completion of the first and second subrequests for each of the multiple read requests when data fragments associated with the multiple read requests have returned and stored in the multiple read return buffers, to determine whether the multiple read requests have completed; examining an in-order first-in-first-out (FIFO) unit to determine whether a first read request of the multiple read requests generated by an in-order client has completed in-order, when the first read requests has completed; storing an index for a second read requests of the multiple read requests generated by an out-of-order client, when the second read request has completed; and reading out data fragments associated with the multiple read requests from the multiple read return buffers using the stored addresses and based on the tracked order of the multiple read requests. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method of managing read completions in response to read requests from multiple clients, comprising:
-
receiving multiple read requests from multiple clients, the multiple clients including at least one in-order client that requires read requests to be completed in the order they were issued; tracking in a read request buffer an order of multiple read requests that are received from each of the in-order clients; generating subrequests for each read request; storing data fragments responsive to the multiple read requests in an addressable memory; storing addresses of the addressable memory at which the data fragments have been stored in an address memory; tracking completion of the subrequests for each read request when data fragments associated with the subrequests have returned and stored in the addressable memory, to determine whether the multiple read requests have completed; examining an in-order first-in-first-out (FIFO) unit to determine whether a first read request of the multiple read requests generated by an in-order client has completed in-order, when the first read requests has completed; storing an index for a second read requests of the multiple read requests generated by an out-of-order client, when the second read request has completed; and for read requests from an in-order client, reading out data fragments associated with said read requests from the addressable memory using the addresses stored in the address memory and based on the order of the read requests as tracked for said in-order client. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15)
-
-
16. A computer system comprising:
-
a memory unit divided into a plurality of partitions; a plurality of clients that generate requests to read data from the memory unit; and an input/output unit having a read request buffer for tracking an order of read requests received from one of the clients, wherein the input/output unit is configured to return completed read data to said one of the clients in accordance with the tracked order, and wherein the input/output unit is configured to generate a first subrequest and a second subrequest for each read request, wherein the input/output unit is coupled to the memory unit through a plurality of memory interfaces and includes;
multiple read return buffers, each of which is coupled to one of the memory interfaces, for storing data fragments returned through said one of the memory interfaces, a pointer memory that stores addresses of locations within the multiple read return buffers in which the data fragments are stored, a scoreboard memory for tracking completion of the requests to read data, the scoreboard memory indicates when data fragments associated with each read request have returned and stored in the multiple read return buffers to determine whether the requests have completed, an arbiter unit that examines an in-order first-in-first-out (FIFO) unit to determine whether a first read request of the read requests generated by an in-order client has completed in-order, when the first read requests has completed, the arbiter unit also stores an index for a second read requests of the read requests generated by an out-of-order client, when the second read request has completed, and a read data packer that reads out data fragments associated with a read request from the read return buffers using the addresses stored in the pointer memory, assembles the data fragments that have been read out, and returns the assembled data fragments to a requesting client as completed read data. - View Dependent Claims (17, 18, 19)
-
Specification