# US 2014/0196050 A1 · Processing system including a plurality of cores and method of operating the same

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

- Number: US 2014/0196050 A1
- Document ID: US20140196050A1
- Status: Published application
- Kind: A1
- Application number: 14/061,783
- Filed: 2013-10-24
- Published: 2014-07-10
- Earliest claimed: 2013-01-07
- Assignees: Samsung Electronics Co., Ltd.
- Inventors: Ki Soo YU; KYUNG IL SUN; Chang Hwan YOUN
- Web page: https://patentgrep.com/patent/US20140196050A1

## CPC

- G06F 9/5094: {where the allocation takes into account power or heat criteria (power management in computers in general G06F1/3203; thermal management in computers in general G06F1/206)}
- G06F 9/5088: {involving task migration}
- G06F 2209/5022: Workload threshold
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

A system and method of allocating resources among cores in a multi-core system is disclosed. The system and method determine cores that are able to process tasks to be performed, and use history of usage information to select a core to process the tasks. The system may be a heterogeneous multi-core processing system, and may include a system on chip (SoC).

## Claims

### Claim 1

A method of assigning resources in a heterogeneous multi-core processing system including a plurality of first-type cores having a first architecture and a plurality of second-type cores having a second architecture different from the first architecture, the method comprising:
maintaining history of usage information for each core of the plurality of first-type cores and each core of the plurality of second-type cores;
receiving a request to perform a task;
selecting a core from among the plurality of first-type cores and the plurality of second-type cores to perform the task,
wherein the selecting depends at least in part on the history of usage information.

### Claim 2 (depends on 1)

A method of claim 1, wherein selecting a core from among the plurality of first-type cores and the plurality of second-type cores to perform the task includes:
determining whether a first core of the plurality of first-type cores has sufficient resources available to perform the task; and
when it is determined that the first core does not have sufficient resources available to perform the task, selecting a second core from among the plurality of first-type cores and the plurality of second-type cores to perform the task, based at least in part on the history of usage information.

### Claim 3 (depends on 2)

The method of claim 2, wherein:
the first core is a core having a first size; and
the second core is a core having a second size larger than the first size.

### Claim 4 (depends on 1)

The method of claim 1, wherein:
the selecting depends at least in part on one or more of the following:
a selection count number indicating a number of times a core has been selected;
a usage time indicating an amount of past usage time of the core;
an instruction count number indicating a number of instructions executed by the core; and
a core load count number indicating a historical load amount processed by the core.

### Claim 5 (depends on 1)

The method of claim 1, wherein:
the selecting depends at least in part on an occupied or unoccupied state of the plurality of first-type cores and plurality of second-type cores.

### Claim 6 (depends on 5)

The method of claim 5, further comprising:
prior to the selecting, excluding from selection at least one core determined to be in an unoccupied state.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
determining that a core of the plurality of first-type cores has sufficient resources to process all of the tasks being performed on a core of the plurality of second-type cores; and
as a result of the determination, moving the tasks being performed on the core of the plurality of second-type cores to the core of the plurality of first-type cores.

### Claim 8 (depends on 7)

The method of claim 7, further comprising:
after the moving step, powering down the core of the plurality of second-type cores.

### Claim 9 (depends on 1)

The method of claim 1, wherein:
the plurality of first-type cores are part of a first cluster of processors; and
the plurality of second-type cores are part of a second cluster of processors.

### Claim 10 (depends on 1)

The method of claim 1, further comprising:
storing the history of usage information in a history buffer,
wherein the history buffer initially has no history of usage information stored, and
for each core of the heterogeneous multi-core system, as a result of the core being accessed, a history of usage information indicating a number of times that core has been accessed is updated.

### Claim 11

A method of assigning resources in a multi-core processing system including a plurality of first-sized cores and a plurality of second-sized cores, the first size being smaller than the second size, the method comprising:
maintaining history of usage information for each core of the plurality of first-sized cores and each core of the plurality of second-sized cores;
receiving a request to perform a task;
determining that a first core of the plurality of first-sized cores has insufficient resources to perform the task; and
as a result of the determination, selecting a second core from among the plurality of second-sized cores to perform the task,
wherein the selecting depends at least in part on the history of usage information.

