# US 10,374,885 B2 · Reconfigurable server including a reconfigurable adapter device

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

- Number: US 10,374,885 B2
- Document ID: US10374885B2
- Status: Granted
- Kind: B2
- Application number: 15/377,973
- Filed: 2016-12-13
- Published: 2018-06-14
- Granted: 2019-08-06
- Earliest claimed: 2016-12-13
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Anthony Nicholas Liguori; Nafea Bshara
- Web page: https://patentgrep.com/patent/US10374885B2

## CPC

- G06F 9/5072: {Grid computing}
- G06F 9/445: Program loading or initiating (bootstrapping G06F9/4401; security arrangements for program loading or initiating G06F21/57)
- G06F 9/45541: {Bare-metal, i.e. hypervisor runs directly on hardware}
- G06F 15/167: using a common memory, e.g. mailbox
- G06F 16/00: Information retrieval; Database structures therefor; File system structures therefor
- H04L 12/66: Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
- H04L 41/082: the condition being updates or upgrades of network functionality
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H04L 67/563: Data redirection of data network streams
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Techniques for reconfiguring a server to perform various hardware functions are disclosed herein. In one embodiment, a server includes a reconfigurable adapter device, where the reconfigurable adapter device includes a reconfigurable resource that is reprogrammable to perform different hardware functions. The server can receive a provisioning request corresponding to a hardware function from a management service. The reconfigurable adapter device can configure the reconfigurable resource according to the hardware function and report the configured hardware function to the server. The reconfigurable resource can be reconfigured using firmware or emulation software.

## Claims

### Claim 1

A system comprising:
a plurality of servers, each server including:
a processor;
a memory device;
a management adapter device;
a reconfigurable adapter device, wherein the reconfigurable adapter device comprises a reconfigurable resource reprogrammable to perform different hardware functions; and
a management service configured to select a server from the plurality of servers and send a provisioning request to the selected server,
wherein the management adapter device of the selected server is configured to:
receive the provisioning request from the management service; and
configure the reconfigurable adapter device according to a particular hardware function of the different hardware functions based on the provisioning request; and
wherein the reconfigurable adapter device of the selected server is configured to:
program the reconfigurable resource according to the particular hardware function in response to the configuring of the reconfigurable adapter device by the management adapter device; and
report the reconfigurable adapter device to the processor, wherein the reporting identifies the reconfigurable adapter device as being a circuit belonging to the server and as having been configured according to the particular hardware function prior to the reporting, and wherein the reporting is performed at least one of:
during a reboot of the server, or
after programming the reconfigurable resource according to the particular hardware function during a reboot of the reconfigurable adapter device.

### Claim 2 (depends on 1)

The system of claim 1, wherein:
the management adapter device configures the reconfigurable adapter device according to the particular hardware function by loading at least one of firmware or emulation software on the reconfigurable adapter device based on the provisioning request, the at least one of firmware or emulation software comprising instructions for programming the reconfigurable resource according to the particular hardware function.

### Claim 3 (depends on 1)

The system of claim 1, wherein the management adapter device of the selected server is further configured to load a customer hypervisor or a customer operating system on the selected server.

### Claim 4 (depends on 1)

The system of claim 1, wherein the reconfigurable adapter device is communicatively coupled to a remote server of the plurality of servers, the remote server configured to perform at least some of the configured hardware function.

### Claim 5

A server comprising:
a processor;
a memory coupled to the processor; and
a reconfigurable adapter device, the reconfigurable adapter device including a reconfigurable resource reprogrammable to perform different hardware functions,
wherein the server is configured to receive a provisioning request corresponding to a particular hardware function of the different hardware functions; and
wherein the reconfigurable adapter device is configured to:
program the reconfigurable resource according to the particular hardware function; and
report the reconfigurable adapter device to the processor, wherein the reporting identifies the reconfigurable adapter device as being a circuit belonging to the server and as having been configured according to the particular hardware function prior to the reporting, and wherein the reporting is performed at least one of:
during a reboot of the server, or
after programming the reconfigurable resource according to the particular hardware function during a reboot of the reconfigurable adapter device.

### Claim 6 (depends on 5)

