System and method for parallel processing using dynamically configurable proactive co-processing cells
AssigneeSwarm Technology LLC
InventorAlfonso Iniguez
Life of this patent
Estimating the term…
Abstract
A parallel processing architecture includes a CPU, a task pool populated by the CPU, and a plurality of autonomous co-processing cells each having an agent configured to proactively interrogate the task pool to retrieve tasks appropriate for a particular so-processor. Each co-processor communicates with the task pool through a switching fabric, which facilitates connections for data transfer and arbitration between all system resources. Each so-processor notifies the task pool when a task or task thread is completed, whereupon the task pool notifies the CPU.
Claims12
A processing system, comprising:
- a task pool;
- a controller configured to populate the task pool with a plurality of first tasks and a plurality of second tasks;
- a first co-processor configured to successively:
- retrieve a first task from the task pool;
- deliver the first task to the first co-processor;
- process the first task;
- generate first resulting data;
- and update the task pool to reflect completion of the first task, all without any communication between the first co-processor and the controller;
- and
- a second co-processor configured to successively:
- retrieve a second task from the task pool;
- deliver the second task to the second co-processor;
- process the second task;
- generate second resulting data;
- and update the task pool to reflect completion of the second task, all without any communication between the second co-processor and the controller;
- wherein the processing system is configured to dynamically accept the first co-processor, the second co-processor, and an additional co-processor into the processing system on a plug-and-play basis without any communication with the controller.
A processing system, comprising:
- a task pool;
- a controller configured to populate the task pool with a plurality of first tasks and a plurality of second tasks;
- a first co-processor configured to successively:
- retrieve a first task from the task pool;
- deliver the first task to the first co-processor;
- process the first task;
- generate first resulting data;
- and update the task pool to reflect completion of the first task, all without any communication between the first co-processor and the controller;
- and
- a second co-processor configured to successively:
- retrieve a second task from the task pool;
- deliver the second task to the second co-processor;
- process the second task;
- generate second resulting data;
- and update the task pool to reflect completion of the second task, all without any communication between the second co-processor and the controller;
- wherein:
- the processing system is configured to dynamically accept the first co-processor, the second co-processor, and an additional co-processor into the processing system on a plug-and-play basis without any communication with the controller;
- the first task includes indicia of a first task type, the first co-processor is configured to perform tasks of the first type, and the first agent is configured to search the task pool for a task of the first type;
- the second task includes indicia of a second task type, the second co-processor is configured to perform tasks of the second type, and the second agent is configured to search the task pool for a task of the second type;
- the first co-processor includes a first agent comprising a first source address, a first destination address, and a first payload;
- and
- the second co-processor includes a second agent comprising a second source address, a second destination address, and a second payload;
- and further wherein:
- when the first agent is retrieving the first task from the task pool, the first source address corresponds to an address associated with the first co-processor, the first destination address corresponds to an address associated with the task pool, and the first payload includes a first function which the first co-processor is configured to perform;
- when the first agent is returning from the task pool, the first source address is the task pool's address, the first destination address is the first co-processor's address, and the first payload includes a descriptor of the first task;
- when the second agent is retrieving the second task from the task pool, the second source address corresponds to an address associated with the second co-processor, the second destination address corresponds to an address associated with the task pool, and the second payload includes a second function which the second co-processor is configured to perform;
- and
- when the second agent is returning from the task pool, the second source address is the task pool's address, the second destination address is the second co-processor's address, and the second payload includes a descriptor of the second task.
Dependencies are inferred from the claim text.