IP Library Granted Patent US 12,475,523
Granted Patent B2
US 12,475,523 · App. 18/095,132 · Granted Nov 18, 2025

Dataflow architecture processor statically reconfigurable to perform n-dimensional affine transformation

Inventors: Matthew Vilim (Palo Alto, CA); Raghu Prabhakar (Palo Alto, CA); Matt Feldman (Palo Alto, CA); Yaqi Zhang (Palo Alto, CA)
Assignee: SambaNova Systems, Inc.
G06T3/02G06T1/20G06T1/60G06F15/7871
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,475,523
App. No.
18/095,132
Granted
Nov 18, 2025
Kind
B2
Abstract

A statically reconfigurable dataflow architecture processor (SRDAP) performs an N-dimensional affine transform specified by a matrix on an input image to produce an output image includes pattern compute units (PCUs) and pattern memory units (PMUs) interconnected by switches. PCUs have vector pipelines of functional units that perform operations on operands received from previous pipeline stages, another PCU, and/or PMUs. PMUs have memories loadable with the input image. The PCUs and PMUs are statically reconfigurable to, for all the output pixels: apply the matrix to vectors of output pixel coordinates to calculate corresponding vectors of input pixel coordinates, flatten the vectors of input pixel coordinates into vectors of PMU addresses of the input pixels, read values of the input pixels from the PMUs at the calculated input pixel addresses, and write vectors of the input pixel values to PMUs to form the output image.

Claims (39)

1 . A computer-implemented method for performing an N-dimensional affine transform on an N-dimensional input image to produce an N-dimensional output image comprising output pixels using a statically reconfigurable dataflow architecture processor (SRDAP) that comprises pattern compute units (PCUs) and pattern memory units (PMUs) interconnected by statically reconfigurable switches, wherein each PCU comprises a vector pipeline of functional units statically reconfigurable to perform one or more of a set of arithmetic and logical operations on operands received from a previous pipeline stage of the PCU, from another PCU, and/or from one or more of the PMUs, and wherein each PMU comprises a memory, the affine transform specified by an affine transform matrix comprising N rows corresponding to the N dimensions, each output pixel of the output image having a coordinate in each of the N dimensions, wherein N is an integer having a value of at least two, the method comprising:

statically reconfiguring the switches to spatially map at least a portion of the PCUs into N groups corresponding to the N dimensions;

applying the affine transform matrix to vectors of the coordinates of the output pixels to calculate corresponding vectors of coordinates of input pixels of the input image concurrently for each coordinate J of the N dimensions by statically reconfiguring each PCU group J of the corresponding N PCU groups to perform a dot product of a row J of the N rows and the vectors of the coordinates of the output pixel to calculate the corresponding vectors of the coordinate J of the input pixels;

calculating, using the vectors of input pixel coordinates, corresponding vectors of PMU addresses of the input pixels;

reading values of the input pixels from one or more PMUs at the calculated input pixel addresses; and

writing vectors of the input pixel values to one or more PMUs to form the output image.

2 . The method of claim 1 , wherein said statically reconfiguring the SRDAP comprises loading configuration stores of the SRDAP with configuration data.

3 . The method of claim 2 , wherein the vector pipeline further comprises staging registers intermediate the functional units, the method further comprising:

statically reconfiguring the PCUs to have first staging registers receive the input pixel coordinates generated by first functional units and to have the first staging registers provide the input pixel coordinates as source operands to second functional units to calculate the PMU addresses of the input pixels.

4 . The method of claim 2 , wherein the static reconfigurability of the SRDAP enables the SRDAP to perform the N-dimensional affine transform on the input image to produce the N-dimensional output image without incurring processing overhead associated with scheduling execution of instructions due to implicit instruction operand dependencies.

5 . The method of claim 2 , wherein the static reconfigurability of the SRDAP enables the SRDAP to perform the N-dimensional affine transform on the input image to produce the N-dimensional output image without incurring processing overhead associated with fetching instructions.

6 . The method of claim 2 , wherein the memory of the one or more PMUs storing the input image comprises a vector of banks corresponding to the vector of PCU lanes.

