IP Library Granted Patent US 12,547,389
Granted Patent B2
US 12,547,389 · App. 18/104,759 · Granted Feb 10, 2026

Configurable access to a multi-die reconfigurable processor by a virtual function

Inventors: Manish K. Shah (Austin, TX); Paul Jordan (Austin, TX); Maran Wilson (Palo Alto, CA); Ravinder Kumar (Palo Alto, CA)
Assignee: SambaNova Systems, Inc.
G06F8/457G06F8/441G06F9/45558G06F9/4812G06F13/24G06F2009/45579G06F2009/45583G06F2009/45595G06F2213/0026
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,547,389
App. No.
18/104,759
Granted
Feb 10, 2026
Kind
B2
Abstract

A data processing system is presented that includes a communication link, a runtime processor, and one or more reconfigurable processors. A reconfigurable processor includes first and second dies arranged in a package, having respective K and L arrays of coarse-grained reconfigurable (CGR) units, and respective first and second communication link interfaces coupled to the communication link. The runtime processor is adapted for configuring the first communication link interface to provide access to the K arrays of CGR units through the communication link from a first physical function driver and from up to M virtual function drivers, and for configuring the second communication link interface to provide access to the K arrays of CGR units of the first die and to the L arrays of CGR units of the second die through the communication link from a second physical function driver and from up to N virtual function drivers.

Claims (78)

1 . A data processing system, comprising:

a communication link;

a runtime processor that is operatively coupled to the communication link; and

one or more reconfigurable processors, a reconfigurable processor of the one or more reconfigurable processors comprising:

a package;

a first die that is arranged in the package and comprises:

K arrays of coarse-grained reconfigurable units, where K is an integer greater than 1; and

a first communication link interface that is operatively coupled to the communication link, thereby coupling the first die to the runtime processor via the communication link, wherein the runtime processor is adapted for configuring the first communication link interface to provide access to the K arrays of coarse-grained reconfigurable units through the communication link from a first physical function driver and from up to M virtual function drivers, where M is a non-negative integer; and

a second die that is arranged in the package, coupled to the first die via a die-to-die link, and comprises:

L arrays of coarse-grained reconfigurable units, where L is an integer greater than 1; and

a second communication link interface that is operatively coupled to the communication link, thereby coupling the second die to the runtime processor via the communication link, wherein the runtime processor is adapted for configuring the second communication link interface to provide access to the K arrays of course-grained reconfigurable units of the first die and to the L arrays of coarse-grained reconfigurable units of the second die through the communication link from a second physical function driver and from up to N virtual function drivers, where N is a non-negative integer.

2 . The data processing system of claim 1 , wherein N is greater than or equal to M.

3 . The data processing system of claim 1 , wherein L is greater than or equal to K.

4 . The data processing system of claim 1 , wherein K is equal to M and L is equal to N.

5 . The data processing system of claim 1 , wherein a first physical function that is associated with the first physical function driver has exclusive access to a first portion of the K arrays of coarse-grained reconfigurable units of the first die, and wherein the first physical function shares access to a second portion of the K arrays of coarse-grained reconfigurable units of the first die that is different than the first portion of the first die with up to M virtual functions that are associated with the up to M virtual function drivers.

6 . The data processing system of claim 5 , wherein each virtual function of the up to M virtual functions has exclusive access among the up to M virtual functions to at least one of the K arrays of coarse-grained reconfigurable units of the first die.

7 . The data processing system of claim 1 , wherein K and L are both equal to two, wherein up to M virtual functions that are associated with the up to M virtual function drivers are enabled and assigned arrays of the K arrays of coarse-grained reconfigurable units of the first die, wherein up to N virtual functions that are associated with the up to N virtual function drivers are enabled and assigned arrays of the K arrays of coarse-grained reconfigurable units of the first die and/or of the L arrays of coarse-grained reconfigurable units of the second die, and the runtime processor is adapted for configuring the second communication link interface to one of:

a first configuration wherein no virtual function of the up to N virtual functions is enabled,

a second configuration wherein one virtual function of the up to N virtual functions is assigned one array of the L arrays of coarse-grained reconfigurable units of the second die,

a third configuration wherein one virtual function of the up to N virtual functions is assigned both of the L arrays of coarse-grained reconfigurable units of the second die,

a fourth configuration wherein one virtual function of the up to N virtual functions is assigned both of the L arrays of coarse-grained reconfigurable units of the second die and one of the K arrays of coarse-grained reconfigurable units of the first die,

a fifth configuration wherein one virtual function of the up to N virtual functions is assigned the K arrays of coarse-grained reconfigurable units of the first die and the L arrays of coarse-grained reconfigurable units of the second die, or

