IP Library Granted Patent US 12,645,497
Granted Patent B2
US 12,645,497 · App. 18/084,013 · Granted Jun 2, 2026

Elevated isolation of reconfigurable data flow resources in cloud computing

Inventors: Ranen Chatterjee (Palo Alto, CA); Ravinder Kumar (Palo Alto, CA); Raghunath Shenbagam (San Jose, CA); Maran Wilson (Palo Alto, CA); Conrad Alexander Turlik (Palo Alto, CA); Arnav Goel (Palo Alto, CA); Arjun Sabnis (Palo Alto, CA); Yannan Chen (Palo Alto, CA)
Assignee: SambaNova Systems, Inc.
G06F9/5016G06F9/544G06F9/545G06F2209/5011
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,645,497
App. No.
18/084,013
Granted
Jun 2, 2026
Kind
B2
Abstract

A data processing system includes a runtime processor and a pool of reconfigurable data flow resources with memory units, busses, and arrays of physical configurable units. The runtime processor is operatively coupled to the pool of reconfigurable data flow resources and configured to load first and second configuration files for executing first and second user applications on first and second subsets of the arrays of physical configurable units and to assign first and second subsets of the memory units to the first and second user applications. The runtime processor starts execution of the first and second user applications on the first and second subsets of the arrays of physical configurable units, prevents the first user application from accessing the resources allocated to the second user application, and prevents the second user application from accessing resources allocated to the first user application.

Claims (39)

1 . A data processing system, comprising:

a pool of reconfigurable compute and memory resources, comprising:

arrays of configurable compute and memory units arranged in one or more reconfigurable processors, wherein the configurable compute and memory units comprise reconfigurable datapath elements having programmable interconnections and configurable logic functions, and wherein computational operations performed by the reconfigurable datapath elements are defined by configuration data loaded from configuration files,

memory units located outside of the arrays of configurable compute and memory units, and busses coupled between the memory units and the arrays of configurable compute and memory units; and

a runtime processor, comprising a user space and a kernel space, wherein the kernel space is exclusively authorized to execute predetermined privileged operations on the pool of reconfigurable compute and memory resources, and further comprises first and second channels, implemented by the arrays of configurable compute and memory units, between the user space and the kernel space, wherein the user space is configured to transmit commands for the kernel space through the first channel, and wherein the kernel space is configured to transmit results to the user space through the second channel, operatively coupled to the pool of reconfigurable compute and memory resources and configured to:

load a first configuration file comprising first configuration data that defines first computational operations to be performed by the reconfigurable datapath elements for executing a first user application to a first subset of the arrays of configurable compute and memory units in the pool of reconfigurable compute and memory resources,

assign a first subset of the memory units to the first user application,

load a second configuration file comprising second configuration data that defines second computational operations to be performed by the reconfigurable datapath elements for executing a second user application to a second subset of the arrays of configurable compute and memory units in the pool of reconfigurable compute and memory resources,

assign a second subset of the memory units to the second user application,

start execution of the first and second user applications on the first and second subsets of the arrays of configurable compute and memory units, respectively,

wherein the kernel space further comprises a resource manager that is configured to track, during execution, a first allocation of the first subset of the memory units and the first subset of the arrays of physical configurable units to the first user application and a second allocation of the second subset of the memory units and the second subset of the arrays of configurable compute and memory units to the second user application;

and wherein the arrays of configurable compute and memory units are further configured, duration execution, to retrieve the commands from the first channel, to perform validation of parameters of the commands against the first and second allocations, to process the commands in response to the parameters of the commands passing the validation, and to submit results from processing the commands to the second channel.

2 . The data processing system of claim 1 , wherein the arrays of configurable compute and memory units of the one or more reconfigurable processors are aggregated as a uniform pool of resources that are assigned to the execution of the first and second user applications.

3 . The data processing system of claim 1 , wherein the busses comprise at least one of a Direct Memory Access (DMA) channel, a double data-rate (DDR) channel, a peripheral component interface express (PCIe) channel, an Ethernet channel, or an InfiniBand channel.

4 . The data processing system of claim 1 , wherein the memory units comprise at least one of a Dynamic Random-Access Memory (DRAM), a Hard Disk Drive (HDD), a Solid-State Drive (SSD), a distributed file system, or a web server.

5 . The data processing system of claim 1 , wherein the pool of reconfigurable compute and memory resources further comprises configuration registers for configuring the arrays of configurable compute and memory units, and wherein the predetermined privileged operations comprise operations that access the configuration registers.

6 . The data processing system of claim 1 , wherein the first channel comprises a first ring buffer, and wherein the second channel comprises a second ring buffer.

7 . The data processing system of claim 6 , wherein the arrays of configurable compute and memory units are configured to implement the first and second ring buffers.

8 . The data processing system of claim 7 , wherein the arrays of configurable compute and memory units are further configured to retrieve the commands from the first ring buffer, to perform validation of parameters of the commands against the first and second allocations, to process the commands in response to the parameters of the commands passing the validation, and to submit results from processing the commands to the second ring buffer.

