# US 11,121,915 B2 · FPGA-enabled compute instances

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

- Number: US 11,121,915 B2
- Document ID: US11121915B2
- Status: Granted
- Kind: B2
- Application number: 16/120,134
- Filed: 2018-08-31
- Published: 2019-01-17
- Granted: 2021-09-14
- Earliest claimed: 2015-12-31
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Erez Izenberg; Nafea Bshara; Christopher Pettey; Curtis Karl Ohrt
- Web page: https://patentgrep.com/patent/US11121915B2

## CPC

- H04L 41/0806: for initial configuration or provisioning, e.g. plug-and-play
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/5044: {considering hardware capabilities}
- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- G06F 15/7867: {with reconfigurable architecture}
- G06F 15/7871: {Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS}
- H04L 41/5054: Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- 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

A resource manager of a virtualized computing service indicates to a client that FPGA-enabled compute instances are supported at the service. From a set of virtualization hosts of the service, a particular host from which an FPGA is accessible is selected for the client based on an indication of computation objectives of the client. Configuration operations are performed to prepare the host for the application, and an FPGA-enabled compute instance is launched at the host for the client.

## Claims

### Claim 1

A system, comprising:
a resource manager executing at one or more computing devices associated with a virtualized computing service of a provider network; and
a plurality of virtualization hosts of the virtualized computing service, including a first virtualization host comprising a first field programmable gate array (FPGA);
wherein the resource manager is configured to:
determine that a virtual machine of a first FPGA-enabled category is to be launched at the first virtualization host, wherein the first virtualization host is selected from the plurality of virtualization hosts based at least in part on (1) a type of the virtual machine to be launched or (2) an FPGA-utilizing application to be implemented at least in part at the virtual machine;
initiate one or more configuration operations to prepare the first virtualization host for the FPGA-utilizing application; and
provide an indication, via one or more programmatic interfaces, that a particular virtual machine of the first FPGA-enabled category has been launched at the first virtualization host.

### Claim 2 (depends on 1)

The system as recited in claim 1, wherein the first FPGA is attached to an expansion bus of the first virtualization host, wherein the expansion bus is compliant with a version of the Peripheral Component Interconnect Express (PCI-E) standard.

### Claim 3 (depends on 1)

The system as recited in claim 1, wherein the resource manager is configured to:
in response to receiving a descriptor of a particular FPGA-utilizing application from an FPGA application provider, wherein the descriptor indicates one or more requirements for supporting the particular FPGA-utilizing application,
verify that the particular FPGA-utilizing application meets one or more acceptance criteria of a network-accessible site associated with the virtual computing service; and
include the particular FPGA-utilizing application in a listing of FPGA-enabled applications of the network-accessible site.

### Claim 4 (depends on 1)

The system as recited in claim 1, wherein the resource manager is configured to:
indicate, to a client via one or more programmatic interfaces, a security policy defined for the first FPGA-enabled category and enforced during runtime of compute instances of the first FPGA-enabled category, wherein the security policy comprises at least a first rule and a second rule, wherein the first rule limits access to one or more other resources of the first virtualization host from the first FPGA, and the second rule limits access to one or more resources of the first FPGA from the first virtualization host.

### Claim 5 (depends on 1)

The system as recited in claim 1, wherein the resource manager is configured to:
in response to receiving, from a client via one or more programmatic interfaces, a forced cleanup request indicating that the client's use of the first FPGA has concluded, initiate one or more operations to delete, from the first FPGA, one or more data objects pertaining to the client's use of the first FPGA.

### Claim 6

A method, comprising:
performing, by a resource manager executing at one or more computing devices of a virtualized computing service:
determining that a virtual machine of a first FPGA-enabled category is to be launched at a first virtualization host, wherein the first virtualization host is selected from a plurality of virtualization hosts based at least in part on a type of the virtual machine to be launched or an FPGA-utilizing application to be implemented at least in part at the virtual machine;
initiating one or more configuration operations to prepare the first virtualization host for the FPGA-utilizing application; and
providing an indication, via one or more programmatic interfaces, that a particular virtual machine of the first FPGA-enabled category has been launched at the first virtualization host.

### Claim 7 (depends on 6)

The method as recited in claim 6, further comprising performing, by the resource manager:
indicating, to a first client via one or more programmatic interfaces, one or more FPGA-utilizing applications supported on compute instances of the first FPGA-enabled category, wherein the one or more FPGA-utilizing applications include the first FPGA-utilizing application; and
receiving, from the first client via the one or more programmatic interfaces, an indication of the first FPGA-utilization application.

### Claim 8 (depends on 6)

