IP Library Granted Patent US 8,881,157
Granted Patent B2
US 8,881,157 · App. 12/557,971 · Granted Nov 4, 2014

Allocating threads to cores based on threads falling behind thread completion target deadline

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,881,157
App. No.
12/557,971
Granted
Nov 4, 2014
Kind
B2
Abstract

Techniques are generally described for allocating a thread to heterogeneous processor cores. Example techniques may include monitoring real time computing data related to the heterogeneous processor cores processing the thread, allocating the thread to the heterogeneous processor cores based, at least in part, on the real time computing data, and/or executing the thread by the respective allocated heterogeneous processor core.

Claims (49)

1. A method to allocate a thread to a plurality of processor cores, the method comprising:

allocating the thread to a first core of the plurality of processor cores;

monitoring computing data related to the first core, wherein the computing data comprises a cycles per instruction rate based on a ratio of total number of clock cycles per instruction completed over a time interval;

determining, based on the monitoring, that the thread is falling behind a thread completion target deadline by comparing the cycles per instruction rate to a target cycles per instruction rate;

associating the thread with a phase of a plurality of phases of a thread execution;

wherein each phase of the plurality of phases is associated with operating requirements of a specific task related to each phase; and

wherein each phase is identified by a particular breakpoint in the thread execution or a particular point where the thread execution switches from a first task to a second task;

identifying a current phase of the thread execution;

allocating the thread to a second core of the plurality of the processor cores based, at least in part, on the determination that the thread is falling behind a thread completion deadline and based, at least in part, on the identification of the current phase of the thread execution.

2. The method of claim 1 , further comprising: executing the thread by the second core.

3. The method of claim 1 , wherein allocating the thread to the second core comprises dynamically allocating the thread to the second core.

4. The method of claim 1 , further comprising:

transmitting the monitored computing data to a thread allocating software tool, and wherein allocating the thread to the second core comprises allocating the thread with the thread allocating software tool based on the monitored computing data.

5. The method of claim 1 , wherein the computing data comprises one or more checkpoints that instruct the thread to be allocated from the first core to the second core at a particular time, wherein allocating the thread to the second core is based, at least in part, on the one or more checkpoints.

6. The method of claim 1 ,

wherein allocating the thread to the second core is based, at least in part, on the cycles per instruction rate being equal to the target cycles per instruction rate.

7. The method of claim 1 ,

wherein allocating the thread to the second core is based, at least in part, on the cycles per instruction rate being in excess of the target cycles per instruction rate.

8. The method of claim 6 , wherein the target cycles per instruction rate is defined prior to the execution of a software application associated with the thread.

9. The method of claim 6 , wherein the target cycles per instruction rate is defined during the execution of a software application associated with the thread.

10. The method of claim 1 , further comprising

allocating the thread to the second core based, at least in part, on a particular time associated with at least one checkpoint.

11. An article comprising:

a non-transitory storage medium comprising machine-readable instructions stored thereon, which, in response to execution by one or more processor units, operatively enable a computing platform to:

allocate a thread to a first core of a plurality of processor cores;

monitor computing data related to the first core, wherein the computing data comprises a cycles per instruction rate based on a ratio of total number of clock cycles per instruction completed over a time interval;

determine, based on the monitored computing data, that the thread is falling behind a thread completion target deadline by comparison of the cycles per instruction rate to a target cycles per instruction rate;

associate the thread with a phase of a plurality of phases of a thread execution;

wherein at least one phase of the plurality of phases is associated with operating requirements of a specific task related to the at least one phase; and

wherein the at least one phase is identified by a particular breakpoint in the thread execution or a particular point where the thread execution switches from a first task to a second task;

identify a current phase of the thread execution;

allocate the thread to a second core different from the first core based, at least in part, on the determination that the thread is falling behind the thread completion target deadline and based, at least in part, on the identification of the current phase of the thread execution.

12. The article of claim 11 , further comprising:

a thread allocating software tool configured to receive the computing data, the thread allocating software tool being configured to allocate the thread to the second core based at least in part on the computing data.

13. The article of claim 11 , wherein to allocate the thread to the second core, the machine-readable instructions are executable to enable the computing platform to dynamically allocate the thread to the second processor core based, at least in part, on the monitored computing data.

14. A computing device that includes a multi-core processor, comprising:

a first processor core of the multi-core processor;

a second processor core of the multi-core processor; and

a memory coupled to the first and second processor cores and including an application, wherein the application is configured to:

allocate a thread to the first processor core;

monitor computing data related to the first processor core during execution of the thread by the first processor core to determine, based on the monitored computing data, that the thread is falling behind a thread completion target deadline,

associate the thread with a phase of a plurality of phases of a thread execution;

wherein at least one phase of the plurality of phases is associated with operating requirements of a specific task related to the at least one phase; and

wherein the at least one phase is identified by a particular breakpoint in the thread execution or a particular point where the thread execution switches from a first task to a second task;

identify a current phase of the thread execution; and

allocate the thread to the second processor core based, at least in part, on the determination that the thread is falling behind the thread completion target deadline and based, at least in part, on the identification of the current phase of the thread execution, and

wherein the second processor core is configured to execute the thread after the thread is allocated to the second processor core.

15. The computing device of claim 14 , wherein the first processor core has a first capability and the second processor core has a second capability that is different from the first capability such that the multi-core processor comprises hardware.

16. The computing device of claim 15 , wherein each of the first capability and the second capability corresponds to at least one of: a graphics resource, a mathematical computational resource, an instruction set, an accelerator, an SSE (streaming SIMD (single instruction, multiple data) extensions), a cache size and/or a branch predictor.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 3, 2020
From: EMPIRE TECHNOLOGY DEVELOPMENT, LLC
To: MERCURY KINGDOM ASSETS LIMITED
Reel/Frame 053378/0053 →
RELEASE OF SECURITY INTEREST Recorded Jun 26, 2020
From: CRESTLINE DIRECT FINANCE, L.P.
To: EMPIRE TECHNOLOGY DEVELOPMENT LLC
Reel/Frame 053047/0864 →
SECURITY INTEREST Recorded Jan 29, 2019
From: EMPIRE TECHNOLOGY DEVELOPMENT LLC
To: CRESTLINE DIRECT FINANCE, L.P.
Reel/Frame 048373/0217 →