IP Library Granted Patent US 12,487,802
Granted Patent B2
US 12,487,802 · App. 18/583,845 · Granted Dec 2, 2025

Configuration file generation for fracturable data path in a coarse-grained reconfigurable processor

Inventors: Raghu Prabhakar (San Jose, CA); David Brian Jackson (Dana Point, CA); Scott Burson (Palo Alto, CA)
Assignee: SambaNova Systems, Inc.
G06F8/441G06F9/3001G06F9/44505G06F15/80
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,487,802
App. No.
18/583,845
Granted
Dec 2, 2025
Kind
B2
Abstract

A compiler generates a configuration file to configure a fracturable data path in a coarse-grained reconfigurable processor. The configuration file, when loaded into the reconfigurable processor enables a fracturable data path in a configurable unit of the reconfigurable processor to produce multiple independent address sequences by analyzing two address calculations to determine the number of pipeline stages for each calculation. The configuration file includes first and second configuration data for distinct sets of computational stages within the pipelined computation stages, allowing the processor to generate a first address sequence using N pipeline stages and a second address sequence using M pipeline stages, where N and M are positive integers.

Claims (55)

1 . A non-transitory machine-readable medium comprising computer instructions that, in

response to being executed by a processor, cause the processor to produce a configuration file to configure a fracturable data path of a configurable unit in an array of configurable units of a coarse-grained reconfigurable processor to generate a plurality of independent address sequences including a first address sequence generated using a first address calculation and a second address sequence generated using a second address calculation, the fracturable data path comprising a plurality of pipelined computation stages, the configuration file produced by:

analyzing the first address calculation and the second address calculation to determine to use N pipeline stages for the first address calculation and M pipeline stages for the second address calculation, wherein N and M are positive integers;

generating first configuration data for a first set of stages to produce the first address sequence and second configuration data for a second set of stages to generate the second address sequence, the first set of stages consisting of N computational stages of the plurality of pipelined computation stages and the second set of stages consisting of M computational stages of the plurality of pipelined computation stages; and

including the first configuration data and the second configuration data in the configuration file.

2 . The non-transitory machine-readable medium of claim 1 , wherein the configuration file includes two or more immediate values for use in at least one computation stage of the first set of stages and second set of stages in the configuration file.

3 . The non-transitory machine-readable medium of claim 1 , wherein the first set of stages and the second set of stages are disjoint sets of contiguous stages of the plurality of pipelined computation stages.

4 . The non-transitory machine-readable medium of claim 1 , the fracturable data path of the configurable unit including an input, and each of the plurality of pipelined computation stages of the fracturable data path further including a respective pipeline register, arithmetic logic unit (ALU) and selection logic to select two or more operands for the its ALU;

the first set of stages including a first starting stage and a first ending stage and the second set of stages including a second starting stage and a second ending stage;

the computer instructions further causing the processor to produce the configuration file to configure the selection logic of the first ending stage and second ending stage respectively to select operands for their respective ALU from outputs of the pipeline register of an immediately preceding stage, the input, or two or more immediate values associated with that stage from the configuration file; and

to configure the selection logic in the first starting stage and the second starting stage respectively to select operands for the respective ALU from the input, or the two or more immediate values associated with that stage, but not from the outputs of the pipeline register of the immediately preceding stage.

5 . The non-transitory machine-readable medium of claim 4 , wherein the respective ALU of each of the plurality of pipelined computation stages each are capable to perform both signed and unsigned arithmetic.

6 . The non-transitory machine-readable medium of claim 4 , the input comprising a first portion coupled to a scalar bus of the array of configurable units, a second portion coupled to a lane of a vector bus of the array of configurable units, and a third portion coupled to a counter of the configurable unit;

the fracturable data path of the configurable unit including a first output, a second output, and a third output;

the computer instructions further causing the processor to produce the configuration file by determining that one of the first portion, the second portion, or the third portion of the input directly provides a third address sequence and producing the configuration file to:

select data from an output of an ending stage of the first set of stages to provide on the first output;

select data from an output of an ending stage of the second set of stages to provide on the second output; and

select an output of a header input register coupled to the determined one of the first portion, the second portion, or the third portion of the input to provide on the third output.

