IP Library Granted Patent US 12,306,689
Granted Patent B2
US 12,306,689 · App. 18/132,393 · Granted May 20, 2025

Compiler that generates configuration information for configuring an integrated circuit to mitigate inductive-induced voltage droop

Inventors: Darshan Gandhi (Palo Alto, CA); Manish K. Shah (Austin, TX); Raghu Prabhakar (San Jose, CA); Gregory Frederick Grohoski (Bee Cave, TX); Youngmoon Choi (Milpitas, CA); Jinuk Shin (San Jose, CA)
Assignee: SambaNova Systems, Inc.
G06F1/305G01R31/275G06F1/08G06F1/28G06F1/324
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 12,306,689
App. No.
18/132,393
Granted
May 20, 2025
Kind
B2
Abstract

A method includes analyzing a dataflow graph to generate configuration information loadable into an integrated circuit. The dataflow graph specifies operations to be performed and data dependencies between the operations. The configuration information is usable by the integrated circuit to configure compute units of the integrated circuit to perform respective one or more of the operations of the dataflow graph, control data flow between the compute units to accomplish the data dependencies between the respective operations performed by the compute units, and control when each compute unit starts to perform the respective operations on the data to mitigate supply voltage droop caused by a time rate of change of current drawn by the integrated circuit through inductive loads of the integrated circuit.

Claims (86)

1. A method, comprising:

analyzing a dataflow graph to generate configuration information loadable into an integrated circuit, wherein the dataflow graph specifies operations to be performed and data dependencies between the operations;

providing the configuration information for use by the integrated circuit to:

configure compute units of the integrated circuit to perform respective one or more of the operations of the dataflow graph;

control data flow between the compute units to accomplish the data dependencies between the respective operations performed by the compute units;

control when each compute unit starts to perform the respective operations on the data to mitigate supply voltage droop caused by a time rate of change of current drawn by the integrated circuit through inductive loads of the integrated circuit; and

guarantee that a delay of at least a predetermined number of clock cycles intervenes between each instance in which no more than the predetermined number of the compute units concurrently start to perform the respective operations.

2. A method comprising:

analyzing a dataflow graph to generate configuration information loadable into an integrated circuit, wherein the dataflow graph specifies operations to be performed and data dependencies between the operations;

wherein the configuration information is usable by the integrated circuit to:

configure compute units of the integrated circuit to perform respective one or more of the operations of the dataflow graph;

control data flow between the compute units to accomplish the data dependencies between the respective operations performed by the compute units; and

control when each compute unit starts to perform the respective operations on the data to mitigate supply voltage droop caused by a time rate of change of current drawn by the integrated circuit through inductive loads of the integrated circuit; and

guarantee that, during execution of the dataflow graph, no more than a predetermined number of the compute units concurrently start to perform the respective operations;

wherein the configuration information comprises a respective group identifier for each of the compute units;

wherein no more than the predetermined number of the compute units are configured with a same group identifier value; and

wherein the group identifier value of each compute unit is comparable with a counter of the compute unit to determine whether the compute unit is permitted to start to perform the respective operations.

3. The method of claim 2 , further comprising:

separating the compute units into N mutually exclusive groups; and

wherein the configuration information comprises a maximum value to which the counter counts, wherein the maximum value is N.

4. A method, comprising:

analyzing a dataflow graph to generate configuration information loadable into an integrated circuit, wherein the dataflow graph specifies operations to be performed and data dependencies between the operations;

wherein the configuration information is usable by the integrated circuit to:

configure compute units of the integrated circuit to perform respective one or more of the operations of the dataflow graph;

control data flow between the compute units to accomplish the data dependencies between the respective operations performed by the compute units; and

control when each compute unit starts to perform the respective operations on the data to mitigate supply voltage droop caused by a time rate of change of current drawn by the integrated circuit through inductive loads of the integrated circuit;

wherein the integrated circuit comprises multiple power domains configured to be supplied power by multiple respective power supplies;

wherein the configuration information is usable by the integrated circuit to configure two or more mutually exclusive subsets of the compute units to collectively perform one of the operations; and