### Claim 12 (depends on 11)

The method of claim 11, wherein the first core is a core having a first maximum processing speed and the second core is a core having a second maximum processing speed greater than the first maximum processing speed.

### Claim 13 (depends on 11)

The method of claim 11, wherein the first core includes transistors having a first size, and the second core includes transistors having a second size larger than the first size.

### Claim 14 (depends on 11)

The method of claim 11, wherein:
the second core is selected from among the plurality of second-sized cores based at least in part on one or more of the following:
a selection count number indicating a number of times a core has been selected;
a usage time indicating an amount of past usage time of the core;
an instruction count number indicating a number of instructions executed by the core; and
a core load count number indicating a historical load amount processed by the core.

### Claim 15 (depends on 11)

The method of claim 11, further comprising:
storing a history log that includes the history of usage information; and
updating the history log when a particular core is selected to perform a task, to reflect the selection.

### Claim 16 (depends on 15)

The method of claim 15, further comprising:
upon selection of the particular core, updating the history log to increase a selection count number for the particular core indicating a number of times that core has been selected.

### Claim 17 (depends on 16)

The method of claim 16, wherein the selection count number for the particular core reflects a lifetime usage for that core.

### Claim 18 (depends on 15)

The method of claim 15, further comprising:
upon selection of the particular core, updating a status flag to indicate that the particular core is in an occupied state.

### Claim 19

A method of assigning resources in a multi-core processing system including a plurality of first-sized cores and a plurality of second-sized cores, the first size being smaller than the second size, the method comprising:
storing history of usage information for each core of the plurality of first-sized cores and each core of the plurality of second-sized cores;
determining a set of cores of the plurality of first-sized cores that each individually have sufficient resources to process all of the processes being performed on a core of the plurality of second-sized cores; and
selecting at least a first core of the set of cores based at least in part on the history of usage information,
wherein the first core is selected from among the set of cores based at least in part on one or more of the following:
a selection count number indicating a number of times the first core has been selected;
a usage time indicating an amount of past usage time of the first core;
an instruction count number indicating a number of instructions executed by the first core; and
a core load count number indicating a historical load amount processed by the first core.

### Claim 20 (depends on 19)

The method of claim 19, further comprising:
as a result of the selecting, moving the processes being performed on the core of the plurality of second-sized cores to the selected at least first core.

### Claim 21 (depends on 19)

The method of claim 19, wherein the plurality of first-sized cores are cores having a first type of architecture and the plurality of second-sized cores are cores having a second type of architecture different from the first type.

### Claim 22

A resource management controller for assigning resources among a plurality of cores in a heterogeneous multi-core processing system including a plurality of first cores and a plurality of second cores different from the first cores, the controller comprising:
a determining circuit configured to determine whether a first core of the plurality of first cores has sufficient resources available to perform a requested task; and
a selecting circuit configured to, when it is determined that the first core does not have sufficient resources to perform the task, select a second core from among the plurality of first cores and the plurality of second cores to perform the task,
wherein the selecting depends at least in part on history information reflecting a history of usage of the plurality of first cores and plurality of second cores.

### Claim 23 (depends on 22)

The resource management controller of claim 22, wherein:
the first core has a first size, and the second core has a second size larger than the first size.

### Claim 24 (depends on 22)

The resource management controller of claim 22, wherein:
the first core has a first maximum processing speed, and the second core has a second maximum processing speed greater than the first maximum processing speed.

### Claim 25 (depends on 22)

The resource management controller of claim 22, wherein:
the resource management controller comprises hardware and software.

### Claim 26 (depends on 22)

The resource management controller of claim 22, further comprising:
a history log storing the history information.

### Claim 27