The method as recited in claim 6, further comprising performing, by the resource manager:
in response to receiving a descriptor of the first FPGA-utilizing application from an FPGA application provider, wherein the descriptor indicates one or more requirements for supporting the first FPGA-utilizing application,
verifying that the first FPGA-utilizing application meets one or more acceptance criteria of a network-accessible site associated with the virtual computing service; and
including the first FPGA-utilizing application in a listing of FPGA-enabled applications of the network-accessible site.

### Claim 9 (depends on 8)

The method as recited in claim 8, wherein the one or more acceptance criteria include one or more of: (a) a functional compatibility criterion with respect to the first FPGA-enabled category of compute instances, (b) a security criterion, or (c) a performance criterion.

### Claim 10 (depends on 6)

The method as recited in claim 6, wherein the one or more configuration operations comprise an operation to verify that the first FPGA has been programmed to comply with a first security policy of the first FPGA-enabled category, wherein the first security policy indicates one or more of: (a) a constraint on a portion of a host resource accessible from an FPGA and (b) a constraint on a type of FPGA operation which can be requested from a compute instance.

### Claim 11 (depends on 6)

The method as recited in claim 6, wherein the one or more configuration operations comprise an operation to verify that a virtualization management software component of the first virtualization host complies with a first security policy of the first FPGA-enabled category, wherein the first security policy indicates one or more of: (a) a constraint on a portion of a host resource accessible from an FPGA and (b) a constraint on a type of FPGA operation which can be requested from a compute instance.

### Claim 12 (depends on 6)

The method as recited in claim 6, wherein the first FPGA-enabled category has an associated security policy, further comprising:
performing one or more operations to enforce the security policy at one or more of:
(a) a peripheral device configured for offloading virtualization management operations, (b) a board to which the first FPGA is attached, or (c) a non-virtualized operating system instance.

### Claim 13 (depends on 6)

The method as recited in claim 6, further comprising:
receiving, at the resource manager via one or more programmatic interfaces, an indication that a second FPGA-utilizing application is to be executed at the particular compute instance; and
initiating, by the resource manager, a re-programming of the first FPGA for the second FPGA-utilizing application.

### Claim 14 (depends on 6)

The method as recited in claim 6, further comprising:
configuring, by the resource manager, a second compute instance at a second virtualization host on behalf of a second client, wherein the second virtualization host has access to a second FPGA, wherein said configuring does not include programming the second FPGA; and
providing, by the resource manager to the second client, an indication that the second client is authorized to program the FPGA.

### Claim 15 (depends on 6)

The method as recited in claim 6, further comprising performing, by the resource manager:
receiving an indication of a computational objective from a second client;
determining that the computational objective can be attained using a pre-configured virtualization host of the virtualized computing service, wherein the pre-configured virtualization host comprises a second FPGA, and wherein the pre-configured virtualization host comprises a compute instance with a pre-installed FPGA library; and
assigning the compute instance with the pre-installed FPGA library to the second client.

### Claim 16 (depends on 6)

The method as recited in claim 6, further comprising performing, by the resource manager:
in response to receiving, from the first client via one or more programmatic interfaces, an indication that the compute instance of the first FPGA-enabled category is to be executed in single-tenant mode, storing a metadata entry associated with the first virtualization host, wherein the metadata entry indicates that the first virtualization host is not to be utilized for compute instances of any other client.

### Claim 17 (depends on 6)

The method as recited in claim 6, further comprising performing, by the resource manager:
in response to receiving, from a second client of the virtualized computing service, an indication of a computational objective of the second client, instantiating a second compute instance at the first virtualization host on behalf of the second client.

### Claim 18 (depends on 17)

The method as recited in claim 17, wherein fulfilment of the computational objective corresponds to an execution of at least a portion of a second FPGA-utilizing application, further comprising:
performing, at one of: (a) the first FPGA or (b) a second FPGA of the first virtualization host, one or more operations associated with the second FPGA-utilizing application.

### Claim 19 (depends on 6)

The method as recited in claim 6, further comprising:
indicating, by the resource manager to a second client, that the second client is authorized to access a second FPGA using a native programmatic interface of the second FPGA; and
performing, at the second FPGA, one or more operations in accordance with a command received via the native programmatic interface from the second client.

### Claim 20

One or more non-transitory computer-readable storage media storing program instructions that when executed on or across one or more processors cause the one or more processors to:
determine that a virtual machine of a first FPGA-enabled category is to be launched at a first virtualization host, wherein the first virtualization host is selected from a plurality of virtualization hosts based at least in part on a type of the virtual machine to be launched or an FPGA-utilizing application to be implemented at least in part at the virtual machine;
initiate one or more configuration operations to prepare the first virtualization host for the FPGA-utilizing application; and
provide an indication, via one or more programmatic interfaces, that a particular virtual machine of the first FPGA-enabled category has been launched at the first virtualization host.