7 . The non-transitory machine-readable medium of claim 4 , wherein the respective ALU of each of the plurality of pipelined computation stages have a first input, a second input, and a third input.

8 . The non-transitory machine-readable medium of claim 1 , the fracturable data path of the configurable unit having two or more sub-paths with pipeline registers in each of the plurality of pipelined computation stages broken into sub-path pipeline registers, and including a first output and a second output respectively configurable to selectively provide data from one sub-path pipeline register of the plurality of pipelined computation stages;

the computer instructions further causing the processor to produce the configuration file to configure the first output to select data from a sub-path pipeline register of an ending stage of the first set of stages, and to configure the second output to select data from a sub-path pipeline register of an ending stage of the second set of stages.

9 . The non-transitory machine-readable medium of claim 8 , the configurable unit further comprising a multi-port memory having a first address input associated with a first access port of the multi-port memory and a second address input associated with a second access port of the multi-port memory, the first address input coupled to the first output of the fracturable data path and the second address input coupled to the second output of the fracturable data path;

the computer instructions further causing the processor to produce the configuration file to configure the multi-port memory to execute a first operation using the first access port and a second operation using the second access port.

10 . The non-transitory machine-readable medium of claim 1 , wherein the first address sequence includes meta data for memory accesses.

11 . A method for producing a configuration file to configure a fracturable data path of a configurable unit in an array of configurable units of a coarse-grained reconfigurable processor to generate a plurality of independent address sequences including a first address sequence generated using a first address calculation and a second address sequence generated using a second address calculation, the fracturable data path comprising a plurality of pipelined computation stages, the method comprising:

analyzing the first address calculation and the second address calculation to determine to use N pipeline stages for the first address calculation and M pipeline stages for the second address calculation, wherein N and M are positive integers;

generating first configuration data for a first set of stages to produce the first address sequence and second configuration data for a second set of stages to generate the second address sequence, the first set of stages consisting of N computational stages of the plurality of pipelined computation stages and the second set of stages consisting of M computational stages of the plurality of pipelined computation stages; and

including the first configuration data and the second configuration data in the configuration file.

12 . The method of claim 11 , wherein the configuration file includes two or more immediate values for use in at least one computation stage of the first set of stages and second set of stages in the configuration file.

13 . The method of claim 11 , wherein the first set of stages and the second set of stages are disjoint sets of contiguous stages of the plurality of pipelined computation stages.

14 . The method of claim 11 , the fracturable data path of the configurable unit including an input, and each of the plurality of pipelined computation stages of the fracturable data path further including a respective pipeline register, arithmetic logic unit (ALU) and selection logic to select two or more operands for its respective ALU; and

the first set of stages including a first starting stage and a first ending stage and the second set of stages including a second starting stage and a second ending stage;

the method further comprising including information in the configuration file to:

configure the selection logic of the first ending stage and second ending stage respectively to select operands for their respective ALU from outputs of the pipeline register of an immediately preceding stage, the input, or two or more immediate values associated with that stage, and

configure the selection logic in the first starting stage and the second starting stage respectively to select operands for the respective ALU from the input, or the two or more immediate values associated with that stage, but not from the output of the pipeline register of the immediately preceding stage.

15 . The method of claim 14 , the input comprising a first portion coupled to a scalar bus of the array of configurable units, a second portion coupled to a lane of a vector bus of the array of configurable units, and a third portion coupled to a counter of the configurable unit; and

the fracturable data path includes two or more sub-paths and the pipeline registers of the plurality of computation stages are broken into sub-path pipeline registers;

the method further comprising:

determining a first ALU operation of the first address calculation for the first starting stage;

selecting a first sub-path to use for a value by the ALU of the first starting stage;

determining a second ALU operation of the first address calculation for the first ending stage;

selecting a second sub-path to use for a value by the ALU of the first ending stage; and

including information in the configuration file to configure the ALU of the first starting stage to perform the first ALU operation and direct a result of the first ALU operation to a sub-path pipeline register of the first starting stage associated with the first sub-path, and configure the ALU of the first ending stage to perform the second ALU operation and direct a result of the second ALU operation to a sub-path pipeline register of the first ending stage associated with the second sub-path.