A heterogeneous multi-core processing system, comprising:
a plurality of core processors including a plurality of first-speed core processors each having a first maximum speed and a plurality of second-speed core processors each having a second maximum speed faster than the first speed; and
a controller coupled to the plurality of core processors, wherein the controller is configured to:
select a first second-speed core processor based on a history of usage of the plurality of second-speed core processors;
assign one or more tasks to the first second-speed core processor in response to a determination that a load on a first first-speed core processor of the plurality of first-speed core processors is above a first threshold load amount;
select one of the plurality of first-speed core processors based on a history of usage of the plurality of first-speed core processors; and
assign one or more tasks to the selected first-speed core processor in response to a determination that a load on the first second-speed core processor is below a second threshold load amount.

### Claim 28 (depends on 27)

The processing system of claim 27, wherein:
each of the plurality of first-speed core processors is powered with a first voltage; and
each of the plurality of second-speed core processors is powered with a second voltage higher than the first voltage.

### Claim 29 (depends on 27)

The processing system of claim 27, wherein:
the controller comprises hardware and software.

### Claim 30 (depends on 27)

The processing system of claim 27, further comprising:
a history log storing information reflecting the history of usage of the plurality of the second-speed core processors and the history of usage of the plurality of first-speed core processors.

### Claim 31 (depends on 30)

The processing system of claim 30, wherein:
the history log includes information for each of a plurality of core processors, the information reflecting one or more of:
a selection count number indicating a number of times the core processor has been selected;
a usage time indicating an amount of past usage time of the core processor;
an instruction count number indicating a number of instructions executed by the core processor; and
a core load count number indicating a historical load amount processed by the core processor.

### Claim 32

A processing system comprising:
a plurality of first cores having a first size;
a plurality of second cores having a second size larger than the first size, the number of the plurality of first cores being different from the number of the plurality of second cores;
a controller coupled to the plurality of first cores and plurality of second cores;
a first history log coupled to the controller and coupled to the plurality of first cores; and
a second history log coupled to the controller and coupled to the plurality of second cores,
wherein the controller includes a first counter configured to count numbers of accesses to the first cores, and a second counter configured to count numbers of accesses to the second cores, and the controller is configured to:
receive an external request to perform a task; and
assign the task to a selected core from among the plurality of first cores and plurality of second cores, the selected core selected based on at least one of information stored in the first history log and information stored in the second history log.

### Claim 33 (depends on 32)

The processing system of claim 32, wherein:
the controller comprises hardware and software.

### Claim 34 (depends on 32)

The processing system of claim 32, wherein the controller is further configured to:
determine that none of the plurality of first cores are able to process the task, and as a result, assign the task to one of the plurality of second cores based on the information stored in the second history log.

### Claim 35 (depends on 32)

The processing system of claim 32, wherein the controller is further configured to:
determine that a set of one or more tasks being performed on a second core of the plurality of second cores can be performed by a first core of the plurality of first cores; and
in response to the determination, move the set of one or more tasks to the first core.

### Claim 36

A system on chip comprising:
a plurality of first cores;
a plurality of second cores different from the first cores; and
a controller, wherein the controller is configured to:
determine whether a first core of the plurality of first cores has sufficient resources available to perform a requested task; and
when it is determined that the first core does not have sufficient resources to perform the task, select a second core from among the plurality of first cores and the plurality of second cores to perform the task,
wherein the selecting depends at least in part on history information reflecting a history of usage of the plurality of first cores and plurality of second cores.

### Claim 37 (depends on 36)

The system on chip of claim 36, wherein:
the plurality of first cores and plurality of second cores form a heterogeneous multi-core processing system.

### Claim 38 (depends on 36)

The system on chip of claim 36, wherein the controller is further configured to:
determine whether a first-sized core of the plurality of first cores has sufficient resources to perform all tasks being performed by a second-sized core of the plurality of second cores, the first size being smaller than the second size; and
when it is determined that the first-sized core has sufficient resources to perform all tasks being performed by the second-sized core, moving all tasks being performed by the second-sized core to the first-sized core.
