IP Library › Granted Patent US 10,296,392
Granted Patent B2
US 10,296,392 · App. 14/717,788 · Granted May 21, 2019

Implementing a multi-component service using plural hardware acceleration components

Inventors: Stephen F. Heil (Sammamish, WA); Adrian M. Caulfield (Woodinville, WA); Douglas C. Burger (Bellevue, WA); Andrew R. Putnam (Seattle, WA); Eric S. Chung (Woodinville, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F9/5027G06F9/5077G06F2209/5015
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 10,296,392
App. No.
14/717,788
Granted
May 21, 2019
Kind
B2
Abstract

A data processing system is described herein that includes two or more software-driven host components that collectively provide a software plane. The data processing system further includes two or more hardware acceleration components that collectively provide a hardware acceleration plane. The hardware acceleration plane implements one or more services, including at least one multi-component service. The multi-component service has plural parts, and is implemented on a collection of two or more hardware acceleration components, where each hardware acceleration component in the collection implements a corresponding part of the multi-component service. Each hardware acceleration component in the collection is configured to interact with other hardware acceleration components in the collection without involvement from any host component. A function parsing component is also described herein that determines a manner of parsing a function into the plural parts of the multi-component service.

Claims (57)

1. A data processing system comprising:

a plurality of server unit components, the plurality of server unit components comprising:

a plurality of host components configured to use central processing units to execute machine-readable instructions; and

a plurality of field-programmable gate arrays,

individual server unit components of the plurality including at least one individual host component and at least one individual field-programmable gate array,

at least one server unit component of the plurality having a corresponding host component that is configured to:

receive requests to perform different functions on behalf of tenant functionality executing on requesting server unit components; parse the different functions to identify programmatic calls between different stages of the different functions;

based at least on conditions in the data processing system, dynamically vary structures of the field-programmable gate arrays used to implement different invocations of the different functions, the structures being dynamically varied by:

identifying available field-programmable arrays of the data processing system that are available to implement the different stages of the different functions;

identifying selected field-programmable gate arrays from the available field-programmable gate arrays to perform individual stages of the different functions;

configuring the selected field-programmable gate arrays to perform the individual stages of the different functions; and

configuring certain selected field-programmable arrays to communicate final results of the different functions to the requesting server unit components, the certain selected field-programmable arrays communicating the final results to the requesting server unit components over a network in the data processing system without assistance from the central processing units.

2. The data processing system of claim 1 , wherein the at least one server unit component is further configured to:

parse the different functions to identify different subroutines of the different functions, individual subroutines corresponding to individual stages of the different functions.

3. The data processing system of claim 1 , further comprising the network.

4. The data processing system of claim 1 , wherein the at least one server unit component is further configured to:

configure particular selected field-programmable arrays to communicate intermediate results of the different functions to other selected field-programmable arrays that produce the final results, the particular selected field-programmable arrays communicating the intermediate results to the other selected field-programmable arrays over the network in the data processing system without assistance from the central processing units.

5. The data processing system of claim 4 , further comprising the network, wherein respective field-programmable gate arrays and respective host components of respective server unit components share a common network address.

6. The data processing system of claim 5 , the respective server unit components comprising Peripheral Component Internet Express links connecting the respective field-programmable gate arrays to respective central processing units of the respective host components.

7. The data processing system of claim 1 , further comprising the network, the network comprising multiple physically distinct networks used separately by the central processing units and the plurality of field-programmable gate arrays.

8. The data processing system of claim 1 , wherein the at least one server unit component is further configured to:

detect a failure in a specific function stage by a failed field-programmable gate array; and

heal the specific function stage by replacing the failed field-programmable gate array with a replacement selected from a pool of spare field-programmable gate arrays.

9. The data processing system of claim 1 , wherein the at least one server unit component is further configured to:

maintain availability information identifying availability of the plurality of field-programmable gate arrays; and

modify the availability information to indicate that a particular field-programmable array is unavailable when the particular field-programmable array in use.

10. The data processing system of claim 1 , wherein the at least one server unit component is further configured to:

maintain availability information identifying availability of individual configurable domains of the plurality of field-programmable gate arrays; and

modify the availability information to indicate that certain configurable domains are unavailable when the certain configurable domains are in use.

11. The data processing system of claim 1 , wherein the conditions relate to changes in demand for particular functions.

12. The data processing system of claim 1 , wherein the conditions relate to congestion of a particular link in the network.

13. A computer-readable storage medium storing machine-readable instructions which, when executed by one or more processing units, cause the one or more processing units to perform acts comprising:

receiving requests to perform different functions on behalf of tenant functionality provided on requesting server unit components of a data processing system;

parsing the different functions to identify programmatic calls between different stages of the different functions;

based at least on conditions in the data processing system, dynamically varying structures of field-programmable gate arrays used to implement different invocations of the different functions, the structures being dynamically varied by:

identifying available field-programmable arrays of the data processing system that are available to implement the different stages of the different functions;

based at least on conditions in the data processing system, identifying selected field-programmable gate arrays from the available field-programmable gate arrays to perform individual stages of the different functions;

configuring the selected field-programmable gate arrays of the plurality to perform the individual stages of the different functions; and

configuring certain selected field-programmable arrays to communicate final results of the different functions to the requesting server unit components, the certain selected field-programmable arrays communicating the final results to the requesting server unit components over a network in the data processing system.

14. The computer-readable storage medium of claim 13 , the structures comprising graph structures.

15. The computer-readable storage medium of claim 13 , wherein the dynamically varying the structures comprises using different selected field-programmable gate arrays for different invocations of a particular function.

16. The computer-readable storage medium of claim 13 , the structures being dynamically varied responsive to receiving the requests.

17. A method performed in a data processing system, the method comprising:

receiving requests to perform different functions on behalf of tenant functionality that executes on requesting server unit components of the data processing system;

parsing the different functions to identify programmatic calls between different stages of the different functions;

based at least on conditions in the data processing system, dynamically varying structures of field-programmable gate arrays used to implement different invocations of the different functions, the structures being dynamically varied by:

identifying available field-programmable arrays of the data processing system that are available to implement the different stages of the different functions;

based at least on the conditions in the data processing system, identifying selected field-programmable gate arrays from the available field-programmable gate arrays to perform individual stages of the different functions;

configuring the selected field-programmable gate arrays of the plurality to perform the individual stages of the different functions; and

configuring certain selected field-programmable arrays to communicate final results of the different functions to the requesting server unit components, the certain selected field-programmable arrays communicating the final results to the requesting server unit components over a network in the data processing system.

18. The method of claim 17 , further comprising:

configuring particular selected field-programmable arrays to communicate intermediate results of the different functions over the network to the certain selected field-programmable arrays, the certain selected field-programmable gate arrays using the intermediate results to produce the final results.

19. The method of claim 17 , wherein identifying the available field-programmable gate arrays comprises:

querying availability information in a data store to determine a currently-available processing capacity of various field-programmable gate arrays in the data processing system; and

identifying the selected field-programmable gate arrays based at least on the currently-available processing capacity.

20. The method of claim 19 , further comprising:

updating the availability information as the requests are received and the selected field-programmable gate arrays are configured.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2015
From: HEIL, STEPHEN F.; CAULFIELD, ADRIAN M.; BURGER, DOUGLAS C.; PUTNAM, ANDREW R.; CHUNG, ERIC S.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 035685/0132 →
Continuity (2)
Provisional Application 62149488 · Apr 17, 2015
Related Publication 20160306668A1 · Oct 20, 2016
Cited By (3)
US 12,189,777 US 12,197,581 US 12,438,853