# US 8,751,854 B2 · Processor core clock rate selection

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,751,854 B2
- Document ID: US8751854B2
- Status: Granted
- Kind: B2
- Application number: 12/642,871
- Filed: 2009-12-21
- Published: 2011-06-23
- Granted: 2014-06-10
- Earliest claimed: 2009-12-21
- Assignees: Empire Technology Development LLC
- Applicants: Andrew Wolfe; Tom Conte
- Inventors: Andrew Wolfe; Tom Conte
- Web page: https://patentgrep.com/patent/US8751854B2

## CPC

- G06F 1/04: Generating or distributing clock signals or signals derived directly therefrom
- G06F 1/08: Clock generators with changeable or programmable clock frequency
- G06F 11/34: Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation {; Recording or statistical evaluation of user activity, e.g. usability assessment}
- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques described herein generally relate to multi-core processors including two or more processor cores. Example embodiments may set forth devices, methods, and computer programs related to calculating a clock rate for one or more of the processor cores in the multi-core processor. One example method may include determining a first estimated workload for a first processor core and a second estimated workload for a second processor core within a scheduling interval in a periodic scheduling environment. In addition, a first clock rate for the first processor core may be calculated based on one or more of the first estimated workload, a maximum clock rate supported by the multi-core processor and/or the scheduling interval. Similarly, a second clock rate for the second processor core may also be calculated based on one or more of the second estimated workload, the maximum clock rate, and/or the scheduling interval.

## Claims

### Claim 1

A method to calculate a clock rate for processor cores in a multi-core processor, the method comprising:
generating a first set of estimated workloads for a first set of tasks, which are assigned to a first processor core in the multi-core processor and which are to be executed within a scheduling interval in a scheduling environment, by extracting first information related to one or more of a first workload type and first workload characteristics associated with the first set of tasks, extracting first historical data related to the first workload type, and calculating the first set of estimated workloads based on the extracted first information and the extracted first historical data;
determining a first estimated workload for the first processor core as a sum of the first set of estimated workloads;
generating a second set of estimated workloads for a second set of tasks, which are assigned to a second processor core in the multi-core processor and which are to be executed within the scheduling interval, by extracting second information related to one or more of a second workload type and second workload characteristics associated with the second set of tasks, extracting second historical data related to the second workload type, and calculating the second set of estimated workloads based on the extracted second information and the extracted second historical data;
determining a second estimated workload for the second processor core as a sum of the second set of estimated workloads;
calculating a first clock rate for the first processor core based on one or more of the first estimated workload, a maximum clock rate supported by the multi-core processor, and the scheduling interval; and
calculating a second clock rate for the second processor core based on one or more of the second estimated workload, the maximum clock rate supported by the multi-core processor, and the scheduling interval.

### Claim 2 (depends on 1)

The method of claim 1, further comprising determining a first compensation weight based on the first estimated workload and a first measured workload to complete execution of the first set of tasks within the scheduling interval, wherein the calculating the first clock rate for the first processor core is further based on the first compensation weight.

### Claim 3 (depends on 2)

The method of claim 2, further comprising maintaining the first compensation weight close to about 1 in response to the first estimated workload being determined to closely match the first measured workload.

### Claim 4 (depends on 2)

The method of claim 2, further comprising increasing the first compensation weight based on an amount by which the first estimated workload exceeds the first measured workload.

### Claim 5 (depends on 2)

The method of claim 2, further comprising determining a second compensation weight based on the second estimated workload and a second measured workload to complete execution of the second set of tasks within the scheduling interval, wherein the calculating the second clock rate for the second processor core is further based on the second compensation weight.

### Claim 6 (depends on 1)

The method of claim 1, further comprising identifying a maximum estimated workload in the multi-core processor based on a comparison between the first estimated workload and the second estimated workload, wherein the calculating the first clock rate for the first processor core and the calculating the second clock rate for the second processor core are further based on the maximum estimated workload.

### Claim 7 (depends on 6)

The method of claim 6, wherein the calculating the first clock rate further comprises applying a first ratio between the first estimated workload and the maximum estimated workload to the maximum clock rate supported by the multi-core processor.

### Claim 8 (depends on 6)

The method of claim 6, wherein the calculating the second clock rate comprises applying a second ratio between the second estimated workload and the maximum estimated workload to the maximum clock rate supported by the multi-core processor.

### Claim 9 (depends on 6)

The method of claim 6, further comprising determining a first compensation weight based on the first estimated workload and a first measured workload to complete execution of the first set of tasks within the scheduling interval, wherein the calculating the first clock rate for the first processor core is further based on the first compensation weight.

### Claim 10 (depends on 9)

The method of claim 9, further comprising maintaining the first compensation weight close to about 1 in response to the first estimated workload being determined to closely match the first measured workload.

### Claim 11 (depends on 9)

The method of claim 9, further comprising increasing the first compensation weight based on an amount by which the first estimated workload exceeds the first measured workload.

### Claim 12 (depends on 1)

The method of claim 1, wherein the first estimated workload for the first processor core, the second estimated workload for the second processor core, the first clock rate for the first processor core, and the second clock rate for the second processor core are determined or calculated by a processing unit.

### Claim 13 (depends on 1)

The method of claim 1, further comprising:
configuring a first clock selector to output a first clock signal associated with the first clock rate to the first processor core; and
configuring a second clock selector to output a second clock signal associated with the second clock rate to the second processor core.

### Claim 14

