IP Library › Granted Patent US 12,147,831
Granted Patent B2
US 12,147,831 · App. 18/625,771 · Granted Nov 19, 2024

Manycore system

Inventors: Ju Hyun Kim (Yongin-si, KR); Do Hun Kim (Yongin-si, KR); Kwang Sun Lee (Yongin-si, KR); Kee Bum Shin (Yongin-si, KR)
Assignee: MetisX CO., Ltd.
G06F9/4856
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 12,147,831
App. No.
18/625,771
Granted
Nov 19, 2024
Kind
B2
Abstract

The present disclosure relates to a manycore system which includes a device memory configured to store data associated with a job requested to be offloaded from a host device, and a plurality of clusters. Each of the plurality of clusters includes a program memory configured to store a program associated with the job requested to be offloaded, a plurality of cores configured to execute one or more threads associated with the job, and a management module configured to allocate one or more tasks associated with the job to the plurality of cores based on job loads of the plurality of cores, and control thread execution corresponding to the one or more allocated tasks. Each core includes thread areas configured to independently store and track an execution state of each thread executed on the core, and each thread executed on the core is independently executed using a separate thread area.

Claims (52)

1. A manycore system comprising:

a plurality of clusters; and

a device memory configured to

receive an offloading instruction from a host device, wherein the offloading instruction is generated by an offloading library of the host device, the offloading instruction includes information on a number of clusters which are selected to be used for offloading, among the plurality of clusters, based on estimation of a job load for each cluster through an existing task allocation state and a waiting queue state of each cluster, the offloading instruction includes information on allocation of a number of memories of the manycore system for offloading, and the offloading instruction does not specify allocation of cores and threads of the plurality of clusters;

store data associated with a job requested to be offloaded from the host device, wherein each of the plurality of clusters includes:

a program memory configured to store a program associated with the job requested to be offloaded;

a plurality of cores configured to execute one or more threads associated with the job; and

a management module configured to receive a plurality of tasks included in the job; and

allocate one or more tasks among the received plurality of tasks to the plurality of cores based on job loads of all core and thread areas in the cluster, and control thread execution corresponding to the one or more allocations,

each of the plurality of cores includes a plurality of thread areas configured to independently store and track an execution state of each of the one or more threads executed on the core, and

each of the one or more threads executed on the core is independently executed using a separate thread area,

wherein each of the plurality of thread areas includes:

a program counter configured to store information on an address of an instruction that each thread is executing; and

a register file configured to store an intermediate value of the operation that each thread is executing.

2. The manycore system according to claim 1 , wherein each of the plurality of cores includes one or more execution units configured to execute operations associated with the one or more threads executed on the core.

3. The manycore system according to claim 1 , wherein the job includes a plurality of tasks, and

when the plurality of tasks are allocated to a specific cluster of the plurality of clusters, the management module of the specific cluster is configured to allocate the plurality of tasks to one or more thread areas included in the specific cluster based on job loads of a plurality of cores included in the specific cluster.

4. The manycore system according to claim 1 , wherein the job includes a plurality of tasks,

the plurality of tasks are allocated to a plurality of thread areas in one or more cores of a specific cluster of the plurality of clusters, and

the one or more cores are configured to perform the plurality of tasks using the plurality of thread areas allocated with the plurality of tasks.

5. The manycore system according to claim 1 , wherein each of the plurality of clusters further includes a first cache memory configured to cache the data stored in the device memory.

6. The manycore system according to claim 5 , wherein each of the plurality of clusters further includes one or more second cache memories associated with the plurality of cores included in the cluster, and

the second cache memory is configured to cache the data stored in the device memory or the first cache memory.

7. The manycore system according to claim 1 , wherein each of the plurality of clusters further includes one or more instruction cache memories associated with the plurality of cores included in the cluster, and

the instruction cache memories are configured to cache instructions stored in the program memory.

8. A manycore system comprising:

a plurality of clusters; and

a device memory configured to

receive an offloading instruction from a host device, wherein the offloading instruction is generated by an offloading library of the host device, the offloading instruction includes information on a number of clusters which are selected to be used for offloading, among the plurality of clusters, based on estimation of a job load for each cluster through an existing task allocation state and a waiting queue state of each cluster, the offloading instruction includes information on allocation of a number of memories of the manycore system for offloading, and the offloading instruction does not specify allocation of cores and threads of the plurality of clusters;

store data associated with a job requested to be offloaded from the host device, wherein each of the plurality of clusters includes:

a program memory configured to store a program associated with the job requested to be offloaded;

a plurality of cores configured to execute one or more threads associated with the job; and

a management module configured to receive a plurality of tasks included in the job; and

allocate one or more tasks among the received plurality of tasks to the plurality of cores based on job loads of all core and thread areas in the cluster, and control thread execution corresponding to the one or more allocations,

each of the plurality of cores includes a plurality of thread areas configured to independently store and track an execution state of each of the one or more threads executed on the core, and

each of the one or more threads executed on the core is independently executed using a separate thread area,

wherein the job includes a plurality of tasks that is in sequence,

the plurality of tasks in sequence are allocated to a plurality of thread areas in one or more cores in a specific cluster of the plurality of clusters, and

the management module included in the specific cluster is configured to control the one or more cores such that a task allocated to a specific thread area of the plurality of thread areas starts after a pre-allocated task ends.

9. A manycore system comprising:

a plurality of clusters; and

a device memory configured to

receive an offloading instruction from a host device, wherein the offloading instruction is generated by an offloading library of the host device, the offloading instruction includes information on a number of clusters which are selected to be used for offloading, among the plurality of clusters, based on estimation of a job load for each cluster through an existing task allocation state and a waiting queue state of each cluster, the offloading instruction includes information on allocation of a number of memories of the manycore system for offloading, and the offloading instruction does not specify allocation of cores and threads of the plurality of clusters;

store data associated with a job requested to be offloaded from the host device, wherein each of the plurality of clusters includes:

a program memory configured to store a program associated with the job requested to be offloaded;

a plurality of cores configured to execute one or more threads associated with the job; and

a management module configured to receive a plurality of tasks included in the job; and

allocate one or more tasks among the received plurality of tasks to the plurality of cores based on job loads of all core and thread areas in the cluster, and control thread execution corresponding to the one or more allocations,

each of the plurality of cores includes a plurality of thread areas configured to independently store and track an execution state of each of the one or more threads executed on the core, and

each of the one or more threads executed on the core is independently executed using a separate thread area,

wherein each of the plurality of clusters further includes one or more co-processors configured to assist an operation of a plurality of cores included in the cluster, and

the one or more co-processors are configured to be connected to at least one of the plurality of cores included in the cluster through a co-processor interface.

Assignments (2)
CHANGE OF NAME Recorded Jan 13, 2025
From: METISX CO., LTD.
To: XCENA INC.
Reel/Frame 069877/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2024
From: KIM, JU HYUN; KIM, DO HUN; LEE, KWANG SUN; SHIN, KEE BUM
To: METISX CO., LTD.
Reel/Frame 066994/0325 →
Priority Claims (1)
KR 10-2023-0046121 · Apr 7, 2023 · national
Continuity (1)
Related Publication 20240338243A1 · Oct 10, 2024