9 . The data processing system of claim 6 , wherein the pool of reconfigurable compute and memory resources further comprises: a network interface card that couples at least two of the arrays of configurable compute and memory units arranged in at least two different reconfigurable processors, and wherein the network interface card is configured to implement the first and second ring buffers.

10 . The data processing system of claim 6 , wherein the runtime processor further comprises a channel manager that is configured to find a next free slot in the first ring buffer for submitting a new command, and to notify the kernel space that the new command has been added to the first ring buffer.

11 . The data processing system of claim 10 , wherein the channel manager increments a tail pointer of the first ring buffer to notify the kernel space that the new command has been added to the first ring buffer.

12 . The data processing system of claim 6 , wherein the kernel space is further configured to retrieve the commands from the first ring buffer and to use the resource manager to perform validation of parameters of the commands against the first and second allocations.

13 . The data processing system of claim 12 , wherein the kernel space is further configured to process the commands in response to the parameters of the commands passing the validation and to submit results from processing the commands in the second ring buffer.

14 . The data processing system of claim 13 , wherein the runtime processor further comprises a channel manager that is configured to process results from the second ring buffer synchronously.

15 . The data processing system of claim 13 , wherein the runtime processor further comprises a channel manager that is configured to process results from the second ring buffer asynchronously.

16 . The data processing system of claim 6 , wherein the runtime processor is further configured to load a plurality of additional configuration file for executing a plurality of additional user applications to the arrays of configurable compute and memory units, wherein the user space is configured to transmit commands from the plurality of additional user applications for the kernel space through the first channel, and wherein the kernel space is configured to allocate at least a portion of the first subset of the arrays of configurable compute and memory units to process the commands.

17 . A method of operating a data processing system including a pool of reconfigurable compute and memory resources that comprises arrays of configurable compute and memory units having reconfigurable datapath elements with programmable interconnections and configurable logic functions, and wherein computational operations performed by the reconfigurable datapath elements are defined by configuration data loaded from configuration files,

memory units located outside of the arrays of configurable compute and memory units, and busses coupled between the arrays of configurable compute and memory units and the memory units; and

a runtime processor, comprising a user space and a kernel space, wherein the kernel space is exclusively authorized to execute predetermined privileged operations on the pool of reconfigurable compute and memory resources, and further comprises first and second channels, implemented by the arrays of configurable compute and memory units, between the user space and the kernel space, wherein the user space is configured to transmit commands for the kernel space through the first channel, and wherein the kernel space is configured to transmit results to the user space through the second channel, that is operatively coupled to the pool of reconfigurable compute and memory resources, the method comprising:

loading a first configuration file comprising first configuration data that defines first computational operations to be performed by the reconfigurable datapath elements for a first user application to a first subset of the arrays of configurable compute and memory units in the pool of reconfigurable compute and memory resources;

assigning a first subset of the memory units to the first user application;

loading a second configuration file comprising second configuration data that defines second computational operations to be performed by the reconfigurable datapath elements for a second user application to a second subset of the arrays of configurable compute and memory units in the pool of reconfigurable compute and memory resources;

assigning a second subset of the memory units to the second user application; and

executing the first and second user applications on the first and second subsets of the arrays of configurable compute and memory units, respectively,

wherein the kernel space further comprises a resource manager that is configured to track, during execution, a first allocation of the first subset of the memory units and the first subset of the arrays of physical configurable units to the first user application and a second allocation of the second subset of the memory units and the second subset of the arrays of configurable compute and memory units to the second user application;

and wherein the arrays of configurable compute and memory units are further configured, during execution, to retrieve the commands from the first channel, to perform validation of parameters of the commands against the first and second allocations, to process the commands in response to the parameters of the commands passing the validation, and to submit results from processing the commands to the second channel.

18 . The method of claim 17 , further comprising: transmitting a command of the first user application from the user space to the kernel space; and performing validation of the command of the first user application against the first and second allocations.

19 . The method of claim 18 , further comprising: processing the command in the kernel space in response to the command passing the validation; and transmitting results from processing the command from the kernel space to the user space.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2026
From: CHATTERJEE, RANEN; KUMAR, RAVINDER; SHENBAGAM, RAGHUNATH; GOEL, ARNAV
To: SAMBANOVA SYSTEMS, INC.
Reel/Frame 073998/0752 →
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 Jan 27, 2023
From: WILSON, MARAN; TURLIK, CONRAD ALEXANDER; SABNIS, ARJUN; CHEN, YANNAN
To: PATENTS, FLAGSHIP, PATE
Reel/Frame 062504/0657 →
Continuity (2)
Provisional Application 63293456 · Dec 23, 2021
Related Publication 20230205585A1 · Jun 29, 2023
References Cited (2)
US 10846117B1 · Steinberg · 2020 [cited by examiner]
US 11579925B2 · Duluk, Jr. · 2023 [cited by examiner]