Efficient, Scalable and High Performance Mechanism for Handling IO Requests
First Claim
1. An input/output (IO) coherence unit for use in a multiprocessor system, the IO coherence unit comprising:
- an IO request handler configured to receive pending IO requests from a plurality of IO devices and to determine a next IO request for processing by the multiprocessor system;
a transaction table configured to store information about the pending IO requests such that the size of the transaction table varies according to the number of the pending IO requests,wherein the IO request handler allocates entries in the transaction table and stores information about pending IO requests to establish an order among pending IO requests having a same identifier; and
an IO response handler configured to receive a response to a pending IO request and to update an entry in the transaction table corresponding to the response, the IO response handler configured to determine an order of responses in accordance with the information in the transaction table,wherein the IO coherence unit returns the responses to the plurality of IO devices in the order determined by the IO response handler.
4 Assignments
0 Petitions
Accused Products
Abstract
A system, apparatus and method for managing input/output requests in a multi-processor system is disclosed. An IO coherence unit includes an IO request handler, a variable size transaction table, and an IO response handler. The size of the transaction table varies according to the number of pending IO requests. The IO request handler stores information about pending IO requests in the transaction table to establish an order among related requests and to permit out-of-order handling of unrelated requests. The IO response handler tracks responses to the IO requests and updates the information in the transaction table. The IO coherence unit returns responses to requesting devices in compliance with device ordering requirements.
-
Citations
31 Claims
-
1. An input/output (IO) coherence unit for use in a multiprocessor system, the IO coherence unit comprising:
-
an IO request handler configured to receive pending IO requests from a plurality of IO devices and to determine a next IO request for processing by the multiprocessor system; a transaction table configured to store information about the pending IO requests such that the size of the transaction table varies according to the number of the pending IO requests, wherein the IO request handler allocates entries in the transaction table and stores information about pending IO requests to establish an order among pending IO requests having a same identifier; and an IO response handler configured to receive a response to a pending IO request and to update an entry in the transaction table corresponding to the response, the IO response handler configured to determine an order of responses in accordance with the information in the transaction table, wherein the IO coherence unit returns the responses to the plurality of IO devices in the order determined by the IO response handler. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A method of maintaining coherence among input/output (IO) requests in a multiprocessor system, the method comprising:
-
receiving pending IO requests from a plurality of IO devices; allocating entries in a transaction table for the pending IO requests such that a size of the transaction table varies according to the number of the pending IO requests; storing information about the pending IO requests in the transaction table, including information for establishing an order among pending IO requests having a same identifier; determining a next IO request for processing by the multiprocessor system from among the pending IO requests; receiving a response to a pending IO request; updating an entry in the transaction table corresponding to the response; determining an order for returning responses to the plurality of IO devices in accordance with information stored in the transaction table; and returning responses to the plurality of IO devices in the order determined from the transaction table. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)
-
-
31. An input/output (IO) coherence unit for use in a multiprocessor system, the IO coherence unit comprising:
-
an IO request handler configured to receive pending IO requests from a plurality of IO devices and to determine a next IO request for processing by the multiprocessor system; variable-size first and second transaction tables configured to store information about the pending IO requests, including one or more linked list data structures, such that the combined size of the transaction tables varies according to the number of the pending IO requests, wherein the IO request handler detects a type of each pending IO request and allocates an entry in the first transaction table for a pending TO request that is detected as being a read request or the second transaction table for a pending IO request that is detected as being a read request; and an IO response handler configured to receive a response to a pending IO request and to update the linked list data structure corresponding to the response, the IO response handler further configured to determine an order of responses in accordance with the information in the first and second transaction tables.
-
Specification