wherein configuration information configures the integrated circuit such that the two or more mutually exclusive subsets of the compute units are in two or more mutually exclusive power domains of the multiple power domains such that the two or more mutually exclusive subsets of the compute units are permitted to concurrently start performing the one of the operations.

5. The method of claim 4 ,

wherein the one of the operations comprises a matrix multiply operation performed by the two or more mutually exclusive subsets of the compute units in a systolic manner.

6. A method, comprising:

analyzing a dataflow graph to generate configuration information loadable into an integrated circuit having compute units, wherein the dataflow graph specifies operations to be performed and data dependencies between the operations;

identifying current wavefronts in the dataflow graph;

assigning an identifier of one of the current wavefronts to each of the compute units; and

separating the compute units into mutually exclusive groups based on the current wavefront identifiers;

wherein the configuration information is usable by the integrated circuit to:

configure compute units of the integrated circuit to perform respective one or more of the operations of the dataflow graph;

control data flow between the compute units to accomplish the data dependencies between the respective operations performed by the compute units; and

control when each compute unit starts to perform the respective operations on the data to mitigate supply voltage droop caused by a time rate of change of current drawn by the integrated circuit through inductive loads of the integrated circuit.

7. The method of claim 6 ,

wherein the compute units are arranged as an array within the integrated circuit; and

wherein said separating the compute units into mutually exclusive groups is further based on coordinates of each compute unit within the array.

8. A non-transitory computer-readable storage medium storing computer program instructions, wherein the computer program instructions, when executed on a processor, implement a method comprising:

analyzing a dataflow graph to generate configuration information loadable into an integrated circuit, wherein the dataflow graph specifies operations to be performed and data dependencies between the operations;

wherein the configuration information is usable by the integrated circuit to:

configure compute units of the integrated circuit to perform respective one or more of the operations of the dataflow graph;

control data flow between the compute units to accomplish the data dependencies between the respective operations performed by the compute units;

control when each compute unit starts to perform the respective operations on the data to mitigate supply voltage droop caused by a time rate of change of current drawn by the integrated circuit through inductive loads of the integrated circuit; and

guarantee that a delay of at least a predetermined number of clock cycles intervenes between each instance in which no more than the predetermined number of the compute units concurrently start to perform the respective operations.

9. A non-transitory computer-readable storage medium storing computer program instructions, wherein the computer program instructions, when executed on a processor, implement a method comprising:

analyzing a dataflow graph to generate configuration information loadable into an integrated circuit, wherein the dataflow graph specifies operations to be performed and data dependencies between the operations;

wherein the configuration information is usable by the integrated circuit to:

configure compute units of the integrated circuit to perform respective one or more of the operations of the dataflow graph;

control data flow between the compute units to accomplish the data dependencies between the respective operations performed by the compute units;

control when each compute unit starts to perform the respective operations on the data to mitigate supply voltage droop caused by a time rate of change of current drawn by the integrated circuit through inductive loads of the integrated circuit; and

guarantee that, during execution of the dataflow graph, no more than a predetermined number of the compute units concurrently start to perform the respective operations;

wherein the configuration information comprises a respective group identifier for each of the compute units;

wherein no more than the predetermined number of the compute units are configured with a same group identifier value; and

wherein the group identifier value of each compute unit is comparable with a counter of the compute unit to determine whether the compute unit is permitted to start to perform the respective operations.

10. The non-transitory computer-readable storage medium of claim 9 , the method further comprising:

separating the compute units into N mutually exclusive groups; and

wherein the configuration information comprises a maximum value to which the counter counts, wherein the maximum value is N.

11. A non-transitory computer-readable storage medium storing computer program instructions, wherein the computer program instructions, when executed on a processor, implement a method comprising:

analyzing a dataflow graph to generate configuration information loadable into an integrated circuit, wherein the dataflow graph specifies operations to be performed and data dependencies between the operations;

wherein the configuration information is usable by the integrated circuit to:

configure compute units of the integrated circuit to perform respective one or more of the operations of the dataflow graph;

control data flow between the compute units to accomplish the data dependencies between the respective operations performed by the compute units; and

control when each compute unit starts to perform the respective operations on the data to mitigate supply voltage droop caused by a time rate of change of current drawn by the integrated circuit through inductive loads of the integrated circuit;

