IP Library Granted Patent US 11,175,922
Granted Patent B1
US 11,175,922 · App. 16/889,159 · Granted Nov 16, 2021

Coarse-grain reconfigurable array processor with concurrent handling of multiple graphs on a single grid

Inventors: Yoav Etsion (Atlit, IL); Dani Voitsechov (Atlit, IL); Evgeni Krimer (Haifa, IL); Jonathan Friedmann (Even Yehuda, IL)
Assignee: SPEEDATA LTD.
G06F9/3836G06F13/4027
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 11,175,922
App. No.
16/889,159
Granted
Nov 16, 2021
Kind
B1
Abstract

A processor includes a compute fabric and a controller. The compute fabric includes an array of compute nodes and interconnects that configurably connect the compute nodes. The controller is configured to receive at least first and second different Data-Flow Graphs (DFGs), each specifying code instructions, and to configure at least some of the compute nodes and interconnects in the compute fabric to concurrently execute the code instructions specified in the first and second DFGs, and send to the compute fabric multiple first threads that execute the code instructions specified in the first DFG and multiple second threads that execute the code instructions specified in the second DFG, thereby causing the compute fabric to execute, at least during a given time interval, both code instructions specified in the first DFG and code instructions specified in the second DFG.

Claims (34)

1. A processor, comprising:

a compute fabric, comprising an array of compute nodes and interconnects that configurably connect the compute nodes; and

a controller, configured to:

receive at least first and second different Data-Flow Graphs (DFGs), each specifying code instructions; and

configure at least some of the compute nodes and interconnects in the compute fabric to concurrently execute the code instructions specified in the first and second DFGs, and send to the compute fabric multiple first threads that execute the code instructions specified in the first DFG and multiple second threads that execute the code instructions specified in the second DFG, thereby causing the compute fabric to execute, at least during a given time interval, both code instructions specified in the first DFG and code instructions specified in the second DFG.

2. The processor according to claim 1 , wherein, at least in a given clock cycle of the compute fabric, one or more compute nodes execute code instructions specified in the first DFG and one or more other compute nodes execute code instructions specified in the second DFG.

3. The processor according to claim 1 , wherein, at least during the given time interval, one or more of the compute nodes switch from execution of code instructions specified in the first DFG to execution of code instructions specified in the second DFG.

4. The processor according to claim 1 , wherein a first compute node in the compute fabric is configured to switch-over from the first DFG to the second DFG at a first time, and a second compute node in the compute fabric is configured to switch-over from the first DFG to the second DFG at a second time, different from the first time.

5. The processor according to claim 1 , wherein a given compute node is configured to switch-over from the first DFG to the second DFG in response to completing processing all the threads associated with the first DFG.

6. The processor according to claim 1 , wherein the controller is configured to send to one or more of the compute nodes a control signal that permits the compute nodes to switch-over from the first DFG to the second DFG, and wherein a given compute node in the compute fabric is configured to switch-over from the first DFG to the second DFG not before receiving the control signal.

7. The processor according to claim 1 , wherein a given compute node, which participates in executing the code instructions specified in the first DFG but does not participate in executing the code instructions specified in the second DFG, is configured to self-deactivate in response to completing processing all the threads associated with the first DFG.

8. The processor according to claim 1 , wherein the controller is configured to activate a given compute node, which does not participate in executing the code instructions specified in the first DFG but participates in executing the code instructions specified in the second DFG.

9. The processor according to claim 1 , wherein the controller is configured to instruct the compute nodes synchronously to alternate between at least the first and second DFGs.

10. The processor according to claim 1 , wherein a given compute node is configured to autonomously schedule alternation between at least the first and second DFGs.

11. The processor according to claim 10 , wherein the given compute node is configured to:

receive first input tokens by communicating with one or more first compute nodes that precede the given compute node in accordance with the first DFG;

receive second input tokens by communicating with one or more second compute nodes that precede the given compute node in accordance with the second DFG; and

