INDIRECT INTER-THREAD COMMUNICATION USING A SHARED POOL OF INBOXES
First Claim
1. A method for communicating data in a network on chip (NOC) processing unit that includes a plurality of nodes, each node including a router and an integrated processor block, each integrated processor block including at least one hardware thread, and each hardware thread executing an instance of a stage of a plurality of stages of a software pipeline, wherein the routers of each node are coupled together in an on-chip network, the method comprising:
- generating output data from a source hardware thread executing an instance of a first stage of the software pipeline;
packetizing the output data into at least one data packet, each data packet of the at least one data packet including a source identifier associated with the source hardware thread and a first message flag indicating whether the data packet is a first message of a message group, wherein the at least one data packet includes a first data packet having a first message flag indicating that the first data packet is the first message of the message group;
communicating the at least one data packet from the source hardware thread to a shared inbox associated with a pool of destination hardware threads executing instances of a second stage of the software pipeline among the plurality of hardware threads; and
in response to a request from any destination thread among the pool of hardware threads, communicating the first data packet from the shared inbox to an inbox buffer associated with such requesting destination thread and locking data packets stored in the shared inbox having the same source identifier as the first data packet such that the locked data packets may only be communicated to the inbox buffer associated with the requesting destination thread.
1 Assignment
0 Petitions
Accused Products
Abstract
A circuit arrangement, method, and program product for communicating data between hardware threads of a network on a chip processing unit utilizes shared inboxes to communicate data to pools of hardware threads. The associated hardware in the pools threads receive data packets from the shared inboxes in response to issuing work requests to an associated shared inbox. Data packets include a source identifier corresponding to a hardware thread from which the data packet was generated, and the shared inboxes may manage data packet distribution to associated hardware threads based on the source identifier of each data packet. A shared inbox may also manage workload distribution and uneven workload lengths by communicating data packets to hardware threads associated with the shared inbox in response to receiving work requests from associated hardware threads.
57 Citations
23 Claims
-
1. A method for communicating data in a network on chip (NOC) processing unit that includes a plurality of nodes, each node including a router and an integrated processor block, each integrated processor block including at least one hardware thread, and each hardware thread executing an instance of a stage of a plurality of stages of a software pipeline, wherein the routers of each node are coupled together in an on-chip network, the method comprising:
-
generating output data from a source hardware thread executing an instance of a first stage of the software pipeline; packetizing the output data into at least one data packet, each data packet of the at least one data packet including a source identifier associated with the source hardware thread and a first message flag indicating whether the data packet is a first message of a message group, wherein the at least one data packet includes a first data packet having a first message flag indicating that the first data packet is the first message of the message group; communicating the at least one data packet from the source hardware thread to a shared inbox associated with a pool of destination hardware threads executing instances of a second stage of the software pipeline among the plurality of hardware threads; and in response to a request from any destination thread among the pool of hardware threads, communicating the first data packet from the shared inbox to an inbox buffer associated with such requesting destination thread and locking data packets stored in the shared inbox having the same source identifier as the first data packet such that the locked data packets may only be communicated to the inbox buffer associated with the requesting destination thread.
-
-
2. A method for communicating between a plurality of hardware threads disposed in a plurality of nodes in a network on chip (NOC) processing unit, the method comprising:
-
communicating a first data packet from a source hardware thread among the plurality of hardware threads to a shared inbox associated with a pool of destination hardware threads among the plurality of hardware threads; and in response to a request from any destination thread among the pool of hardware threads, communicating the first data packet from the shared inbox to an inbox buffer associated with such requesting destination thread. - View Dependent Claims (3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A circuit arrangement comprising:
-
a plurality of hardware threads coupled to one another in a network on a chip (NOC) arrangement, the plurality of hardware threads including a pool of destination hardware threads each including an execution unit; a shared inbox including a memory coupled to the pool of hardware threads and configured to receive a first data packet from a source hardware thread of the plurality of hardware threads and communicate the first data packet to any destination thread among the pool of hardware threads in response to a receiving a request from such requesting destination thread. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
-
Specification