IP Library › Granted Patent US 8,484,647
Granted Patent B2
US 8,484,647 · App. 12/509,413 · Granted Jul 9, 2013

Selectively adjusting CPU wait mode based on estimation of remaining work before task completion on GPU

Inventors: Ian Hendry (San Jose, CA); Anthony G. Sumpter (Santa Clara, CA)
Assignee: Apple Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,484,647
App. No.
12/509,413
Granted
Jul 9, 2013
Kind
B2
Abstract

A technique for processing instructions in an electronic system is provided. In one embodiment, a processor of the electronic system may submit a unit of work to a queue accessible by a coprocessor, such as a graphics processing unit. The coprocessor may process work from the queue, and write a completion record into a memory accessible by the processor. The electronic system may be configured to switch between a polling mode and an interrupt mode based on progress made by the coprocessor in processing the work. In one embodiment, the processor may switch from an interrupt mode to a polling mode upon completion of a threshold amount of work by the coprocessor. Various additional methods, systems, and computer program products are also provided.

Claims (41)

1. A method comprising:

processing a thread of execution via a central processing unit;

assigning a processing task associated with the thread of execution to a graphics processing unit;

placing the thread of execution into an idle state;

asynchronously performing the processing task via the graphics processing unit;

determining an estimate of an amount of work remaining in the processing task before the processing task is completed by the graphics processing unit;

comparing the estimate of the amount of work remaining to a threshold level;

selecting, dependent upon the comparison of the estimate of the amount of work remaining to the threshold level, a wait mode of the central processing unit from a plurality of wait modes, wherein the plurality of wait modes includes at least a first wait mode and a second wait mode, wherein the first wait mode causes the central processing unit to wait for either an interrupt or a first timeout event, and the second wait mode causes the central processing unit to wait for either an interrupt or a second timeout event, and wherein the amount of elapsed time associated with the first timeout event is different than the amount of elapsed time associated with the second timeout event;

maintaining the thread of execution in an idle state during the selected wait mode until an interrupt from the graphics processing unit is received by the central processing unit or the timeout event corresponding to the selected wait mode occurs; and

resuming processing of the thread of execution following receipt of the interrupt or the occurrence of the timeout event corresponding to the select wait mode.

2. The method of claim 1 , wherein the amount of elapsed time associated with the first timeout event is at least ten times greater than the amount of elapsed time associated with the second timeout event.

3. The method of claim 1 , wherein the amount of elapsed time associated with the second timeout event is less than an interrupt latency time of a system including the central processing unit and the graphics processing unit.

4. The method of claim 1 , wherein assigning the processing task to the graphics processing unit includes writing instructions to a command buffer accessible by the graphics processing unit.

5. A non-transitory computer accessible storage medium having program instructions stored therein that, in response to execution by a computer system, causes the computer system to perform operations including:

processing a thread of execution via a central processing unit;

assigning a processing task associated with the thread of execution to a graphics processing unit;

placing the thread of execution into an idle state;

asynchronously performing the processing task via the graphics processing unit;

determining an estimate of an amount of work remaining in the processing task before the processing task is completed by the graphics processing unit;

comparing the estimate of the amount of work remaining to a threshold level;

selecting, dependent upon the comparison of the estimate of the amount of work remaining to the threshold level, a wait mode of the central processing unit from a plurality of wait modes, wherein the plurality of wait modes includes at least a first wait mode and a second wait mode, wherein the first wait mode causes the central processing unit to wait for either an interrupt or a first timeout event, and the second wait mode causes the central processing unit to wait for either an interrupt or a second timeout event, and wherein the amount of elapsed time associated with the first timeout event is different than the amount of elapsed time associated with the second timeout event;

maintaining the thread of execution in an idle state during the selected wait mode until an interrupt from the graphics processing unit is received by the central processing unit or the timeout event corresponding to the selected wait mode occurs; and

resuming processing of the thread of execution following receipt of the interrupt or the occurrence of the timeout event corresponding to the select wait mode.

6. The non-transitory computer accessible storage medium of claim 5 , wherein the amount of elapsed time associated with the first timeout event is at least ten times greater than the amount of elapsed time associated with the second timeout event.

7. The non-transitory computer accessible storage medium of claim 5 , wherein the amount of elapsed time associated with the second timeout event is less than an interrupt latency time of a system including the central processing unit and the graphics processing unit.

8. The non-transitory computer accessible storage medium of claim 5 , wherein assigning the processing task to the graphics processing unit includes writing instructions to a command buffer accessible by the graphics processing unit.

9. A system, comprising:

central processing unit configured to process a thread of execution; and

a graphics processing unit;

wherein the central processing unit is further configured to:

assign a processing task associated with the thread of execution to the graphics processing unit;

place the thread of execution into an idle state;

perform asynchronously the processing task via the graphics processing unit;

determine an estimate of an amount of work remaining in the processing task before the processing task is completed by the graphics processing unit;

compare the estimate of the amount of work remaining to a threshold level;

select, dependent upon the comparison of the estimate of the amount of work remaining to the threshold level, a wait mode of the central processing unit from a plurality of wait modes, wherein the plurality of wait modes includes at least a first wait mode and a second wait mode, wherein the first wait mode causes the central processing unit to wait for either an interrupt or a first timeout event, and the second wait mode causes the central processing unit to wait for either an interrupt or a second timeout event, and wherein the amount of elapsed time associated with the first timeout event is different than the amount of elapsed time associated with the second timeout event;

maintain the thread of execution in an idle state during the selected wait mode until an interrupt from the graphics processing unit is received by the central processing unit or the timeout event corresponding to the selected wait mode occurs; and

resume processing of the thread of execution following receipt of the interrupt or the occurrence of the timeout event corresponding to the select wait mode.

10. The system of claim 9 , wherein the amount of elapsed time associated with the first timeout event is at least ten times greater than the amount of elapsed time associated with the second timeout event.

11. The system of claim 9 , wherein the amount of elapsed time associated with the second timeout event is less than an interrupt latency time of the system.

12. The system of claim 9 , wherein to assign the processing task to the graphics processing unit, the central processing unit is further configured to write instructions to a command buffer accessible by the graphics processing unit.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2009
From: HENDRY, IAN; SUMPTER, ANTHONY G.
To: APPLE INC.
Reel/Frame 023006/0019 →
Continuity (1)
Related Publication 20110023040A1 · Jan 27, 2011