wherein the integrated circuit comprises multiple power domains configured to be supplied power by multiple respective power supplies;

wherein the configuration information is usable by the integrated circuit to configure two or more mutually exclusive subsets of the compute units to collectively perform one of the operations; and

wherein configuration information configures the integrated circuit such that the two or more mutually exclusive subsets of the compute units are in two or more mutually exclusive power domains of the multiple power domains such that the two or more mutually exclusive subsets of the compute units are permitted to concurrently start performing the one of the operations.

12. The non-transitory computer-readable storage medium of claim 11 ,

wherein the one of the operations comprises a matrix multiply operation performed by the two or more mutually exclusive subsets of the compute units in a systolic manner.

13. A non-transitory computer-readable storage medium storing computer program instructions, wherein the computer program instructions, when executed on a processor, implement a method comprising:

analyzing a dataflow graph to generate configuration information loadable into an integrated circuit having compute units, wherein the dataflow graph specifies operations to be performed and data dependencies between the operations;

identifying current wavefronts in the dataflow graph;

assigning an identifier of one of the current wavefronts to each of the compute units; and

separating the compute units into mutually exclusive groups based on the current wavefront identifiers;

wherein the configuration information is usable by the integrated circuit to:

configure compute units of the integrated circuit to perform respective one or more of the operations of the dataflow graph;

control data flow between the compute units to accomplish the data dependencies between the respective operations performed by the compute units; and

control when each compute unit starts to perform the respective operations on the data to mitigate supply voltage droop caused by a time rate of change of current drawn by the integrated circuit through inductive loads of the integrated circuit.

14. The non-transitory computer-readable storage medium of claim 13 ,

wherein the compute units are arranged as an array within the integrated circuit; and

wherein said separating the compute units into mutually exclusive groups is further based on coordinates of each compute unit within the array.

Assignments (2)
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Apr 18, 2025
From: SAMBANOVA SYSTEMS, INC.
To: SILICON VALLEY BANK, A DIVISION OF FIRST-CITIZENS BANK & TRUST COMPANY, AS AGENT
Reel/Frame 070892/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2023
From: GANDHI, DARSHAN; SHAH, MANISH K.; PRABHAKAR, RAGHU; GROHOSKI, GREGORY FREDERICK; CHOI, YOUNGMOON; SHIN, JINUK
To: SAMBANOVA SYSTEMS, INC.
Reel/Frame 064042/0169 →
Continuity (2)
Provisional Application 63405363 · Sep 9, 2022
Related Publication 20240085966A1 · Mar 14, 2024
References Cited (18)
US 6127746A · Clemente · 2000 [cited by examiner]
US 20050289499A1 · Ogawa · 2005 [cited by examiner]
US 20090063065A1 · Weekly · 2009 [cited by examiner]
US 20090112550A1 · Aikawa · 2009 [cited by examiner]
US 20140157277A1 · Eisen · 2014 [cited by examiner]
US 20140365750A1 · Shirvani · 2014 [cited by examiner]
US 20190041942A1 · Keceli · 2019 [cited by examiner]
US 20190267806A1 · Scott · 2019 [cited by examiner]
US 20190339757A1 · Roy · 2019 [cited by examiner]
US 20190341843A1 · Xu · 2019 [cited by examiner]
US 20240085965A1 · Gandhi · 2024 [cited by examiner]
US 20240085966A1 · Gandhi · 2024 [cited by examiner]
US 20240085967A1 · Gandhi · 2024 [cited by examiner]
US 20240094794A1 · Gandhi · 2024 [cited by examiner]
WO 2010142987A1 · 2010 [cited by applicant]
List of Related cases, dated Apr. 16, 2024, 2 pages. [cited by applicant]
M. Emani et al., Accelerating Scientific Applications With Sambanova Reconfigurable Dataflow Architecture, in Computing in Science & Engineering, vol. 23, No. 2, pp. 114-119, Mar. 26, 2021, [doi: 10.1109/MCSE.2021.30572… [cited by applicant]
Podobas et al, A Survey on Coarse-Grained Reconfigurable Architectures From a Performance Perspective, IEEEAccess, vol. 2020.3012084, Jul. 27, 2020, 25 pages. [cited by applicant]