IP Library Granted Patent US 8,775,837
Granted Patent B2
US 8,775,837 · App. 13/213,833 · Granted Jul 8, 2014

System and method for enabling turbo mode in a processor

Inventors: David Dice (Foxboro, MA); Nir N. Shavit (Cambridge, MA); Virendra J. Marathe (Florence, MA)
Assignee: Oracle International Corporation
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,775,837
App. No.
13/213,833
Granted
Jul 8, 2014
Kind
B2
Abstract

The systems and methods described herein may enable a processor core to run at higher speeds than other processor cores in the same package. A thread executing on one processor core may begin waiting for another thread to complete a particular action (e.g., to release a lock). In response to determining that other threads are waiting, the thread/core may enter an inactive state. A data structure may store information indicating which threads are waiting on which other threads. In response to determining that a quorum of threads/cores are in an inactive state, one of the threads/cores may enter a turbo mode in which it executes at a higher speed than the baseline speed for the cores. A thread holding a lock and executing in turbo mode may perform work delegated by waiting threads at the higher speed. A thread may exit the inactive state when the waited-for action is completed.

Claims (69)

1. A method, comprising:

performing, by a computer:

executing a plurality of concurrent threads on a plurality of processor cores; and

while executing the plurality of threads:

a given one of the plurality of threads beginning to wait for another thread to complete a particular action;

in response to determining that one or more other ones of the plurality of threads are waiting for another thread to complete an action, the given thread entering in an inactive state; and

in response to determining that a quorum of the plurality of threads are in the inactive state, one of the plurality of threads that is in an active state entering a turbo mode, wherein executing in the turbo mode comprises executing at a higher speed than a baseline speed at which the plurality of threads execute when all of the threads are assumed to be active.

2. The method of claim 1 ,

wherein the method further comprises storing data indicating which of the plurality of threads is waiting for another thread to complete an action; and

wherein said determining that one or more other ones of the plurality of threads are waiting for another thread to complete an action comprises accessing the stored data.

3. The method of claim 1 , further comprising:

in response to determining that enough of the plurality of threads are waiting to meet the quorum, the one or more other ones of the plurality of threads that are waiting for another thread to complete an action entering the inactive state.

4. The method of claim 1 , wherein said beginning to wait comprises the given thread waiting for the other thread to release a lock that is held by the other thread.

5. The method of claim 4 , wherein the one or more other threads that are waiting for another thread to complete an action are also waiting for the lock to be released.

6. The method of claim 4 ,

wherein the method further comprises, prior to said beginning to wait, the given thread attempting to acquire the lock; and

wherein said beginning to wait is performed in response to the attempt to acquire the lock being unsuccessful.

7. The method of claim 4 ,

wherein the one of the plurality of threads executing in the turbo mode is the thread that holds the lock; and

wherein the method further comprises:

prior to the given thread entering the inactive state, the given thread logging one or more work items on a list of work items to be performed by a holder of the lock; and

the one of the plurality of threads executing in the turbo mode performing at least a portion of the work items on the list.

8. The method of claim 1 , wherein said entering an inactive state comprises the given thread executing one or more instructions that cause the core on which the given thread is executing to enter a low power state.

9. The method of claim 1 , further comprising:

in response to the particular action being completed, the given thread resuming execution in the active state.

10. The method of claim 1 ,

wherein each of the plurality of processor cores executes two or more threads; and

wherein said determining that a quorum of the plurality of threads are in the inactive state comprises determining that the two or more threads on each of two or more of the plurality of processor cores are in the inactive state.

11. A system comprising:

a plurality of processor cores; and

memory coupled to the plurality of processor cores and storing program instructions that when executed by the plurality of processor cores cause the plurality of processor cores to perform:

executing a plurality of concurrent threads; and

while executing the plurality of threads:

a given one of the plurality of threads beginning to wait for another thread to complete a particular action;

