IP Library Granted Patent US 8,813,073
Granted Patent B2
US 8,813,073 · App. 13/116,601 · Granted Aug 19, 2014

Compiling apparatus and method of a multicore device

Inventors: Ki-Seok Kwon (Seoul, KR); Suk-Jin Kim (Seoul, KR); Scott Mahlke (Ann Arbor, MI); Yong-Jun Park (Ann Arbor, MI)
Assignee: Samsung Electronics Co., Ltd.
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,813,073
App. No.
13/116,601
Granted
Aug 19, 2014
Kind
B2
Abstract

An apparatus and method capable of reducing idle resources in a multicore device and improving the use of available resources in the multicore device are provided. The apparatus includes a static scheduling unit configured to generate one or more task groups, and to allocate the task groups to virtual cores by dividing or combining the tasks included in the task groups based on the execution time estimates of the task groups. The apparatus also includes a dynamic scheduling unit configured to map the virtual cores to physical cores.

Claims (60)

1. A compiling apparatus comprising:

a processor comprising

a static scheduling unit configured to

generate task groups comprising respective tasks, and comprising a first task group and a second task group, and

allocate the task groups to virtual cores by dividing or combining the tasks included in the task groups based on execution time estimates of the task groups, and

a dynamic scheduling unit configured to

map the virtual cores to physical cores comprising a physical core and a second physical core, and

reallocate a part of the first task group with a highest execution time estimate and allocated to the first physical core, to the second physical core connected to the first physical core and to which the second task group with a lowest execution time estimate is allocated.

2. The compiling apparatus of claim 1 , wherein the static scheduling unit is configured to:

calculate the execution time estimates of the task groups based on a number of virtual cores to execute each of the task groups; and

regenerate the of task groups by dividing or combining the tasks included in the task groups based on the results of the calculation.

3. The compiling apparatus of claim 1 , wherein the static scheduling unit is configured to:

detect the first task group with the highest execution time estimate and the second task group with the lowest execution time estimate; and

regenerate the task groups by dividing or combining the tasks included in the task groups until a difference between the highest execution time estimate and the lowest execution time estimate is less than a predetermined threshold value.

4. The compiling apparatus of claim 3 , wherein, if the difference is not less than the threshold value, the static scheduling unit is configured to increase a number of virtual cores that are allocated to the first task group with the highest execution time estimate.

5. The compiling apparatus of claim 3 , wherein, if the difference is not less than the threshold value, the static scheduling unit is configured to merge the second task group with the lowest execution time estimate with another task group among the task groups.

6. The compiling apparatus of claim 1 , wherein the static scheduling unit comprises:

a task classifier configured to classify the tasks into big tasks and small tasks based on execution time estimates of the tasks, the big tasks having execution time estimates that are greater than a predefined threshold value, and the small tasks having execution time estimates that are not greater that the predefined threshold value;

a big task allocator configured to

generate the task groups,

calculate the execution time estimates of the task groups based on a number of virtual cores to be allocated to each of the task groups,

reallocate the task groups by dividing or combining the big tasks included in the task groups based on the execution time estimates of the task groups, and

allocate the task groups to the virtual cores; and

a small task allocator configured to

detect a main task of the small tasks from the big tasks, and

allocate the small tasks to a virtual core, among the virtual cores, to which the detected main task is allocated so that the small tasks are executed when non-cyclic codes of the detected main task are executed.

7. The compiling apparatus of claim 1 , wherein the dynamic scheduling unit is configured to:

map a first virtual core, among the virtual cores, to which the first task group with the highest execution time estimate is allocated, to the first physical core; and

map a second virtual core, among the virtual cores, to which second the task group with the lowest execution time estimate is allocated, to the second physical core, connected to the first physical core.

8. The compiling apparatus of claim 1 , wherein the dynamic scheduling unit is configured to:

detect a resource-restrained portion from the first task group with the highest execution time estimate; and

reallocate the detected resource-restrained portion to the second physical core based on an execution time estimate of each of the physical cores.

9. The compiling apparatus of claim 1 , further comprising:

a task phase matching unit configured to

detect a preceding task and a group of subsequent tasks having a parallel relationship therebetween from a data flow graph, and

if one of the subsequent tasks is allocated to a different physical core from the preceding task, among the physical cores, match pipeline stages of the subsequent tasks such that the subsequent tasks are executed at a same pipeline stage.

10. The compiling apparatus of claim 9 , wherein the task phase matching unit is configured to:

delay the pipeline stage of one of the subsequent tasks that is allocated to a same physical core as the preceding task, among the physical cores, such that the subsequent tasks are executed at the same pipeline stage.

11. A compiling method comprising:

generating task groups comprising respective tasks, and comprising a first task group and a second task group;

allocating the task groups to virtual cores by dividing or combining the tasks included in the task groups based on execution time estimates of the task groups;

mapping the virtual cores to physical cores comprising a first physical core and a second physical core; and

reallocating a part of the first task group with a highest execution time estimate and allocated to the first physical core, to the second physical core to which the second task group with a lowest execution time estimate is allocated.

12. The compiling method of claim 11 , further comprising:

detecting a preceding task and a group of subsequent tasks that have a parallel relationship therebetween from a data flow graph; and

in response to one of the subsequent tasks being allocated to a different physical core from the preceding task, among the physical cores, matching pipeline stages of the subsequent tasks such that the subsequent tasks are executed at a same pipeline stage.

13. A processor comprising:

physical cores configured to process tasks, and comprising a first physical core and a second physical core;

a static scheduling unit configured to

generate task groups comprising tasks, and comprising a first task group and a second task group, and

allocate the task groups to virtual cores by dividing or combining the tasks included in the task groups based on execution time estimates of the task groups; and

a dynamic scheduling unit configured to

map the virtual cores to the physical cores, and

reallocate a part of the first task group with a highest execution time estimate and allocated to the first physical core, to the second physical core connected to the first physical core and to which the second task group with a lowest execution time estimate is allocated.

14. The processor of claim 13 , wherein the dynamic scheduling unit is configured to:

identify the first task group with the highest execution time estimate and allocated to the first physical core.

15. The processor of claim 13 further comprising:

a task phase matching unit configured to

detect a preceding task and a group of subsequent tasks that have a parallel relationship to each other; and

if one of the subsequent tasks is allocated to a different physical core from the preceding task, among the physical cores, match pipeline stages of each of the subsequent tasks such that the subsequent tasks are executed at a same pipeline stage.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 26, 2011
From: KWON, KI SEOK; KIM, SUK JIN; MAHLKE, SCOTT; PARK, YONG JUN
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 026347/0668 →
Priority Claims (1)
KR 10-2010-0130254 · Dec 17, 2010 · national
Continuity (1)
Related Publication 20120159507A1 · Jun 21, 2012