NETWORK ON CHIP WITH TASK QUEUES
First Claim
Patent Images
1. A method comprising:
- sending, by a first processing element to a first task distributor, a first task request to perform at least a first task, wherein;
the first task request comprises a first task identifier, a first return indicator, and first data,the first task identifier identifies the first task,the first return indicator indicates a location to return a first result, andthe first task is associated with a first plurality of executable instructions;
selecting, by the first task distributor, a first queue associated with the first task;
obtaining, by the first task distributor, a first address of the first queue;
enqueuing, by the first task distributor, the first return indicator and the first data into the first queue in accordance with the first address;
dequeuing, by a second processing element at a first time, the first return indicator and the first data from the first queue;
executing, by the second processing element at a second time, the first plurality of executable instructions using at least a portion of the first data to obtain the first result; and
returning, by the second processing element, the first result in accordance with the first return indicator.
4 Assignments
0 Petitions
Accused Products
Abstract
A network on a chip architecture uses hardware queues to distribute multiple-instruction tasks to processors dedicated to performing that task. By repeatedly using the same processors to perform the same task, the frequency at which the processors access memory to retrieve instructions is reduced. If a hardware queue runs dry and a processor is remains idle, the processor will determine which queues have tasks and rededicate to performing a new task that has higher demand, without requiring the intervention of centralized load balancing software or specialized programming.
-
Citations
22 Claims
-
1. A method comprising:
-
sending, by a first processing element to a first task distributor, a first task request to perform at least a first task, wherein; the first task request comprises a first task identifier, a first return indicator, and first data, the first task identifier identifies the first task, the first return indicator indicates a location to return a first result, and the first task is associated with a first plurality of executable instructions; selecting, by the first task distributor, a first queue associated with the first task; obtaining, by the first task distributor, a first address of the first queue; enqueuing, by the first task distributor, the first return indicator and the first data into the first queue in accordance with the first address; dequeuing, by a second processing element at a first time, the first return indicator and the first data from the first queue; executing, by the second processing element at a second time, the first plurality of executable instructions using at least a portion of the first data to obtain the first result; and returning, by the second processing element, the first result in accordance with the first return indicator. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A system, comprising:
-
a first processor; a first memory storing first executable instructions to be executed by the first processor, wherein; the first executable instructions configure the first processor to send a first task request to a first task distributor, the first task request comprises a first task identifier, a first return indicator, and first data, the first return indicator indicates where to return a first result, and a first task identified by the first task identifier is associated with execution of second executable instructions; the first task distributor configured to identify a first queue associated with the first task identifier and enqueue the first return indicator and the first data in the first queue; the first queue comprising a plurality of storage locations, the first queue configured to provide a data-available indication that indicates there is data enqueued in at least one of the plurality of storage location; a second processor; a second memory configured to store the second executable instructions to be executed by the second processor, wherein the second executable instructions configure the second processor to; dequeue the first return indicator and the first data from the first queue in response to the data-available indication; process at least a portion of the first data to obtain the first result; and send the first result in accordance with a the first return indicator. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
-
21. A method comprising:
-
sending, by a first processing element to a first task distributor, (i) a first task identifier and a first address where a first return indicator and first data are stored in memory, or (ii) a first address where the first task identifier, the first return indicator, and first data are stored in memory, wherein; the first task identifier identifies a first task associated with execution of a first plurality of executable instructions, and the first return indicator indicates a location to return a first result; selecting, by the first task distributor, a first queue associated with the first task; obtaining, by the first task distributor, a second address of the first queue; enqueuing, by the first task distributor, the first address or an offset version of the first address into the first queue in accordance with the second address; dequeuing, by a second processing element, the first address or the offset version of the first address from the first queue; retrieving, by the second processing element, the first return indicator and the first data from memory based on the first address or the offset version of the first address; executing, by the second processing element, the first plurality of executable instructions using at least a portion of the first data to obtain the first result; and returning, by the second processing element, the first result in accordance with the first return indicator. - View Dependent Claims (22)
-
Specification