A non-transitory computer readable medium that includes instructions to calculate a clock rate for a first processor core and a second processor core in a multi-core processor, which in response to execution by a host processor, cause the host processor to:
generate a first set of estimated workloads for a first set of tasks, which are assigned to the first processor core and which are to be executed within a scheduling interval in a scheduling environment, by extraction of first information related to one or more of a first workload type and first workload characteristics associated with the first set of tasks, extraction of first historical data related to the first workload type, and calculation of the first set of estimated workloads based on the extracted first information and the extracted first historical data;
determine a first estimated workload for the first processor core as a sum of the first set of estimated workloads;
generate a second set of estimated workloads for a second set of tasks, which are assigned to the second processor core and which are to be executed within the scheduling interval, by extraction of second information related to one or more of a second workload type and second workload characteristics associated with the second set of tasks, extraction of second historical data related to the second workload type, and calculation of the second set of estimated workloads based on the extracted second information and the extracted second historical data;
determine a second estimated workload for the second processor core as a sum of the second set of estimated workloads;
calculate a first clock rate for the first processor core based on one or more of the first estimated workload, a maximum clock rate supported by the multi-core processor, the scheduling interval, and a first compensation weight; and
calculate a second clock rate for the second processor core based on one or more of the second estimated workload, the maximum clock rate, the scheduling interval, and a second compensation weight.

### Claim 15 (depends on 14)

The non-transitory computer readable medium of claim 14, further including additional instructions, which in response to execution by the host processor, cause the host processor to:
determine the first compensation weight based on the first estimated workload and a first measured workload to complete execution of the first set of tasks within the scheduling interval; and
calculate the first clock rate for the first processor core further based on the first compensation weight.

### Claim 16 (depends on 14)

The non-transitory computer readable medium of claim 14, further including additional instructions, which in response to execution by the host processor, cause the host processor to:
identify a maximum estimated workload in the multi-core processor based on a comparison between the first estimated workload and the second estimated workload; and
calculate the first clock rate for the first processor core and calculate the second clock rate for the second processor core further based on the maximum estimated workload.

### Claim 17 (depends on 16)

The non-transitory computer readable medium of claim 16, further including additional instructions, which in response to execution by the host processor, cause the host processor to apply a first ratio, which is between the first estimated workload and the maximum estimated workload, to the maximum clock rate supported by the multi-core processor to calculate the first clock rate.

### Claim 18 (depends on 16)

The non-transitory computer readable medium of claim 16, further including additional instructions, which in response to execution by the host processor, cause the host processor to:
determine the first compensation weight based on the first estimated workload and a first measured workload to complete execution of the first set of tasks within the scheduling interval; and
calculate the first clock rate for the first processor core based also on the first compensation weight.

### Claim 19 (depends on 14)

The non-transitory computer readable medium of claim 14, further including additional instructions, which in response to execution by the host processor, cause the host processor to:
configure a first clock selector to output a first clock signal associated with the first clock rate to the first processor core; and
configure a second clock selector to output a second clock signal associated with the second clock rate to the second processor core.

### Claim 20

A computing device, comprising:
a multi-core processor including a first processor core and a second processor core;
a first clock selector and a second clock selector, wherein the first clock selector is coupled to the first processor core, and the second clock selector is coupled to the second processor core; and
a host processor, wherein the host processor is configured to:
generate a first set of estimated workloads for a first set of tasks, which are assigned to the first processor core and which are to be executed within a scheduling interval in a scheduling environment, by extraction of first information related to one or more of a first workload type and first workload characteristics associated with the first set of tasks, extraction of first historical data related to the first workload type, and calculation of the first set of estimated workloads based on the extracted first information and the extracted first historical data,
sum the first set of estimated workloads to determine a first estimated workload for the first processor core,
generate a second set of estimated workloads for a second set of tasks, which are assigned to the second processor core and which are to be executed within the scheduling interval, by extraction of second information related to one or more of a second workload type and second workload characteristics associated with the second set of tasks, extraction of second historical data related to the second workload type, and calculation of the second set of estimated workloads based on the extracted second information and the extracted second historical data,
sum the second set of estimated workloads to determine a second estimated workload for the second processor core,
calculate a first clock rate for the first processor core based on one or more of the first estimated workload, a maximum clock rate supported by the multi-core processor, and the scheduling interval, and
calculate a second clock rate for the second processor core based on one or more of the second estimated workload, the maximum clock rate supported by the multi-core processor, and the scheduling interval.

### Claim 21 (depends on 20)

The computing device of claim 20, wherein the first clock selector is configured to select a clock signal that includes a first clock frequency based on the first clock rate to output to the first processor core.

### Claim 22 (depends on 20)

The computing device of claim 20, wherein the second clock selector is configured to select a clock signal that includes a second clock frequency based on the second clock rate to output to the second processor core.

### Claim 23 (depends on 20)

The computing device of claim 20, wherein the host processor is further configured to:
identify a maximum estimated workload in the multi-core processor by a comparison of the first estimated workload and the second estimated workload;
determine a compensation weight based on one or more of the first estimated workload, the second estimated work load, a first measured workload to complete execution of the first set of tasks within the scheduling interval, and a second measured workload to complete execution of the second set of tasks within the scheduling interval;
calculate the first clock rate further based on the maximum estimated workload or the compensation weight; and
calculate the second clock rate further based on the maximum estimated workload or the compensation weight.

### Claim 24 (depends on 23)

The computing device of claim 23, wherein the host processor is further configured to apply a first ratio, which is between the first estimated workload and the maximum estimated workload, to the maximum clock rate supported by the multi-core processor to calculate the first clock rate and apply a second ratio, which is between the second estimated workload and the maximum estimated workload, to the maximum clock rate supported by the multi-core processor to calculate the second clock rate.
