COMPOSING CORES AND FPGAS AT MASSIVE SCALE WITH DIRECTIONAL, TWO DIMENSIONAL ROUTERS AND INTERCONNECTION NETWORKS
First Claim
1. An apparatus, comprising:
- a first FPGA including a first remote router, a first client core, and a first network on a chip communicatively coupled to the remote router and to the client core; and
a second FPGA including a second remote router, a second client core, and a second network on a chip communicatively coupled to the second remote router and to the second client core, the second FPGA configured to send a message from the second client core to the first client core by causing the message to travel from the second client core, to the second network on a chip, to the second remote router, to the first remote router, to the first network on a chip, and to the first client core.
1 Assignment
0 Petitions
Accused Products
Abstract
Embodiments of systems and methods for sending messages between cores across multiple field programmable gate arrays (FPGAs) and other devices are disclosed. A uniform destination address directs a message to a core in any FPGA. Message routing within one FPGA may use a bufferless directional 2D torus Network on Chip (NOC). Message routing between FPGAs may use remote router cores coupled to the NOCs. A message from one core to another in another FPGA is routed over a NOC to a local remote router then to external remote router(s) across inter-FPGA links or networks to the remote router of the second FPGA and across a second NOC to the destination core. Messages may also be multicast to multiple cores across FPGAs. A segmented directional torus NOC is also disclosed. The insertion of shortcut routers into directional torus rings achieves shorter ring segments, reducing message delivery latency and increasing NOC bandwidth.
-
Citations
42 Claims
-
1. An apparatus, comprising:
-
a first FPGA including a first remote router, a first client core, and a first network on a chip communicatively coupled to the remote router and to the client core; and a second FPGA including a second remote router, a second client core, and a second network on a chip communicatively coupled to the second remote router and to the second client core, the second FPGA configured to send a message from the second client core to the first client core by causing the message to travel from the second client core, to the second network on a chip, to the second remote router, to the first remote router, to the first network on a chip, and to the first client core. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14-15. -15. (canceled)
-
16. An FPGA, comprising:
-
a first network on a chip; a first client core communicatively coupled to the first network on a chip; and a first remote router communicatively coupled to the first network on a chip and configured to receive a message from a source off of the FPGA, and to send the message to the first client core via the first network on a chip. - View Dependent Claims (17)
-
-
18. A method, comprising:
-
sending, from a first client core of a first FPGA to a first network on a chip of the first FPGA, a message and a destination address indicating that the destination of the message is a second client core of a second FPGA; and in response to the destination address sending the message and the destination address from the first network on a chip to a first remote router of the first FPGA, sending the message and the destination address from the first remote router to a second remote router of the second FPGA, sending the message and the destination address from the second remote router to a second network on a chip of the second FPGA, and sending the message from the second network on a chip to the second client core. - View Dependent Claims (19, 20, 21, 22, 23)
-
-
24-25. -25. (canceled)
-
26. A method, comprising:
-
receiving, with a first remote router of a first FPGA from a source off of the first FPGA, a message and a destination address indicating a client core of the first FPGA; sending, in response to the destination address, the message and the destination address from the first remote router to a network on a chip of the first FPGA; and sending, in response to the destination address, the message from the network on a chip to the client core. - View Dependent Claims (27, 28)
-
-
29-38. -38. (canceled)
-
39. A non-transient machine-readable medium storing configuration data, that, when loaded into a programmable circuit array, causes the programmable circuit array to instantiate a circuit configured:
-
to send, from a first client core of a first FPGA to a first network on a chip of the first FPGA, a message and a destination address indicating that the destination of the message is a second client core of a second FPGA; and in response to the destination address to send the message and the destination address from the first network on a chip to a first remote router of the first FPGA, to send the message and the destination address from the first remote router to a second remote router of the second FPGA, to send the message and the destination address from the second remote router to a second network on a chip of the second FPGA, and to send the message from the second network on a chip to the second client core.
-
-
40. (canceled)
-
41. A non-transient machine-readable medium storing configuration data, that, when loaded into a programmable circuit array, causes the programmable circuit array to instantiate a circuit configured:
-
to receive, with a first remote router of a first FPGA from a source off of the first FPGA, a message and a destination address indicating a client core of the first FPGA; to send, in response to the destination address, the message and the destination address from the first remote router to a network on a chip of the first FPGA; and to send, in response to the destination address, the message from the network on a chip to the client core.
-
-
42-43. -43. (canceled)
Specification