IP Library Granted Patent US 12,293,230
Granted Patent B2
US 12,293,230 · App. 18/404,705 · Granted May 6, 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,293,230
App. No.
18/404,705
Granted
May 6, 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 (48)

1. A computer-implemented method, comprising:

determining that a hardware acceleration condition has been satisfied for a first function by:

counting, within a time interval, a number of requests to perform the first function that a function processing service receives; and

determining that the number of requests to perform the first function exceeds a hardware acceleration condition threshold value;

based on the hardware acceleration condition threshold value being exceeded, configuring a hardware circuit to perform the first function; and

causing the first function to be performed via the hardware circuit.

2. The computer-implemented method of claim 1 , further comprising adding the first function to a function library that is implemented in the hardware circuit.

3. The computer-implemented method of claim 2 , further comprising receiving, at the function processing service, a request to execute source code that includes instructions to perform the first function.

4. The computer-implemented method of claim 1 , wherein counting the number of requests to perform the first function within the time interval includes analyzing historical information related to requests received by the function processing service within the time interval.

5. The computer-implemented method of claim 1 , wherein the hardware circuit comprises:

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

a graphics processing unit (GPU) that uses GPU code to perform the first function;

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

a digital signal processor (DSP) that uses DSP code to perform the first function.

6. The computer-implemented method of claim 1 , further comprising configuring the hardware circuit to perform a second function in parallel with the first function, wherein the second function is different from the first function.

7. The computer-implemented method of claim 6 , further comprising configuring the hardware circuit to operate a plurality of instances of the hardware circuit in parallel.

8. A computer-implemented method, comprising:

determining that a hardware acceleration condition has been satisfied for a first function that belongs to a family of functions by:

counting, within a time interval, a combined number of requests that a function processing service receives to perform functions within the family of functions; and

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

based on the hardware acceleration condition threshold value being exceeded, configuring a hardware circuit to perform the first function; and

causing the first function to be performed via the hardware circuit.

9. The computer-implemented method of claim 8 , further comprising adding the first function to a function library that is implemented in the hardware circuit.

10. The computer-implemented method of claim 9 , further comprising receiving, at the function processing service, a request to execute source code that includes instructions to perform the first function.

11. The computer-implemented method of claim 8 , wherein counting the combined number of requests to perform the functions within the family of functions within the time interval includes analyzing historical information related to requests received by the function processing service within the time interval.

12. The computer-implemented method of claim 8 , wherein the hardware circuit comprises:

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

a graphics processing unit (GPU) that uses GPU code to perform the first function;

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

a digital signal processor (DSP) that uses DSP code to perform the first function.

13. The computer-implemented method of claim 8 , further comprising configuring the hardware circuit to perform a second function in parallel with the first function, wherein the second function is different from the first function.

14. The computer-implemented method of claim 13 , further comprising configuring the hardware circuit to operate a plurality of instances of the hardware circuit in parallel.

15. A system, comprising:

a processor; and

a computer memory comprising instructions that, when executed by the processor, cause the system to perform operations comprising:

determining that a hardware acceleration condition has been satisfied for a first function by:

counting, within a time interval, a number of requests to perform the first function that a function processing service receives; and determining that the number of requests to perform the first function exceed a hardware acceleration condition threshold value;

based on the hardware acceleration condition threshold value being exceeded, configuring a hardware circuit to perform the first function; and

causing the first function to be performed via the hardware circuit.

16. The system of claim 15 , further comprising adding the first function to a function library that is implemented in the hardware circuit.

17. The system of claim 15 , further comprising receiving, at the function processing service, a request to execute source code that includes instructions to perform the first function.

18. The system of claim 15 , wherein the hardware circuit comprises:

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

a graphics processing unit (GPU) that uses GPU code to perform the first function;

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

a digital signal processor (DSP) that uses DSP code to perform the first function.

19. The system of claim 15 , further comprising configuring the hardware circuit to perform a second function in parallel with the first function, wherein the second function is different from the first function.

20. The system of claim 19 , further comprising configuring the hardware circuit to operate a plurality of instances of the hardware circuit in parallel.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2024
From: TANDON, PRATEEK; CORELL, BRIAN JACOB
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 066025/0062 →
Continuity (3)
Continuation 17586434 · Jan 27, 2022
Division 16555927 · Aug 29, 2019
Related Publication 20240134697A1 · Apr 25, 2024
References Cited (26)
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]
US 20190050258A1 · Kim · 2019 [cited by applicant]
JP 2007183726A · 2007 [cited by applicant]
JP 2014191828A · 2014 [cited by applicant]
JP 2017204213A · 2017 [cited by applicant]
WO 2014099249A1 · 2014 [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 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, dated Jan. 22, 2024, 9 pages (English translation provided). [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. 290564, 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]
Notice of Allowance mailed on Aug. 8, 2024, in U.S. Appl. No. 18/404,715, 5 pages. [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]
Notice of Allowance mailed on Oct. 29, 2024, in U.S. Appl. No. 18/404,715, 5 pages. [cited by applicant]
Office Action Received for Korean Application No. 10-2022-7006509, mailed on Dec. 3, 2024, 14 pages. [cited by applicant]
First Examination Report Received for Indian Application No. 202147062218, mailed on Feb. 28, 2025, 04 pages. [cited by applicant]
Bertels, et al., “Profiling, Compilation, and HDL Generation within the hArtes Project”, Research Gate, Jan. 31, 2007, 11 Pages. [cited by applicant]
First Office Action Received for Chinese Application No. 202080057684.2, mailed on Mar. 10, 2025, 25 Pages (English Translation Provided). [cited by applicant]