a sixth configuration wherein one virtual function of the up to N virtual functions is assigned a first array of the L arrays of coarse-grained reconfigurable units of the second die and another virtual function of the up to N virtual functions is assigned a second array of the L arrays of coarse-grained reconfigurable units of the second die.

8 . The data processing system of claim 7 , wherein the runtime processor is adapted for configuring the first communication link interface when the second communication link interface is configured to the fifth configuration to:

a seventh configuration wherein no virtual function of the up to M virtual functions is enabled.

9 . The data processing system of claim 7 , wherein the runtime processor is adapted for configuring the first communication link interface when the second communication link interface is configured to the fourth configuration to one of:

a seventh configuration wherein no virtual function of the up to M virtual functions is enabled, or

an eighth configuration wherein one virtual function of the up to M virtual functions is assigned one array of the K arrays of coarse-grained reconfigurable units of the first die.

10 . The data processing system of claim 7 , wherein the runtime processor is adapted for configuring the first communication link interface when the second communication link interface is configured to the first, second, third, or sixth configuration to one of:

a seventh configuration wherein no virtual function of the up to M virtual functions is enabled,

an eighth configuration wherein one virtual function of the up to M virtual functions is assigned one array of the K arrays of coarse-grained reconfigurable units of the first die,

a ninth configuration wherein one virtual function of the up to M virtual functions is assigned both of the K arrays of coarse-grained reconfigurable units of the first die, or

a tenth configuration wherein one function of the up to M virtual functions is assigned a first array of the K arrays of coarse-grained reconfigurable units of the first die and another virtual function of the up to M virtual functions is assigned a second array of the K arrays of coarse-grained reconfigurable units of the first die.

11 . The data processing system of claim 7 , wherein each die of the first and second dies further comprises:

a double-data rate (DDR) memory interface, wherein the one virtual function of the second, third, and sixth configurations is enabled to access the DDR memory interface of the second die and is prevented from accessing the DDR memory interface of the first die.

12 . The data processing system of claim 7 , wherein each die of the first and second dies further comprises:

a double-data rate (DDR) memory interface, wherein the one virtual function of the fourth and fifth configurations is enabled to access the DDR memory interface of the first die and the DDR memory interface of the second die.

13 . The data processing system of claim 1 , wherein the runtime processor is adapted for programming a first predetermined number of base address registers (BARs) of the first communication link interface for a first virtual function of the up to M virtual functions that are associated with the up to M virtual function drivers and for programming a second predetermined number of BARs of the second communication link interface for a second virtual function of the up to N virtual functions that are associated with the up to N virtual function drivers, wherein the communication link comprises a Peripheral Component Interface Express (PCIe) bus, and wherein the first and second communication link interfaces each comprise a PCIe interface.

14 . The data processing system of claim 1 , wherein the first die comprises first control and status registers and wherein the second die comprises second control and status registers, wherein the reconfigurable processor implements a virtual address map for the first control and status registers on the first die and for the second control and status registers on the second die, and wherein a physical address map of the first and second control and status registers in the package comprises the virtual address map and one additional bit for identifying the first die or the second die.

15 . The data processing system of claim 1 , wherein each array of the K arrays of coarse-grained reconfigurable units on the first die and each array of the L arrays of coarse-grained reconfigurable units on the second die comprises:

control and status registers;

compute units;

memory units; and

an array-level network that couples the control and status registers, the compute units, and the memory units.

16 . The data processing system of claim 1 , wherein the first physical function driver and the second physical function driver are a same physical function driver, wherein a first physical function that is associated with the same physical function driver has access to the first die, and wherein a second physical function that is associated with the same physical function driver has access to the second die.

17 . The data processing system of claim 1 , wherein up to N virtual functions are associated with one virtual function driver of the up to N virtual function drivers, and wherein the up to N virtual functions are enabled and assigned arrays of the K arrays of coarse-grained reconfigurable units of the first die and/or of the L arrays of coarse-grained reconfigurable units of the second die.

18 . The data processing system of claim 17 , wherein an additional reconfigurable processor of the one or more reconfigurable processors comprises an additional package, at least a third die arranged in the additional package that comprises J arrays of coarse-grained reconfigurable units, where J is an integer greater than 1, and wherein the up to N virtual functions are further enabled and assigned arrays of the J arrays of coarse-grained reconfigurable units of the third die.