in response to determining that one or more other ones of the plurality of threads are waiting for another thread to complete an action, the given thread entering in an inactive state; and

in response to determining that a quorum of the plurality of threads are in the inactive state, one of the plurality of threads that is in an active state entering a turbo mode, wherein executing in the turbo mode comprises executing at a higher speed than a baseline speed at which the plurality of threads execute when all of the threads are assumed to be active.

12. The system of claim 11 , wherein when executed by the plurality of processor cores, the program instructions further cause the plurality of processor cores to perform:

storing data indicating which of the plurality of threads is waiting for another thread to complete an action; and

wherein said determining that one or more other ones of the plurality of threads are waiting for another thread to complete an action comprises accessing the stored data.

13. The system of claim 11 , wherein when executed by the plurality of processor cores, the program instructions further cause the plurality of processor cores to perform:

in response to determining that enough of the plurality of threads are waiting to meet the quorum, the one or more other ones of the plurality of threads that are waiting for another thread to complete an action entering the inactive state.

14. The system of claim 11 ,

wherein said beginning to wait comprises the given thread waiting for the other thread to release a lock that is held by the other thread;

wherein when executed by the plurality of processor cores, the program instructions further cause the plurality of processor cores to perform, prior to said beginning to wait, the given thread attempting to acquire the lock; and

wherein said beginning to wait is performed in response to the attempt to acquire the lock being unsuccessful.

15. The system of claim 14 ,

wherein the one of the plurality of threads executing in the turbo mode is the thread that holds the lock; and

wherein when executed by the plurality of processor cores, the program instructions further cause the plurality of processor cores to perform:

prior to the given thread entering the inactive state, the given thread logging one or more work items on a list of work items to be performed by a holder of the lock; and

the one of the plurality of threads executing in the turbo mode performing at least a portion of the work items on the list.

16. The system of claim 11 , further comprising:

in response to the particular action being completed, the given thread resuming execution in the active state.

17. A non-transitory, computer readable storage medium storing program instructions that when executed by a computer that comprises a plurality of processor cores cause the computer to perform:

executing a plurality of concurrent threads on the plurality of processor cores; and

while executing the plurality of threads:

a given one of the plurality of threads beginning to wait for another thread to complete a particular action;

in response to determining that one or more other ones of the plurality of threads are waiting for another thread to complete an action, the given thread entering in an inactive state; and

in response to determining that a quorum of the plurality of threads are in the inactive state, one of the plurality of threads that is in an active state entering a turbo mode, wherein executing in the turbo mode comprises executing at a higher speed than a baseline speed at which the plurality of threads execute when all of the threads are assumed to be active.

18. The storage medium of claim 17 , wherein when executed by the computer, the program instructions further cause the computer to perform:

storing data indicating which of the plurality of threads is waiting for another thread to complete an action; and

wherein said determining that one or more other ones of the plurality of threads are waiting for another thread to complete an action comprises accessing the stored data.

19. The storage medium of claim 17 , wherein when executed by the computer, the program instructions further cause the computer to perform:

in response to determining that enough of the plurality of threads are waiting to meet the quorum, the one or more other ones of the plurality of threads that are waiting for another thread to complete an action entering the inactive state.

20. The storage medium of claim 17 ,

wherein said beginning to wait comprises the given thread waiting for the other thread to release a lock that is held by the other thread;

wherein the one of the plurality of threads executing in the turbo mode is the thread that holds the lock; and

wherein when executed by the computer, the program instructions further cause the computer to perform:

prior to the given thread entering the inactive state, the given thread logging one or more work items on a list of work items to be performed by a holder of the lock; and

the one of the plurality of threads executing in the turbo mode performing at least a portion of the work items on the list.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2011
From: DICE, DAVID; SHAVIT, NIR N.; MARATHE, VIRENDRA J.
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 026779/0712 →
Continuity (1)
Related Publication 20130047011A1 · Feb 21, 2013