16 . The method of claim 11 , the fracturable data path of the configurable unit having two or more sub-paths with pipeline registers in each of the plurality of pipelined computation stages broken into sub-path pipeline registers, and including a first output and a second output respectively configurable to selectively provide data from one sub-path pipeline register of the plurality of pipelined computation stages; and the method further comprising including information in the configuration file to:

configure the first output to select data from a sub-path pipeline register of an ending stage of the first set of stages, and

configure the second output to select data from a sub-path pipeline register of an ending stage of the second set of stages.

17 . The method of claim 16 , the configurable unit further comprising a multi-port memory having a first address input associated with a first access port of the multi-port memory and a second address input associated with a second access port of the multi-port memory, the first address input coupled to the first output of the fracturable data path and the second address input coupled to the second output of the fracturable data path;

the method further comprising including information in the configuration file to configure the multi-port memory to execute a first operation using the first access port and a second operation using the second access port.

18 . The method of claim 17 , wherein the first address sequence includes meta data for memory accesses.

19 . A data processing system comprising:

a compiler designed to produce a configuration file to configure a fracturable data path of a configurable unit in an array of configurable units of a coarse-grained reconfigurable processor to generate a plurality of independent address sequences including a first address sequence generated using a first address calculation and a second address sequence generated using a second address calculation, the fracturable data path comprising a plurality of pipelined computation stages, the compiler further configured to:

analyze the first address calculation and the second address calculation to determine to use N pipeline stages for the first address calculation and M pipeline stages for the second address calculation, wherein N and M are positive integers;

generate first configuration data for a first set of stages to produce the first address sequence and second configuration data for a second set of stages to generate the second address sequence, the first set of stages consisting of N computational stages of the plurality of pipelined computation stages and the second set of stages consisting of M computational stages of the plurality of pipelined computation stages; and

include the first configuration data and the second configuration data in the configuration file.

20 . The data processing system of claim 19 , wherein the configuration file includes two or more immediate values for use in at least one computation stage of the first set of stages and second set of stages in the configuration file.

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 May 29, 2024
From: PRABHAKAR, RAGHU; JACKSON, DAVID BRIAN; BURSON, SCOTT
To: SAMBANOVA SYSTEMS, INC.
Reel/Frame 067557/0899 →
Continuity (3)
Continuation 18099214 · Jan 19, 2023
Provisional Application 63301465 · Jan 20, 2022
Related Publication 20240192935A1 · Jun 13, 2024
References Cited (19)
US 6112017A · Wise · 2000 [cited by examiner]
US 6282627B1 · Wong et al. · 2001 [cited by applicant]
US 10467183B2 · Fleming et al. · 2019 [cited by applicant]
US 11086816B2 · Fleming et al. · 2021 [cited by applicant]
US 11609769B2 · Shah et al. · 2023 [cited by applicant]
US 11928445B2 · Prabhakar · 2024 [cited by examiner]
US 20020032558A1 · Strong · 2002 [cited by examiner]
US 20190205244A1 · Smith · 2019 [cited by applicant]
US 20230002296A1 · Prabhakar · 2023 [cited by applicant]
WO 2010142987A1 · 2010 [cited by applicant]
Adriaansen et al., Code generation for reconfigurable explicit datapath architectures with LLVM, 2016, IEEE, pp. 30-37. (Year: 2016). [cited by applicant]
Koeplinger et al., Spatial: A Language and Compiler for Application Accelerators, PLDI '18, Jun. 18-22, 2018, Association for Computng Machinery, 16 pages. [cited by applicant]
Lopes et al., Coarse-Grained Reconfigurable Computing with the Versat Architecture, 2021, Electronics, 23 pages. (Year: 2021). [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]
Prabhakar et al., Plasticine: A Reconfigurable Architecture for Parallel Patterns, ISCA, Jun. 24-28, 2017, 14 pages. [cited by applicant]
Saluja, Register File Organization for Coarse-Grained Reconfigurable Architectures: Compiler-Microarchitecture Perspective, 2014, Master Thesis, Arizona State University, 38 pages. (Year: 2014). [cited by applicant]
U.S. Appl. No. 18/099,214—Notice of Allowance, dated Nov. 8, 2023, 7 pages. [cited by applicant]
Wan et al., A Coarse-Grained Reconfigurable Architecture with Compilation for High Performance, 2012, International Journal ofReconfigurable Computing, 17 pages. (Year: 2012). [cited by applicant]