7 . The method of claim 1 , wherein said statically reconfiguring the SRDAP comprises loading configuration stores of the SRDAP with configuration data prior to initiation of production of the output image without re-loading the configuration stores until completion of production of the output image.

8 . The method of claim 1 , wherein said performance of the dot product of the row J of the N rows and the vectors of the coordinates of the output pixel to calculate the corresponding vectors of the coordinate J of the input pixels comprises statically reconfiguring the PCU group J to, in time, for each element K of row J:

multiply the element K with a corresponding coordinate K of the coordinates of the output pixel to calculate a product; and

accumulate the product.

9 . A non-transitory computer-readable storage medium having computer program instructions stored thereon for configuring a statically reconfigurable dataflow architecture processor (SRDAP) that comprises pattern compute units (PCUs) and pattern memory units (PMUs) interconnected by statically reconfigurable switches, wherein each PCU comprises a vector pipeline of functional units statically reconfigurable to perform one or more of a set of arithmetic and logical operations on operands received from a previous pipeline stage of the PCU, from another PCU, and/or from one or more of the PMUs, and wherein each PMU comprises a memory, the instructions capable of causing the SRDAP to perform an N-dimensional affine transform specified by an affine transform matrix on an N-dimensional input image to produce an N-dimensional output image comprising output pixels, each output pixel having a coordinate in each of the N dimensions, wherein N is an integer having a value of at least two, by:

statically reconfiguring the switches to spatially map at least a portion of the PCUs into N groups corresponding to the N dimensions; and

applying the affine transform matrix to vectors of the coordinates of the output pixels to calculate corresponding vectors of coordinates of input pixels of the input image concurrently for each coordinate J of the N dimensions by statically reconfiguring each PCU group J of the corresponding N PCU groups to perform a dot product of a row J of the N rows and the vectors of the coordinates of the output pixel to calculate the corresponding vectors of the coordinate J of the input pixels;

calculating, using the vectors of input pixel coordinates, corresponding vectors of PMU addresses of the input pixels;

reading values of the input pixels from one or more PMUs at the calculated input pixel addresses; and

writing vectors of the input pixel values to one or more PMUs to form the output image.

10 . A computer-implemented method for performing an N-dimensional affine transform on an N-dimensional input image to produce an N-dimensional output image comprising output pixels using a statically reconfigurable dataflow architecture processor (SRDAP) that comprises pattern compute units (PCUs) and pattern memory units (PMUs) interconnected by statically reconfigurable switches, the affine transform specified by an affine transform matrix comprising N rows corresponding to the N dimensions, each output pixel of the output image having a coordinate in each of the N dimensions, wherein each PCU comprises counters statically reconfigurable to iterate over each of the corresponding N dimensions to generate the coordinates of the output pixels and a vector pipeline of functional units statically reconfigurable to perform one or more of a set of arithmetic and logical operations on operands received from a previous pipeline stage of the PCU, from another PCU, and/or from one or more of the PMUs, and wherein each PMU comprises a memory, wherein N is an integer having a value of at least two, the method comprising:

statically reconfiguring an inner dimension counter of the counters for each lane of the vector of lanes in at least some of the PCUs to iterate over a coordinate of the output pixel associated with an inner dimension of the N dimensions; and

for all the output pixels:

applying the affine transform matrix to vectors of the coordinates of the output pixel to calculate corresponding vectors of coordinates of input pixels of the input image;

calculating, using the vectors of input pixel coordinates, corresponding vectors of PMU addresses of the input pixels;

reading values of the input pixels from the one or more PMUs at the calculated input pixel addresses; and

writing vectors of the input pixel values to one or more PMUs to form the output image.

11 . The method of claim 10 , wherein the inner dimension counter of each lane is statically reconfigurable with a different initial value of the coordinate of the output pixel associated with the inner dimension.

12 . The method of claim 10 , wherein each inner dimension counter is statically reconfigurable with a maximum value of the coordinate of the output pixel associated with the inner dimension based on a size of the inner dimension of the output image.

13 . The method of claim 10 , wherein each inner dimension counter is statically reconfigurable with a stride value of the coordinate of the output pixel associated with the inner dimension based on a number of the PCU lanes.

