Arbitration system based on requester class and relative priority including transmit descriptor valid bit for a shared resource having multiple requesters
First Claim
1. A system for arbitrating between multiple requests for a shared resource, comprising:
- first determining means for determining a priority of each request in a first request class, said first request class consisting of transmit data requests to use said shared resource, by generating a priority vector associated with each transmit data request, higher values of said priority vector indicating higher priority, said priority vector including a predicted latency field, a contents of said predicted latency field equal to a time period estimated to have elapsed since a last previous transmission on a virtual circuit associated with said each transmit data request at a subsequent time when transmit data for said data request is read from a host memory into a network adapter, and by comparing said priority vector of each said request in said first request class;
second determining means for determining a high or a low priority of each request in a second request class, said second request class consisting of receive data requests to use said shared resource;
first selecting means, responsive to said first determining means, for selecting a first selected request equal to one of said requests in said first request class having a highest priority;
second selecting means, responsive to said second determining means, for selecting a second selected request equal to one of said requests in said second request class having a high priority; and
weighted arbitration means, for choosing between said first selected request and said second selected request based on a 1 of N round robin arbitration, said second selected request selected once every N times said shared resource is available, and N is a predetermined integer.
2 Assignments
0 Petitions
Accused Products
Abstract
In accordance with principles of the invention, there is provided an arbitration system for multiple requesters of a shared data transfer resource, such as a system bus or a peripheral bus. The disclosed system arbitrates among multiple classes of requesters which are divided into multiple levels of a request hierarchy. In the example embodiment, the multiple requesters include logic for processing received data from the network, logic for processing data to be transmitted onto the network, logic for moving transmit and receive descriptors between the host memory and the adapter, logic for reporting status from the adapter to the host, and logic for generating an error and maintenance status update from the adapter to the host. The new system ensures fairness between transmit and receive processes, that FIFOs associated with transmit queues are not underrun, and further than notification of non-error and maintenance status changes are processed with minimal latency.
-
Citations
8 Claims
-
1. A system for arbitrating between multiple requests for a shared resource, comprising:
-
first determining means for determining a priority of each request in a first request class, said first request class consisting of transmit data requests to use said shared resource, by generating a priority vector associated with each transmit data request, higher values of said priority vector indicating higher priority, said priority vector including a predicted latency field, a contents of said predicted latency field equal to a time period estimated to have elapsed since a last previous transmission on a virtual circuit associated with said each transmit data request at a subsequent time when transmit data for said data request is read from a host memory into a network adapter, and by comparing said priority vector of each said request in said first request class;
second determining means for determining a high or a low priority of each request in a second request class, said second request class consisting of receive data requests to use said shared resource;
first selecting means, responsive to said first determining means, for selecting a first selected request equal to one of said requests in said first request class having a highest priority;
second selecting means, responsive to said second determining means, for selecting a second selected request equal to one of said requests in said second request class having a high priority; and
weighted arbitration means, for choosing between said first selected request and said second selected request based on a 1 of N round robin arbitration, said second selected request selected once every N times said shared resource is available, and N is a predetermined integer. - View Dependent Claims (2, 3, 4, 5, 6, 7)
said shared resource is a Direct Memory Access logic within a network adapter, said Direct Memory Access logic coupled with a data bus in a host computer system;
said first request class consists of transmit data requests to use said Direct Memory Access logic to read transmit data from said host memory in said host computer system, said transmit data to be transmitted onto a network coupled with said network adapter; and
said second request class consists of receive data requests to use said Direct Memory Access logic to write receive data from said network adapter into said host memory.
-
-
3. The system as in claim 2, further comprising:
-
one or more Receive Queues for indicating reassembled packets received into said network adapter from said network and stored in a Reassembly Memory;
each said receive data request is associated with one of said Receive Queues; and
wherein said second determining means determines that a given receive data request is high priority if the occupancy level of said Reassembly memory is greater than a predetermined amount.
-
-
4. The system as in claim 1, wherein said a subsequent time when transmit data for said data request is read from said host memory into said network adapter is 4 cell times from a current time when said priority vector is generated.
-
5. The system as in claim 1, wherein said a subsequent time when transmit data for said data request is read from said host memory into said network adapter is 8 cell times from a current time.
-
6. The system as in claim 1, wherein said a subsequent time when transmit data for said data request is read from said host memory into said network adapter is 16 cell times from a current time.
-
7. The system as in claim 1, wherein said a subsequent time when transmit data for said data request is read from said host memory into said network adapter is 32 cell times from a current time.
-
8. A method for arbitrating between multiple requests for a shared resource, comprising the steps of:
-
determining a priority of each request in a first request class, said first request class consisting of transmit data requests to use said shared resource, by generating a priority vector associated with each transmit data request, higher values of said priority vector indicating higher priority, said priority vector including a predicted latency field, a contents of said predicted latency field equal to a time period estimated to have elapsed since a last previous transmission on a virtual circuit associated with said each transmit data request at a subsequent time when transmit data for said data request is read from a host memory into a network adapter, and by comparing said priority vector of each said request in said first request class;
determining a high or a low priority of each request in a second request class, said second request class consisting of receive data requests to use said shared resource;
selecting, responsive to said first determining means, a first selected request equal to one or said requests in said first request class having a highest priority;
selecting, responsive to said second determining means, a second selected request equal to one of said requests in said second request class having a high priority; and
choosing between said first selected request and said second selected request based on a 1 of N round robin arbitration, said second selected requested selected once every N times said shared resource is available, and N is a predetermined integer.
-
Specification