Patentable/Patents/US-9766910
US-9766910

Providing field-programmable devices in a distributed execution environment

PublishedSeptember 19, 2017
Assigneenot available in USPTO data we have
Inventorsnot available in USPTO data we have
Technical Abstract

A distributed execution environment can provide access to field-programmable device resources. The field-programmable device resources can be provided in association with one or more instances that are instantiated within the distributed execution environment upon request from a computing system. The computing system can be associated with a customer of the distributed execution environment. The customer can program the field-programmable device resources using designs created by or for the customer.

Patent Claims
23 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

1. A computer-implemented method for providing field-programmable gate arrays (“FPGAs”) in a distributed execution environment, the computer-implemented method comprising: receiving; from a customer computing system, a request to launch a virtual machine instance, the virtual machine instance providing access to field-programmable device resources within the distributed execution environment, the request to launch the virtual machine instance specifying a first configuration for the field-programmable device resources, the first configuration including a first type of field-programmable device resources and a first number of field-programmable device resources; in response to receiving the request to launch the virtual machine instance, launching the virtual machine instance; receiving, by the virtual machine instance, an FPGA design for use in programming the field-programmable device resources; programming the field-programmable device resources based at least part on the FPGA design and the first configuration to produce a first programmed FPGA; causing the first programmed FPGA to run within the distributed execution environment; returning results of running the first programmed FPGA to the customer computing system; based at least in part on the results, performing an auto-scaling function to modify the first configuration used to program the first programmed FPGA to produce a second configuration, the second configuration including a second type of field-programmable device resources and a second number of field-programmable device resources, wherein the second type of field-programmable device resources differs from the first type of field-programmable device resources or the second number of field-programmable device resources differs from the first number of field-programmable device resources; reprogramming the field-programmable device resources based at least in part on the FPGA design and the second configuration to produce a second programmed FPGA; and causing the second programmed FPGA to run within the distributed execution environment.

2

2. The computer-implemented method of claim 1 , wherein the first programmed FPGA or the second programmed FPGA comprises a physical FPGA.

3

3. The computer-implemented method of claim 1 , wherein the first programmed FPGA or the second programmed FPGA comprises a virtual FPGA.

4

4. The computer-implemented method of claim 3 , wherein the virtual FPGA comprises a portion of a physical FPGA that is configured to provide a plurality of virtual FPGAs.

5

5. The computer-implemented method of claim 3 , wherein the virtual FPGA comprises a plurality of physical FPGAs.

6

6. The computer-implemented method of claim 1 , wherein the first programmed FPGA or the second programmed FPGA is one of a plurality of FPGAs to which the virtual machine instance provides access.

7

7. The computer-implemented method of claim 1 , wherein receiving the FPGA design for use in programming the field-programmable device resources comprises receiving the FPGA design via an FPGA compiler application executing on the virtual machine instance.

8

8. The computer-implemented method of claim 1 , wherein receiving the FPGA design for use in programming the field-programmable device resources comprises receiving the FPGA design from an FPGA design image storage component associated with the virtual machine instance.

9

9. The computer-implemented method of claim 1 , wherein receiving the FPGA design for use in programming the field-programmable device resources comprises receiving the FPGA design from the customer computing system.

10

10. The computer-implemented method of claim 1 , further comprising receiving a request to send the FPGA design to a fabrication plant.

11

11. A computer-implemented method comprising performing computer-implemented operations for: launching an instance within a distributed execution environment, the instance being configured to provide access to one or more field-programmable device resources using a first configuration including a first type of field-programmable device resources and a first number of field-programmable device resources; receiving a field-programmable device resource design configured to program the one or more field-programmable device resources; programming the one or more field-programmable device resources using the field-programmable device resource design and the first configuration to produce a first programmed device resource; causing the first programmed device resource to run in the distributed execution environment; returning output from the first programmed device resource to a customer computing system; based at least in part on the output, performing an auto-scaling function to automatically scale up or down either the first type of field-programmable device resources or the first number of field-programmable device resources to create a second configuration, the second configuration including a second type of field-programmable device resources and a second number of field-programmable device resources, wherein the second type of field-programmable device resources differs from the first type of field-programmable device resources or the second number of field-programmable device resources differs from the first number of field-programmable device resources; reprogramming the one or more field-programmable device resources using the field-programmable device resource design and the second configuration to produce a second programmed device resource; and causing the second programmed device resource to run.

12

12. The computer-implemented method of claim 11 , wherein the first programmed device resource or the second programmed device resource comprises one or more physical field-programmable devices.

13

13. The computer-implemented method of claim 11 , wherein the first programmed device resource or the second programmed device resource comprises one or more virtual field-programmable devices operating on one or more physical field-programmable devices.

14

14. The computer-implemented method of claim 11 , further comprising receiving, from the customer computing system, a request to launch the instance, and wherein the request comprises the field-programmable device resource design.

15

15. The computer-implemented method of claim 14 , wherein the instance is further configured to provide access to computing resources, and wherein the request further comprises a configuration for the computing resources.

16

16. The computer-implemented method of claim 15 , wherein receiving the field-programmable device resource design comprises receiving the field-programmable device design via an application executing on the computing resources of the instance.

17

17. The computer-implemented method of claim 11 , wherein the auto-scaling function is initiated based at least in part on one or more pre-defined conditions.

18

18. The computer-implemented method of claim 17 , wherein the one or more pre-defined conditions comprises a condition that the first programmed device resource fails to run.

19

19. The computer-implemented method of claim 11 , wherein the first programmed device resource or the second programmed device resource comprises one of a field-programmable gate array resource, a field-programmable object array resource, a memristor array resource, or a programmable neural network device.

20

20. A system comprising: a field-programmable device resource operating within a distributed execution environment; and a computer system comprising a processor and memory and operating within the distributed execution environment, the computer system being configured to; receive a request to instantiate a new instance to utilize one or more field-programmable device resources, the request specifying a first configuration for the one or more field-programmable device resources including a first type of field-programmable device resources and a first number of field-programmable device resources; instantiate the new instance to utilize the one or more field-programmable device resources; receive a field-programmable device resource design; program the one or more field-programmable device resources using the field-programmable device resource design and the first configuration to produce a first programmed device resource; cause the first programmed device resource to run within the distributed execution environment; return results of running the first programmed device resource to a customer computing system; based at least in part on the results, performing an auto-scaling function to automatically scale up or down either the first type of field-programmable resource or the first number of field-programmable resources used to run the first programmed device resource to create a second configuration, the second configuration including a second type of field-programmable device resources and a second number of field-programmable device resources, wherein the second type of field-programmable device resources differs from the first type of field-programmable device resources or the second number of field-programmable device resources differs from the first number of field-programmable device resources; reprogramming the one or more field-programmable device resources using the field-programmable device resource design and the second configuration to produce a second programmed device resource; and causing the second programmed device resource to run.

21

21. The system of claim 20 , wherein the computer system operates within a data center associated with the distributed execution environment.

22

22. The system of claim 21 , wherein the request to instantiate the new instance is received from the customer computing system that is in communication with the distributed execution environment via a network.

23

23. The system of claim 22 , wherein the new instance to utilize the one or more field-programmable device resources is instantiated for a cost to a customer associated with the customer computing system.

Classification Codes (CPC)

Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.

Patent Metadata

Filing Date

March 7, 2013

Publication Date

September 19, 2017

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “Providing field-programmable devices in a distributed execution environment” (US-9766910). https://patentable.app/patents/US-9766910

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.