Processing system including a plurality of cores and method of operating the same
First Claim
Patent Images
1. A method of in a heterogeneous multi-core processing system having a plurality of first-type cores and a plurality of second-type cores, wherein the first-type cores have a first maximum speed or a first size and the second-type cores have a second maximum speed faster than the first maximum speed or a second size greater than the first size, the method comprising:
- maintaining history of usage information in a first history log for each core of the plurality of first-type cores and in a second history log for each core of the plurality of second-type cores,wherein the history of usage information for each core includes one or more of;
a selection count number indicating a number of times the 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, andwherein the first history logs and second history logs are part of a controller;
receiving by the controller an external request, wherein the external request is to exclude from target candidate cores at least one core from among unoccupied cores;
receiving a request to perform a task;
excluding as a target candidate core the at least one core based on the external request, the at least one core being an unoccupied core from among the plurality of first-type cores and the plurality of second-type cores;
selecting a first core from among the plurality of second-type cores to perform the task, wherein the selecting depends at least in part on the history of usage information in the second history log and the selected core not being the at least one core excluded as the target candidate core, and includes determining whether the first core from among the plurality of second-type cores has a small enough load such that it has sufficient resources available to perform the task;
performing a plurality of tasks on the first core of the plurality of second-type cores; and
determining that a second core, other than the at least one unoccupied core, of the plurality of first-type cores has a small enough load such that it has sufficient resources to process all of the plurality of tasks being performed on the first core of the plurality of second-type cores; and
as a result of the determination, moving all of the plurality of tasks being performed on the first core of the plurality of second-type cores to the second core of the plurality of first-type cores, thereby assigning resources of the second core of the plurality of first-type cores to all of the moved tasks;
updating the history of usage information of the second core in the first history log; and
performing the plurality of tasks on the second core of the plurality of first-type cores of the heterogeneous multi-core processing system.
1 Assignment
0 Petitions
Accused Products
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).
30 Citations
17 Claims
-
1. A method of in a heterogeneous multi-core processing system having a plurality of first-type cores and a plurality of second-type cores, wherein the first-type cores have a first maximum speed or a first size and the second-type cores have a second maximum speed faster than the first maximum speed or a second size greater than the first size, the method comprising:
-
maintaining history of usage information in a first history log for each core of the plurality of first-type cores and in a second history log for each core of the plurality of second-type cores, wherein the history of usage information for each core includes one or more of; a selection count number indicating a number of times the 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, and wherein the first history logs and second history logs are part of a controller; receiving by the controller an external request, wherein the external request is to exclude from target candidate cores at least one core from among unoccupied cores; receiving a request to perform a task; excluding as a target candidate core the at least one core based on the external request, the at least one core being an unoccupied core from among the plurality of first-type cores and the plurality of second-type cores; selecting a first core from among the plurality of second-type cores to perform the task, wherein the selecting depends at least in part on the history of usage information in the second history log and the selected core not being the at least one core excluded as the target candidate core, and includes determining whether the first core from among the plurality of second-type cores has a small enough load such that it has sufficient resources available to perform the task; performing a plurality of tasks on the first core of the plurality of second-type cores; and determining that a second core, other than the at least one unoccupied core, of the plurality of first-type cores has a small enough load such that it has sufficient resources to process all of the plurality of tasks being performed on the first core of the plurality of second-type cores; and as a result of the determination, moving all of the plurality of tasks being performed on the first core of the plurality of second-type cores to the second core of the plurality of first-type cores, thereby assigning resources of the second core of the plurality of first-type cores to all of the moved tasks; updating the history of usage information of the second core in the first history log; and performing the plurality of tasks on the second core of the plurality of first-type cores of the heterogeneous multi-core processing system. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. 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 in a first history log for each core of the plurality of first-sized cores and in a second history log for each core of the plurality of second-sized cores, wherein the history usage information includes at least one of; a selection count number indicating a number of times the core has been selected, and a usage time indicating an amount of past usage time of the core; determining that a first set of cores of the plurality of first-sized cores each individually have a sufficient amount of resources to process all processes being performed on a core of the plurality of second-sized cores; selecting at least a first core of the first set of cores based at least in part on the history of usage information, wherein the first core of the first set of cores is selected from among the first 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 of the first set of cores has been selected; a usage time indicating an amount of past usage time of the first core of the first set of cores; an instruction count number indicating a number of instructions executed by the first core of the first set of cores; and a core load count number indicating a historical load amount processed by the first core of the first set of cores; performing a plurality of processes on a second core of the plurality of second-sized cores; as a result of the selecting, moving all of the plurality of processes being performed on the second core of the plurality of second-sized cores to the selected first core of the first set of cores, thereby assigning resources of the selected first core of the first set of cores to all of the processes; updating the history of usage information of the first core in the first history log; and performing the plurality of processes on the first core of the first set of cores of the multi-core processing system. - View Dependent Claims (8)
-
-
9. 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 first amount of resources, and a plurality of second-speed core processors each having a second maximum speed faster than the first speed and a second amount of resources; a controller coupled to the plurality of core processors; a first history log that stores a first history of usage information for each core of the plurality of first-speed core processors; a second history log that stores a second history of usage information for each core of the plurality of second-speed core processors, wherein the first and the second history usage information includes at least one of; a selection count number indicating a number of times the core processor has been selected, and 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; wherein the controller is configured to; (1) 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 a first second-speed core processor of the plurality of second-speed core processors based on a history of usage of the plurality of second-speed core processors, and assign one or more tasks to the first second-speed core processor of the plurality of second-speed core processors; (2) when a second second-speed core processor of the plurality of second-speed core processors is performing a plurality of tasks, and a determination is made that all of the plurality of tasks being performed by the second second-speed core processor of the plurality of second-speed core processors can be processed using the first amount of resources or less; select a second first-speed core processor of the plurality of first-speed core processors, which is not the at least one excluded first-speed core processor of the plurality of first-speed core processors, based on a history of usage of the plurality of first-speed core processors; move all of the plurality of tasks from the second second-speed core processor of the plurality of second-speed core processors to the second first-speed core processor of the plurality of first-speed core processors; update the first history of usage information of the second first-speed core processor in the first history log; and perform the plurality of tasks on the second first-speed core processor of the heterogeneous multi-core processing system. - View Dependent Claims (10, 11, 12)
-
-
13. A heterogeneous multi-core processing system comprising:
-
a plurality of first cores each having a first size; a plurality of second cores each 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; and a controller coupled to the plurality of first cores and 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; 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 first history logs and second history logs store history of usage information for each of the plurality of first cores and the plurality of second cores, and the history of usage information includes one or more of; a selection count number indicating a number of times the 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; and wherein the controller is configured to; receive an external request, wherein the external request is to exclude from target candidate cores at least one core that is forcefully adjusted at the external request among unoccupied cores, exclude as a target candidate core the at least one core based on the external request, the at least one core being an unoccupied core from among the plurality of first cores and the plurality of second cores; receive a request to perform a task; assign the task to a selected core from among the plurality of first cores and the plurality of second cores, the selected core selected based on at least one of the history of usage information stored in the first history log and the history of usage information stored in the second history log, and the selected core not being the at least one core excluded as the target candidate core; determine that a set of 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, based on a determined amount of resources available at the first core; in response to the determination, move the set of tasks to the first core of the plurality of first cores, so that the set of tasks are performed on the first core of the plurality of first cores of the heterogeneous multi-core processing system; and update the history of usage information in the first history log or the second history log. - View Dependent Claims (14, 15)
-
-
16. A system on chip comprising:
-
a plurality of first cores; a plurality of second cores different from the plurality of first cores in one or more of transistor size, speed, or architecture; and a controller; a first history log that stores a first history of usage information for each core of the plurality of first cores; and a second history log that stores a second history of usage information for each core of the plurality of first cores, wherein the first and the second history of usage information includes at least one of; a selection count number indicating a number of times the 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; wherein the controller is configured to; exclude as a target candidate core at least one core based on an external request, the at least one core being an unoccupied core from among the plurality of first cores and the plurality of second cores; determine whether a first core of the plurality of first cores has sufficient resources available to perform a requested task; 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, the selected core not being the at least one core excluded as the target candidate core, wherein the selecting depends at least in part on history information reflecting a history of usage of the plurality of first cores and the plurality of second cores; 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; when it is determined that the first-sized core has sufficient resources to perform all of the tasks being performed by the second-sized core, move all of the tasks being performed by the second-sized core to the first-sized core; update the first history of usage information of the first-sized core in the first history log; and perform all of the moved tasks on the first-sized core of the system on chip. - View Dependent Claims (17)
-
Specification