14 . The method of claim 10 , wherein the counters comprise N−1 outer dimension counters associated with the N−1 outer dimensions and for each outer dimension counter J of the N−1 outer dimension counters, the outer dimension counter J iterates over a coordinate J of the output pixel associated with the outer dimension J;

the method further comprising statically reconfiguring each PCU lane of the vector of lanes to receive a count of each of the N−1 outer dimension counters.

15 . The method of claim 14 , wherein each outer dimension counter is incremented when the dimension counter associated with a next most inner dimension of the N dimensions increments to a maximum value based on a size of the next most inner dimension of the output image.

16 . The method of claim 10 , wherein the memory of the one or more PMUs from which the values of the input pixels are read comprises a vector of banks corresponding to the vector of PCU lanes.

17 . The method of claim 10 , wherein the inner dimension counters count autonomously during performance of the N-dimensional affine transform without incurring processing overhead associated with scheduling execution of instructions due to implicit instruction operand dependencies.

18 . The method of claim 10 , wherein said statically reconfiguring the SRDAP comprises loading configuration stores of the SRDAP with configuration data.

19 . The method of claim 10 , wherein said statically reconfiguring the SRDAP comprises loading configuration stores of the SRDAP with configuration data prior to initiation of production of the output image without re-loading the configuration stores until completion of production of the output image.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 7, 2026
From: FELDMAN, MATTHEW
To: SAMBANOVA SYSTEMS, INC.
Reel/Frame 074296/0708 →
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 Apr 6, 2023
From: VILIM, MATTHEW; PRABHAKAR, RAGHU; FELDMAN, MATT; ZHANG, YAQI
To: SAMBANOVA SYSTEMS, INC.
Reel/Frame 063241/0543 →
Continuity (1)
Related Publication 20240233068A1 · Jul 11, 2024
References Cited (21)
US 9436245B2 · Bhandaru · 2016 [cited by examiner]
US 20180322607A1 · Mellempudi · 2018 [cited by examiner]
US 20190266485A1 · Singh et al. · 2019 [cited by applicant]
US 20230222229A1 · Schwaderer · 2023 [cited by examiner]
US 20230305842A1 · Windh et al. · 2023 [cited by applicant]
US 20240232127A1 · Vilim et al. · 2024 [cited by applicant]
US 20240232128A1 · Vilim et al. · 2024 [cited by applicant]
US 20240233069A1 · Vilim et al. · 2024 [cited by applicant]
WO 2010142987A1 · 2010 [cited by applicant]
Alias—Contributions to Program Optimization and High-Level Synthesis Christophe Alias—Dec. 8, 2021—HAL (Year: 2021). [cited by examiner]
Naji—Reconfigurable Parallel Data Flow Architecture—Feb. 2010—IJCSIS (Year: 2010). [cited by examiner]
Prabhakar et al—Plasticine A Reconfigurable Architecture For Parallel Patterns—2017—ACM (Year: 2017). [cited by examiner]
Mohammadi—PMU-Based Adaptive Central Protection Unit (CPU) for Power Systems with High DG Penetration—2014—UTT (Year: 2014). [cited by examiner]
Biswal, Parallel Architecture For Accelerating Affine Transform nl High-Speed Imaging Systems, Journal of Real-Time Image Processing, vol. 8, Mar. 2013, p. 69-79. [cited by applicant]
Bjorn De Sutter, Coarse-Grained Reconfigurable Aray Architectures, Handbook of Signal Processing Systems, 2019, p. 427-472. [cited by applicant]
Éricles Sousa, A reconfigurable memory architecture for system integration of coarse-grained reconfigurable arrays, Published in: 2017 International Conference on ReConFigurable Computing and FPGAs (ReConFig) Dec. 4-6, … [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]
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]
Yang, Memory-Aware Loop Paralleling For Coarse-Grained Reconfigurable Architectures, 2012 International Conference On V Computer Science and Service System, Aug. 2012, p. 2223-2226. [cited by applicant]
Yuge Chen, Reducing Memory Access Conflicts With Look Transformation and Data Reuse On Coarse-Grained Reconfigurable Architecture, 2021 Design, Automation & Test ni Europe Conference &Exhibition (Date), Feb. 2021, pp. 1… [cited by applicant]