IP Library › Granted Patent US 9,696,787
Granted Patent B2
US 9,696,787 · App. 14/962,187 · Granted Jul 4, 2017

Dynamic control of processors to reduce thermal and power costs

Inventors: Saravana Krishnan Kannan (San Diego, CA); Junjie Wu (San Diego, CA)
Assignee: QUALCOMM Innovation Center, Inc.
G06F1/3234G06F1/324G06F1/329G06F1/3287G06F9/5094G06F1/206Y02B60/1275
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 9,696,787
App. No.
14/962,187
Granted
Jul 4, 2017
Kind
B2
Abstract

Systems and methods for controlling processor cores on a computing device are disclosed. One method includes tracking a load of each of a plurality of processor cores and determining a load percentage of each of the processor cores. A core is designated as a busy core if a load percentage of the core exceeds an upper threshold, and the busy core designation is removed if the load percentage of the core drops below a lower threshold. To reduce power consumption and adverse thermal effects, no more than N+M cores are maintained online wherein N is a number of busy cores and M is generally zero, but may be increased to at least one.

Claims (52)

1. A method for controlling processor cores, the method comprising:

designating a core of a plurality of processor cores as a busy core if a load percentage of the core exceeds an upper threshold;

determining a number of the plurality of processor cores that are busy cores;

removing the busy core designation if the load percentage of the core drops below a lower threshold;

determining a number of threads globally scheduled among the plurality of processor cores that exceed a thread-threshold, wherein the thread-threshold is a percentage of a maximum hardware capacity of a single one of the plurality of processor cores; and

maintaining no more than N+M cores online, wherein N is the number of busy cores, and wherein M is a number of idle cores, and wherein M is at least one if the number of threads exceeding the thread-threshold is greater than N, and M is zero if the number of threads exceeding the thread-threshold is less than or equal to N.

2. The method of claim 1 , wherein tracking the load of each of the plurality of processor cores includes:

calculating a percentage of time each core is not idle during a sample window.

3. The method of claim 2 , wherein a core is not idle when the core is executing code.

4. The method of claim 1 , wherein the upper and lower thresholds are different thresholds.

5. The method of claim 1 , including:

establishing a particular thread-threshold for each of a plurality of cluster types, and wherein values for N and M are established for each cluster type.

6. The method of claim 1 , including:

obtaining a maximum scaling frequency for each of the cores, wherein determining the load percentage includes calculating the load percentage of each of the cores by normalizing the load percentage of each core to its maximum scaling frequency.

7. The method of claim 1 , including:

waiting for an offline delay before offlining a particular core after the load percentage for the particular core drops below the lower threshold.

8. The method of claim 1 , including:

maintaining a list of least-recently-used cores; and

using the list as a factor when determining which core to bring online.

9. The method of claim 1 including:

maintaining a list of cores ordered by a power cost of each core; and

selecting a core to bring online based upon its power cost.

10. A computing device comprising:

a plurality of processor cores;

a scheduler to schedule tasks that are processed by the plurality of processor cores;

a core controller configured to:

designate a core as a busy core if a load percentage of the core exceeds an upper threshold;

determine a number of the plurality of processor cores that are busy cores;

remove the busy core designation if the load percentage of the core drops below a lower threshold;

determine a number of threads globally scheduled among the plurality of processor cores that exceed a thread-threshold, wherein the thread-threshold is a percentage of a maximum hardware capacity of a single one of the plurality of processor cores; and

maintain no more than N+M cores online wherein N is the number of busy cores, and wherein M is a number of idle cores, and wherein M is at least one if the number of threads exceeding a thread-threshold is greater than N, and M is zero if the number of threads exceeding the thread-threshold is less than or equal to N.

11. A non-transitory, tangible processor readable storage medium, encoded with processor readable instructions to perform a method for controlling processor cores, the method comprising:

designating a core as a busy core if the load percentage of the core exceeds an upper threshold;

determining a number of the plurality of processor cores that are busy cores;

removing the busy core designation if the load percentage of the core drops below a lower threshold;

determining a number of threads globally scheduled among the plurality of processor cores that exceed a thread-threshold, wherein the thread-threshold is a percentage of a maximum hardware capacity of a single one of the plurality of processor cores; and

maintaining no more than N+M cores online, wherein N is the number of busy cores, and wherein M is a number of idle cores, and wherein M is at least one if the number of threads exceeding the thread-threshold is greater than N, and M is zero if the number of threads exceeding the thread-threshold is less than or equal to N.

12. The non-transitory, tangible processor readable storage medium of claim 11 , wherein tracking the load of each of the plurality of processor cores includes:

calculating a percentage of time each core is not idle during a sample window.

13. The non-transitory, tangible processor readable storage medium of claim 12 , wherein a core is not idle when the core is executing code.

14. The non-transitory, tangible processor readable storage medium of claim 11 , wherein the upper and lower thresholds are different thresholds.

15. The non-transitory, tangible processor readable storage medium of claim 11 , wherein M is one.

16. The non-transitory, tangible processor readable storage medium of claim 11 , including:

obtaining a maximum scaling frequency for each of the cores, wherein determining the load percentage includes calculating the load percentage of each of the cores by normalizing the load percentage of each core to its maximum scaling frequency.

17. The non-transitory, tangible processor readable storage medium of claim 11 , including:

waiting for an offline delay before offlining a particular core after the load percentage for the particular core drops below the lower threshold.

18. The non-transitory, tangible processor readable storage medium of claim 11 , including:

maintaining a list of least-recently-used cores; and

using the list as a factor when determining which core to bring online.

19. The non-transitory, tangible processor readable storage medium of claim 11 including:

maintaining a list of cores ordered by a power cost of each core; and

selecting a core to bring online based upon its power cost.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 19, 2016
From: KANNAN, SARAVANA KRISHNAN; WU, JUNJIE
To: QUALCOMM INNOVATION CENTER, INC.
Reel/Frame 037773/0885 →
Continuity (2)
Provisional Application 62090249 · Dec 10, 2014
Related Publication 20160170470A1 · Jun 16, 2016