# US 11,115,293 B2 · Networked programmable logic service provider

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,115,293 B2
- Document ID: US11115293B2
- Status: Granted
- Kind: B2
- Application number: 15/354,765
- Filed: 2016-11-17
- Published: 2018-05-17
- Granted: 2021-09-07
- Earliest claimed: 2016-11-17
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Robert Michael Johnson; Nafea Bshara; Matthew Shawn Wilson
- Web page: https://patentgrep.com/patent/US11115293B2

## CPC

- H04L 41/5054: Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
- G06F 9/50: Allocation of resources, e.g. of the central processing unit [CPU]
- G06F 15/7871: {Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS}
- H04L 41/5096: {wherein the managed service relates to distributed or central networked applications}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Methods and apparatus are disclosed for programming reconfigurable logic devices such as FPGAs in a networked server environment. In one example, a system hosting a network service providing field programmable gate array (FPGA) services includes a network service provider configured to receive a request to implement application logic in a plurality of FPGAs, allocate a computing instance comprising the FPGAs in responses to receiving the request, produce configuration information for programming the FPGAs, and send the configuration information to an allocated computing instance. The system further includes a computing host that is allocated by the network service provider as a computing instance which includes memory, processors configured to execute computer-executable instructions stored in the memory, and the programmed FPGAs.

## Claims

### Claim 1

A system hosting a network service providing field programmable gate array (FPGA) services, the system comprising:
a programmable logic service provider configured to:
receive, via a computer network, a request to program application logic into an FPGA,
responsive to receiving the request, allocate a configurable hardware computing instance for the FPGA,
produce configuration information for programming the application logic into only a portion of reconfigurable logic of the FPGA, and
send the configuration information to the allocated configurable hardware computing instance; and
a computing host allocated by the programmable logic service provider to host the allocated configurable hardware computing instance, the computing host comprising:
memory,
a processor configured to execute computer-executable instructions stored in the memory,
an FPGA service process configured to control configuration of an interface to the FPGA, and
the FPGA, wherein the portion of reconfigurable logic of the FPGA is configured to be programmed by the FPGA service process using the configuration information.

### Claim 2 (depends on 1)

The system of claim 1, wherein the programmable logic service provider is implemented on a different physical server than the computing host.

### Claim 3 (depends on 1)

The system of claim 1, wherein:
the request comprises an identifier for the application logic; and
the programmable logic service provider is further configured to attempt to authenticate the request and, responsive to successfully authenticating the request, produce the configuration information using the identifier.

### Claim 4 (depends on 1)

The system of claim 1, wherein the programmable logic service provider is further configured to allocate the computing instance prior to receiving the request.

### Claim 5 (depends on 1)

The system of claim 1, wherein the programmable logic service provider is further configured to allocate the computing instance and program the application logic prior to initiating execution of the instance.

### Claim 6

A method of hosting a network service providing field programmable gate array (FPGA) services, the method comprising:
receiving, at a programmable logic service provider, a request to program application logic into an FPGA;
responsive to receiving the request, allocating at the programmable logic service provider, a configurable hardware computing instance for the FPGA;
producing configuration data for programming the application logic into only a portion of reconfigurable logic of the FPGA;
sending the configuration data to the allocated configurable hardware computing instance; and
by a computing host allocated by the programmable logic service provider to host the allocated configurable hardware computing instance, the computing host comprising memory,
a processor configured to execute computer-executable instructions stored in the memory, and the FPGA:
with an FPGA service process at the computing host, controlling configuration of an interface to the FPGA, and
configuring the portion of reconfigurable logic of the FPGA by the FPGA service process using the configuration data.

### Claim 7 (depends on 6)

The method of claim 6, wherein the programmable logic service provider is implemented on a different physical server than the computing host.

### Claim 8 (depends on 6)

The method of claim 6, wherein:
the request comprises an identifier for the application logic; and
the method further comprises, with the programmable logic service provider, attempting to authenticate the request and, responsive to successfully authenticating the request, producing the configuration data using the identifier.

### Claim 9 (depends on 6)

The method of claim 6, wherein the programmable logic service provider allocates the computing instance prior to receiving the request.

### Claim 10 (depends on 6)

The method of claim 6, wherein the programmable logic service provider allocates the computing instance and programs the application logic prior to initiating execution of the instance.

### Claim 11 (depends on 6)

The method of claim 6, wherein the producing configuration data occurs prior to the allocating at the programmable logic service provider, a configurable hardware computing instance for the FPGA.

### Claim 12 (depends on 6)

The method of claim 6, generating the configuration data by compiling source code indicated by the request to create a programming file as at least a portion of the configuration data for the FPGA.

### Claim 13 (depends on 6)

The method of claim 6, wherein:
the compute host programs the FPGA with a supervisor privilege level process or a virtual machine instance; and
the compute host is further configured to execute computer-executable code for operating the configured FPGA with a user privilege level process or another virtual machine instance.

### Claim 14

A computer-readable storage medium storing computer-executable instructions, which when executed by a processor, cause a computing host to perform a method, the instructions comprising:
instructions that cause the computing host to, with an FPGA service process at the computing host, control configuration of an interface to an FPGA; and
instructions that cause the computing host to, with the FPGA service process, configure a portion of reconfigurable logic of the FPGA using configuration information received from a programmable logic service provider; wherein:
the received configuration information is produced by the programmable logic service provider by:
receiving, at the programmable logic service provider, a request to program application logic into the FPGA,
responsive to receiving the request, allocating at the programmable logic service provider, a reconfigurable hardware computing instance for the FPGA,
producing the configuration information for programming the application logic into only a portion of reconfigurable logic of the FPGA, and
sending the configuration information to the allocated reconfigurable hardware computing instance.

### Claim 15 (depends on 14)

The computer-readable storage medium of claim 14 wherein the programmable logic service provider is implemented on a different physical server than the computing host.

### Claim 16 (depends on 14)

The computer-readable storage medium of claim 14, wherein:
the request comprises an identifier for the application logic; and
the instructions further comprise instructions causing the programmable logic service provider to attempt to authenticate the request and, responsive to successfully authenticating the request, produce the configuration information using the identifier.

### Claim 17 (depends on 14)

The computer-readable storage medium of claim 14, wherein the programmable logic service provider allocates the computing instance prior to receiving the request.

### Claim 18 (depends on 14)

The computer-readable storage medium of claim 14, wherein the programmable logic service provider allocates the computing instance and programs the application logic prior to initiating execution of the instance.

### Claim 19 (depends on 14)

A computing host comprising:
memory;
at least one processor;
an FPGA; and
the computer-readable storage medium of claim 14.

### Claim 20 (depends on 19)

The computing host of claim 19, wherein:
the computing host programs the FPGA with a supervisor privilege level process or a virtual machine instance executed by the at least one processor; and
the computing host is further configured to execute computer-executable code for operating the FPGA with a user privilege level process or another virtual machine instance executed by the at least one processor.