The server of claim 5, wherein the reconfigurable adapter device is further configured to:
receive the provisioning request; and
load at least one of firmware or software on the reconfigurable adapter device based on the provisioning request, the at least one of firmware or software comprising instructions for programming the reconfigurable resource according to the particular hardware function.

### Claim 7 (depends on 5)

The server of claim 5, further comprising:
a management adapter device coupled to the reconfigurable adapter device,
wherein the management adapter device is configured to:
receive the provisioning request; and
cause the reconfigurable adapter device to load at least one of firmware or software based on the provisioning request, the at least one of firmware or software comprising instructions for programming the reconfigurable resource according to the particular hardware function.

### Claim 8 (depends on 7)

The server of claim 7, wherein the management adapter device is further configured to:
initiate a reboot of the server;
control a sequence of the reboot of the server; and
control access to memory by components of the server during the reboot of the server.

### Claim 9 (depends on 7)

The server of claim 7, wherein the management adapter device is configured to load a customer hypervisor or a customer operating system on the server.

### Claim 10 (depends on 7)

The server of claim 7, wherein the management adapter device is coupled to a management service and is configured to receive the provisioning request from the management service, the management service configured to, based on a request, select the server from a plurality of servers and send the provisioning request to the management adapter device.

### Claim 11 (depends on 10)

The server of claim 10, wherein the provisioning request includes at least one of a system hardware configuration, a hardware function selected from a plurality of hardware functions, an operating system, a type of hardware, executable code, or a configuration file.

### Claim 12 (depends on 5)

The server of claim 5, wherein the different hardware functions include at least one of:
a floating-point processor;
a volatile memory;
a non-volatile memory;
a graphic processing unit; or
a remote direct memory access (RDMA) adapter.

### Claim 13 (depends on 5)

The server of claim 5, wherein:
the reconfigurable adapter device is communicatively coupled to a remote server, the remote server configured to perform at least some of the particular hardware function on behalf of the reconfigurable adapter device.

### Claim 14 (depends on 13)

The server of claim 13, wherein the remote server includes at least one of a graphic processing unit, a volatile memory device, or a non-volatile memory device.

### Claim 15 (depends on 5)

The server of claim 5, wherein the reconfigurable resource includes a network link that can be configured into a remote direct memory access (RDMA) link.

### Claim 16 (depends on 5)

The server of claim 5, wherein the reconfigurable adapter device is coupled to other portions of the server through one of a peripheral component interconnect (PCI) bus, a peripheral component interconnect express (PCIe) bus, and a peripheral component interconnect extended (PCI-X) bus.

### Claim 17 (depends on 5)

The server of claim 5, wherein the reconfigurable resource comprises at least one of a field-programmable gate array (FPGA), a system-on-chip (SoC), an application specific integrated circuit (ASIC), a programmable array logic (PAL), or a complex programmable logic device (CPLD).

### Claim 18

A method comprising:
receiving, by a server, a provisioning request, the server including a reconfigurable adapter device, the reconfigurable adapter device including a reconfigurable resource that is reprogrammable to perform different hardware functions, and the provisioning request corresponding to a particular hardware function of the different hardware functions;
loading at least one of firmware or software on the reconfigurable adapter device based on the provisioning request, the at least one of firmware or software comprising instructions for programming the reconfigurable resource according to the particular hardware function;
programming the reconfigurable resource to perform the particular hardware function by rebooting the reconfigurable adapter device using the firmware or by executing the software on the reconfigurable adapter device; and
rebooting the server, wherein during the rebooting, the reconfigurable adapter device is reported to a processor of the server as being a circuit belonging to the server and as having been configured according to the particular hardware function prior to the reporting.

### Claim 19 (depends on 18)

The method of claim 18, wherein the software is loaded on the reconfigurable adapter device based on the provisioning request, and wherein the software includes at least one of emulation software, custom code, or a configuration file, the custom code or the configuration file corresponding to a custom instance.

### Claim 20 (depends on 18)

The method of claim 18, further comprising:
loading a customer hypervisor or a customer operating system on the server.

### Claim 21 (depends on 18)

The method of claim 18, further comprising:
distributing workload corresponding to at least some of the particular hardware function to a remote server communicatively coupled to the reconfigurable adapter device.
