Mechanism for waking common resource requests within a resource management subsystem
First Claim
1. A method for waking up a request for a common resource, where the request has been put to sleep within a buffer, the method comprising:
- determining that a first common resource is available for allocation to any request included in a plurality of requests;
determining that the availability of the first common resource satisfies a first wake-up condition for a first request included in the plurality of requests that has been put to sleep within the buffer, wherein a second common resource needed by the first request remains unavailable;
in response, waking up the first request so that the first request can be further analyzed for execution;
determining, at a total order queue, that the unavailability of the second common resource is a transient condition; and
in response, allowing the execution of a first cycle of the first request.
1 Assignment
0 Petitions
Accused Products
Abstract
One embodiment of the present disclosure sets forth an effective way to maintain fairness and order in the scheduling of common resource access requests related to replay operations. Specifically, a streaming multiprocessor (SM) includes a total order queue (TOQ) configured to schedule the access requests over one or more execution cycles. Access requests are allowed to make forward progress when needed common resources have been allocated to the request. Where multiple access requests require the same common resource, priority is given to the older access request. Access requests may be placed in a sleep state pending availability of certain common resources. Deadlock may be avoided by allowing an older access request to steal resources from a younger resource request. One advantage of the disclosed technique is that older common resource access requests are not repeatedly blocked from making forward progress by newer access requests.
-
Citations
21 Claims
-
1. A method for waking up a request for a common resource, where the request has been put to sleep within a buffer, the method comprising:
-
determining that a first common resource is available for allocation to any request included in a plurality of requests; determining that the availability of the first common resource satisfies a first wake-up condition for a first request included in the plurality of requests that has been put to sleep within the buffer, wherein a second common resource needed by the first request remains unavailable; in response, waking up the first request so that the first request can be further analyzed for execution; determining, at a total order queue, that the unavailability of the second common resource is a transient condition; and in response, allowing the execution of a first cycle of the first request. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A subsystem for waking up a request for a common resource, where the request has been put to sleep within a buffer, comprising:
-
a processor that executes a total order queue (TOQ) configured to perform the steps of; determining that a first common resource is available for allocation to any request included in a plurality of requests; determining that the availability of the first common resource satisfies a first wake-up condition for a first request included in the plurality of requests that has been put to sleep within the buffer, wherein a second common resource needed by the first request remains unavailable; in response, waking up the first request so that the first request can be further analyzed for execution; determining that the unavailability of the second common resource is a transient condition; and in response, allowing the execution of a first cycle of the first request. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20)
-
-
21. A computing device, comprising:
-
a processor that executes a total order queue (TOQ) configured to wake up a request for a common resource, where the request has been put to sleep within a buffer by performing the steps of; determining that a first common resource is available for allocation to any request included in a plurality of requests; determining that the availability of the first common resource satisfies a first wake-up condition for a first request included in the plurality of requests that has been put to sleep within the buffer, wherein a second common resource needed by the first request remains unavailable; in response, waking up the first request so that the first request can be further analyzed for execution; determining that the unavailability of the second common resource is a transient condition; and in response, allowing the execution of a first cycle of the first request.
-
Specification