IP Library Granted Patent US 12,217,093
Granted Patent B2
US 12,217,093 · App. 18/404,715 · Granted Feb 4, 2025

Hardware acceleration for function processing

Inventors: Prateek Tandon (Issaquah, WA); Brian Jacob Corell (Sammamish, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F9/5027G06F9/3836G06F9/4843G06F13/3625
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,217,093
App. No.
18/404,715
Granted
Feb 4, 2025
Kind
B2
Abstract

A function processing service may receive a request to execute source code. The source code may include instructions to perform a function. The function processing service may determine whether at least one hardware acceleration condition has been satisfied for the function. If at least one hardware acceleration condition has been satisfied, the instructions in the source code may be translated into hardware-specific code corresponding to a hardware circuit. The hardware circuit may be configured based on the hardware-specific code, and the hardware circuit may perform the function. The function processing service may then provide the result obtained from the hardware circuit to the requesting entity.

Claims (63)

1. A computer-implemented method, comprising:

receiving a first request to execute a first function from a first set of functions;

analyzing first historical information related to a first plurality of requests received by a function processing service;

based on analyzing the first historical information, configuring a set of hardware circuits to perform the first set of functions;

receiving a second request to execute a second function from a second set of functions;

analyzing second historical information related to a second plurality of requests received by the function processing service; and

based on analyzing the second historical information configuring the set of hardware circuits to perform the second set of functions, wherein the second set of functions is different from the first set of functions.

2. The computer-implemented method of claim 1 , wherein:

the set of hardware circuits utilizes a first hardware acceleration configured to perform the first function from the first set of functions; and

the set of hardware circuits utilizes a second hardware acceleration configured to perform the second function from the second set of functions.

3. The computer-implemented method of claim 1 , wherein:

the first plurality of requests are received by the function processing service during a first time interval;

the second plurality of requests are received by the function processing service during a second time interval; and

the first time interval is different from the second time interval.

4. The computer-implemented method of claim 1 , wherein:

the first request includes a first source code with first instructions to perform the first function from the first set of functions; and

the second request includes a second source code with second instructions to perform the second function from the second set of functions.

5. The computer-implemented method of claim 1 , further comprising causing the first function to be performed via a first hardware circuit from the set of hardware circuits.

6. The computer-implemented method of claim 1 , wherein configuring the set of hardware circuits to perform the first set of functions is based on determining that a hardware acceleration condition has been satisfied.

7. The computer-implemented method of claim 6 , wherein determining that the hardware acceleration condition has been satisfied is based on:

counting a number of requests within the first historical information to perform the first function of the first set of functions; and

determining that the number of requests exceeds a hardware acceleration condition threshold value.

8. The computer-implemented method of claim 6 , wherein determining that the hardware acceleration condition has been satisfied is based on:

counting a number of requests within the first historical information to perform the first set of functions; and

determining that the number of requests exceeds a hardware acceleration condition threshold value.

9. The computer-implemented method of claim 6 , wherein determining that the hardware acceleration condition has been satisfied is based on:

determining an estimated cost savings associated with performing the first function of the first set of functions via the set of hardware circuits compared to performing the first function via a general-purpose processor; and

determining that the estimated cost savings exceed a hardware acceleration condition threshold value.

10. The computer-implemented method of claim 6 , further comprising utilizing a condition evaluator to determine that the hardware acceleration condition has been satisfied.

11. The computer-implemented method of claim 1 , wherein the first historical information and the second historical information are maintained in a historical information database that stores requests received by the function processing service.

12. The computer-implemented method of claim 11 , wherein the requests stored in the historical information database include identifying information, request types, and receipt time stamps.

13. The computer-implemented method of claim 1 , wherein the first request is processed in parallel with the second request.

14. The computer-implemented method of claim 1 , wherein the set of hardware circuits comprises:

a field programmable gate array (FPGA) that uses hardware description language (HDL) code to process the first request;

a graphics processing unit (GPU) that uses GPU code to process the first request;

a programmable application specific integrated circuit (ASIC) that uses customed compiled machine code to process the first request; or

a digital signal processor (DSP) that uses DSP code to process the first request.

15. A system, comprising:

a processor;

memory in electronic communication with the processor; and

instructions stored in the memory, the instructions being executable by the processor to perform operations of:

receiving a first request to execute a first function from a first set of functions;

analyzing first historical information related to a first plurality of requests received by a function processing service;

based on analyzing the first historical information, configuring a set of hardware circuits to perform the first set of functions;

receiving a second request to execute a second function from a second set of functions;

analyzing second historical information related to a second plurality of requests received by the function processing service; and

based on analyzing the second historical information configuring the set of hardware circuits to perform the second set of functions, wherein the second set of functions is different from the first set of functions.

16. The system of claim 15 , wherein configuring the set of hardware circuits to perform the first set of functions is based on determining that a hardware acceleration condition has been satisfied.

17. A computer-implemented method, comprising:

analyzing first historical information related to a first plurality of requests associated with a first set of functions and received by a function processing service during a first time interval;

configuring a set of hardware circuits to perform the first set of functions during the first time interval based on the first historical information;

analyzing second historical information related to a second plurality of requests associated with a second set of functions and received by the function processing service during a second time interval, wherein the second time interval is different from the first time interval; and

configuring the set of hardware circuits to perform the second set of functions during the second time interval based on the second historical information, wherein the second set of functions is different from the first set of functions.

18. The computer-implemented method of claim 17 , further comprising:

receiving a first request during the first time interval to execute a first source code, the first source code including first instructions to perform a first function from the first set of functions;

determining that a first hardware acceleration condition has been satisfied for the first function based on analyzing the first historical information; and

causing the first function to be performed via a first hardware circuit in the set of hardware circuits.

19. The computer-implemented method of claim 18 , wherein:

the set of hardware circuits utilizes a first hardware acceleration configured to perform the first function from the first set of functions; and

the set of hardware circuits utilizes a second hardware acceleration configured to perform a second function from the second set of functions.

20. The computer-implemented method of claim 18 , further comprising:

receiving a second request during the second time interval to execute a second source code, the second source code including second instructions to perform a second function from the second set of functions; and

performing the second function during the second time interval via a second hardware circuit in the set of hardware circuits.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 5, 2024
From: TANDON, PRATEEK; CORELL, BRIAN JACOB
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 066030/0838 →
Continuity (3)
Division 17586434 · Jan 27, 2022
Division 16555927 · Aug 29, 2019
Related Publication 20240143401A1 · May 2, 2024
References Cited (19)
US 9577829B1 · Roth et al. · 2017 [cited by applicant]
US 10489195B2 · Shimamura et al. · 2019 [cited by applicant]
US 11237873B2 · Tandon et al. · 2022 [cited by applicant]
US 20050086359A1 · Banerjee et al. · 2005 [cited by applicant]
US 20190026150A1 · Shimamura et al. · 2019 [cited by applicant]
JP 2007183726A · 2007 [cited by applicant]
JP 2014191828A · 2014 [cited by applicant]
JP 2017204213A · 2017 [cited by applicant]
Notice of Allowance mailed on Jan. 5, 2024, in U.S. Appl. No. 17/586,434, 2 pages. [cited by applicant]
Office Action Received for Israeli Application No. 290654, mailed on Feb. 6, 2024, 4 pages. [cited by applicant]
Bertels, et al. “Profiling, Compilation, and HDL Generation within the hArtes Project,” FPGAs and Reconfigurable Systems: Adaptive Heterogeneous Systems-on-Chip and European Dimensions (Date 07 Workshop), 2007, pp. 53-6… [cited by applicant]
Office Action Received for Indonesia Application No. P00202201367, dated Apr. 30, 2024, 4 pages (English translation provided). [cited by applicant]
Office Action issued in Russian Patent Application No. 202210834, mailed on Sep. 8, 2023, 14 pages. [cited by applicant]
A Jain, S., et al., “Speeding Up Program Execution Using Reconfigurable Hardware and a Hardware Function Library,” VLSI Design, Jan. 1998, 1998 Eleventh International Conference, IEEE 1997/1998, 400-405, URL: pp. https:… [cited by applicant]
Office Action issued in Russian Patent Application No. 2022108034/28(016763), dated Jan. 22, 2024, 9 pages (English translation provided). [cited by applicant]
Non-Final Office Action mailed on Sep. 6, 2024, in U.S. Appl. No. 18/404,705, 05 pages. [cited by applicant]
Notice of Reasons for Refusal Received for Japanese Application No. 2022-513455, mailed on Jul. 2, 2024, 45 pages (English Translation Provided). [cited by applicant]
Office Action Received for Israel Application No. 290564, mailed on Jul. 24, 2024, 3 pages. [cited by applicant]
Office Action Received for Singapore Application No. 11202201436Q, mailed on Nov. 29, 2024, 5 pages. [cited by applicant]