19 . A method of operating a data processing system that comprises a communication link, a runtime processor that is operatively coupled to the communication link, and a reconfigurable processor, wherein the reconfigurable processor comprises a package, and first and second dies that are arranged in the package, wherein the first die comprises K arrays of coarse-grained reconfigurable units, where K is an integer greater than 1, and a first communication link interface that is operatively coupled to the communication link, thereby coupling the first die to the runtime processor via the communication link, and wherein the second die is coupled to the first die and comprises L arrays of coarse-grained reconfigurable units, where L is an integer greater than 1, and a second communication link interface that is operatively coupled to the communication link, thereby coupling the second die to the runtime processor via the communication link, the method comprising:

configuring, with the runtime processor, the first communication link interface to provide access to the K arrays of coarse-grained reconfigurable units through the communication link from a first physical function driver and from up to M virtual function drivers, where M is a non-negative integer;

configuring, with the runtime processor, a first physical function that is associated with the first physical function driver on the first die of the reconfigurable processor, wherein the first physical function is provided access to both a first portion and a second portion of the first die;

configuring, with the runtime processor, the second communication link interface to provide access to the L arrays of coarse-grained reconfigurable units through the communication link from a second physical function driver and from up to N virtual function drivers, where N is a non-negative integer;

configuring, with the runtime processor, a second physical function that is associated with the second physical function driver on the second die of the reconfigurable processor, wherein the second physical function is provided access to both a first portion and a second portion of the second die; and

configuring, with the runtime processor, a virtual function that is associated with one of the M virtual function drivers or with one of the N virtual function drivers on the first die and/or the second die of the reconfigurable processor, wherein the virtual function is provided access to the second portion of the first and/or to the second portion of the second die and is blocked from accessing the first portion of the first die and the first portion of the second die.

20 . The method of claim 19 , wherein K and L are both equal to two, wherein up to M virtual functions that are associated with the up to M virtual function drivers are enabled and assigned arrays of the K arrays of coarse-grained reconfigurable units of the first die, wherein up to N virtual functions that are associated with the up to N virtual function drivers are enabled and assigned arrays of the K arrays of coarse-grained reconfigurable units of the first die and/or of the L arrays of coarse-grained reconfigurable units of the second die, and wherein configuring, with the runtime processor, the second communication link interface further comprises:

configuring, with the runtime processor, the second communication link interface to one of:

a first configuration wherein no virtual function of the up to N virtual functions is enabled,

a second configuration wherein one virtual function of the up to N virtual functions is assigned one array of the L arrays of coarse-grained reconfigurable units of the second die,

a third configuration wherein one virtual function of the up to N virtual functions is assigned both of the L arrays of coarse-grained reconfigurable units of the second die,

a fourth configuration wherein one virtual function of the up to N virtual functions is assigned both of the L arrays of coarse-grained reconfigurable units of the second die and one of the K arrays of coarse-grained reconfigurable units of the first die,

a fifth configuration wherein one virtual function of the up to N virtual functions is assigned the K arrays of coarse-grained reconfigurable units of the first die and the L arrays of coarse-grained reconfigurable units of the second die, or

a sixth configuration wherein one virtual function of the up to N virtual functions is assigned a first array of the L arrays of coarse-grained reconfigurable units of the second die and another virtual function of the up to N virtual functions is assigned a second array of the L arrays of coarse-grained reconfigurable units of the second die.

21 . The method of claim 20 , wherein configuring, with the runtime processor, the first communication link interface further comprises:

configuring, with the runtime processor, the first communication link interface to one of:

a seventh configuration wherein no virtual function of the up to M virtual functions is enabled,

an eighth configuration wherein one virtual function of the up to M virtual functions is assigned one array of the K arrays of coarse-grained reconfigurable units of the first die, when the second communication link interface is configured in the first, second, third, fourth, or sixth configuration,

a ninth configuration wherein one virtual function of the up to M virtual functions is assigned both of the K arrays of coarse-grained reconfigurable units of the first die, when the second communication link interface is configured in the first, second, third, or sixth configuration, or

a tenth configuration wherein one virtual function of the up to M virtual functions is assigned a first array of the K arrays of coarse-grained reconfigurable units of the first die and another virtual function of the up to M virtual functions is assigned a second array of the K arrays of coarse-grained reconfigurable units of the first die, when the second communication link interface is configured in the first, second, third, or sixth configuration.

22 . The method of claim 20 , wherein each die of the first and second dies further comprises a double-data rate (DDR) memory interface, and wherein configuring, with the runtime processor, the second communication link interface further comprises:

in the second, third, and sixth configurations, enabling, with the runtime processor, access from the one virtual function on the second die to the DDR memory interface of the second die and preventing access from the one virtual function on the second die to the DDR memory interface of the first die; and

in the fourth and fifth configurations, enabling, with the runtime processor, access from the one virtual function to the DDR memory interface of the first die and to the DDR memory interface of the second die.