execute the first input tokens and the second input tokens in accordance with the scheduled alternation between the first and second DFGs.

12. A computing method, comprising:

in a processor that includes a compute fabric comprising an array of compute nodes and interconnects that configurably connect the compute nodes, receiving at least first and second different Data-Flow Graphs (DFGs), each specifying code instructions; and

configuring at least some of the compute nodes and interconnects in the compute fabric to concurrently execute the code instructions specified in the first and second DFGs, and sending to the compute fabric multiple first threads that execute the code instructions specified in the first DFG and multiple second threads that execute the code instructions specified in the second DFG, thereby causing the compute fabric to execute, at least during a given time interval, both code instructions specified in the first DFG and code instructions specified in the second DFG.

13. The method according to claim 12 , wherein configuring the compute fabric comprises, at least in a given clock cycle of the compute fabric, causing one or more compute nodes to execute code instructions specified in the first DFG, and causing one or more other compute nodes to execute code instructions specified in the second DFG.

14. The method according to claim 12 , wherein configuring the compute fabric comprises, at least during the given time interval, causing one or more of the compute nodes to switch from execution of code instructions specified in the first DFG to execution of code instructions specified in the second DFG.

15. The method according to claim 12 , wherein configuring the compute fabric comprises causing a first compute node in the compute fabric to switch-over from the first DFG to the second DFG at a first time, and a second compute node in the compute fabric to switch-over from the first DFG to the second DFG at a second time, different from the first time.

16. The method according to claim 12 , wherein configuring the compute fabric comprises, in a given compute node, switching-over from the first DFG to the second DFG in response to completing processing all the threads associated with the first DFG.

17. The method according to claim 12 , wherein configuring the compute fabric comprises sending to one or more of the compute nodes a control signal that permits the compute nodes to switch-over from the first DFG to the second DFG, and, in a given compute node in the compute fabric, switching-over from the first DFG to the second DFG not before receiving the control signal.

18. The method according to claim 12 , and comprising self-deactivating a given compute node, which participates in executing the code instructions specified in the first DFG but does not participate in executing the code instructions specified in the second DFG, in response to completing processing all the threads associated with the first DFG.

19. The method according to claim 12 , wherein configuring the compute fabric comprises activating a given compute node, which does not participate in executing the code instructions specified in the first DFG but participates in executing the code instructions specified in the second DFG.

20. The method according to claim 12 , wherein configuring the compute fabric comprises instructing the compute nodes synchronously to alternate between at least the first and second DFGs.

21. The method according to claim 12 , and comprising, in a given compute node, autonomously scheduling alternation between at least the first and second DFGs.

22. The method according to claim 21 , wherein scheduling the alternation comprises performing, in the given compute node:

receiving first input tokens by communicating with one or more first compute nodes that precede the given compute node in accordance with the first DFG;

receiving second input tokens by communicating with one or more second compute nodes that precede the given compute node in accordance with the second DFG; and

executing the first input tokens and the second input tokens in accordance with the scheduled alternation between the first and second DFGs.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Jul 3, 2025
From: KREOS CAPITAL VII AGGREGATOR SCSP
To: SPEEDATA LTD
Reel/Frame 071599/0362 →
SECURITY INTEREST Recorded Jul 11, 2023
From: SPEEDATA LTD
To: KREOS CAPITAL VII AGGREGATOR SCSP
Reel/Frame 064205/0454 →
CHANGE OF ADDRESS Recorded Feb 8, 2022
From: SPEEDATA LTD.
To: SPEEDATA LTD.
Reel/Frame 058965/0096 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2020
From: ETSION, YOAV; VOITSECHOV, DANI; KRIMER, EVGENI; FRIEDMANN, JONATHAN
To: SPEEDATA LTD.
Reel/Frame 052805/0504 →
Continuity (1)
Continuation In Part 16860070 · Apr 28, 2020