23 . The method of claim 19 , wherein the communication link comprises a Peripheral Component Interface Express (PCIe) bus, and wherein the first and second communication link interfaces each comprises a PCIe interface, the method further comprising:

programming, with the runtime processor, a first predetermined number of base address registers (BARs) of the first communication link interface for a first virtual function of up to M virtual functions that are associated with the up to M virtual function drivers and a second predetermined number of BARs of the second communication link interface for a second virtual function of up to N virtual functions that are associated with the up to N virtual function drivers.

24 . A non-transitory computer-readable storage medium including instructions that, when executed by a processing unit, cause the processing unit to operate a data processing system that comprises a communication link, a runtime processor that is operatively coupled to the communication link, and a reconfigurable processor, wherein the reconfigurable processor comprises a package, and first and second dies that are arranged in the package, wherein the first die comprises K arrays of coarse-grained reconfigurable units, where K is an integer greater than 1, and a first communication link interface that is operatively coupled to the communication link, thereby coupling the first die to the runtime processor via the communication link, and wherein the second die is coupled to the first die and comprises L arrays of coarse-grained reconfigurable units, where L is an integer greater than 1, and a second communication link interface that is operatively coupled to the communication link, thereby coupling the second die to the runtime processor via the communication link, the instructions comprising:

configuring the first communication link interface to provide access to the K arrays of coarse-grained reconfigurable units through the communication link from a first physical function driver and from up to M virtual function drivers, where M is a non-negative integer;

configuring a first physical function that is associated with the first physical function driver on the first die of the reconfigurable processor, wherein the first physical function is provided access to both a first portion and a second portion of the first die;

configuring the second communication link interface to provide access to the L arrays of coarse-grained reconfigurable units through the communication link from a second physical function driver and from up to N virtual function drivers, where N is a non-negative integer;

configuring a second physical function that is associated with the second physical function driver on the second die of the reconfigurable processor, wherein the second physical function is provided access to both a first portion and a second portion of the second die; and

configuring a virtual function that is associated with one of the M virtual function drivers or with one of the N virtual function drivers on the first die and/or the second die of the reconfigurable processor, wherein the virtual function is provided access to the second portion of the first and/or to the second portion of the second die and is blocked from accessing the first portion of the first die and the first portion of the second die.

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 Feb 2, 2023
From: SHAH, MANISH K.; JORDAN, PAUL; WILSON, MARAN; KUMAR, RAVINDER
To: SAMBANOVA SYSTEMS, INC.
Reel/Frame 062570/0704 →
Continuity (2)
Provisional Application 63305956 · Feb 2, 2022
Related Publication 20230305881A1 · Sep 28, 2023
References Cited (29)
US 11250105B2 · Wang et al. · 2022 [cited by applicant]
US 11327771B1 · Grohoski · 2022 [cited by examiner]
US 11327923B2 · Wang et al. · 2022 [cited by applicant]
US 11409540B1 · Grohoski · 2022 [cited by examiner]
US 11410027B2 · Chen et al. · 2022 [cited by applicant]
US 11487694B1 · Misra · 2022 [cited by examiner]
US 20060004997A1 · Mykland · 2006 [cited by applicant]
US 20060149608A1 · Asgari et al. · 2006 [cited by applicant]
US 20060259650A1 · Chou et al. · 2006 [cited by applicant]
US 20080114937A1 · Reid et al. · 2008 [cited by applicant]
US 20080183955A1 · Yang et al. · 2008 [cited by applicant]
US 20090064199A1 · Bidelis et al. · 2009 [cited by applicant]
US 20100332775A1 · Kapil et al. · 2010 [cited by applicant]
US 20120126850A1 · Wasson et al. · 2012 [cited by applicant]
US 20120131257A1 · Rudosky et al. · 2012 [cited by applicant]
US 20130080732A1 · Nellans et al. · 2013 [cited by applicant]
US 20150128268A1 · Fine · 2015 [cited by examiner]
US 20210216873A1 · Liu · 2021 [cited by applicant]
US 20210271630A1 · Koeplinger et al. · 2021 [cited by applicant]
US 20210373867A1 · Chen et al. · 2021 [cited by applicant]
US 20220012077A1 · Kumar et al. · 2022 [cited by applicant]
US 20220058129A1 · Kim et al. · 2022 [cited by applicant]
US 20230029331A1 · Chisnall et al. · 2023 [cited by applicant]
US 20230095330A1 · Lee · 2023 [cited by examiner]
WO 2010142987A1 · 2010 [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]
Prabhakar et al., Plasticine: A Reconfigurable Architecture for Parallel Patterns, ISCA, Jun. 24-28, 2017, 14 pages. [cited by applicant]