IP Library Granted Patent US 10,963,306
Granted Patent B2
US 10,963,306 · App. 17/034,404 · Granted Mar 30, 2021

Managing resource sharing in a multi-core data processing fabric

Inventor: Mark Henrik Sandstrom (Alexandria, VA)
Assignee: ThroughPuter, Inc.
G06F9/5011G06F9/46G06F9/4881G06F9/505G06F9/5016G06F9/5027G06F9/5038G06F9/54G06F9/544G06F9/546G06F15/17337H04L49/15
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,963,306
App. No.
17/034,404
Granted
Mar 30, 2021
Kind
B2
Abstract

Systems and methods provide an extensible, multi-stage, realtime application program processing load adaptive, manycore data processing architecture shared dynamically among instances of parallelized and pipelined application software programs, according to processing load variations of said programs and their tasks and instances, as well as contractual policies. The invented techniques provide, at the same time, both application software development productivity, through presenting for software a simple, virtual static view of the actually dynamically allocated and assigned processing hardware resources, together with high program runtime performance, through scalable pipelined and parallelized program execution with minimized overhead, as well as high resource efficiency, through adaptively optimized processing resource allocation.

Claims (47)

1. A method for task-switching on a multi-user parallel processing hardware architecture comprising a plurality of reconfigurable logic-based processing units, the method comprising:

linking, through a first set of inter-task communication paths of the multi-user parallel processing hardware architecture, a first set of reconfigurable logic-based processing units of the plurality of reconfigurable logic-based processing units into a first multi-stage program instance configured to execute a corresponding set of interdependent processing stages of a first program, wherein each of the first set of reconfigurable logic-based processing units is programmed to perform a respective task of a plurality of first tasks of the first program corresponding to a respective processing stage of the first multi-stage program instance;

linking, through a second set of inter-task communication paths of the multi-user parallel processing hardware architecture, a second set of reconfigurable logic-based processing units of the plurality of reconfigurable logic-based processing units into a second multi-stage program instance configured to execute a corresponding set of interdependent processing stages of a second program, wherein each of the second set of reconfigurable logic-based processing units is programmed to perform a respective task of a plurality of second tasks of the second program corresponding to a respective processing stage of the second multi-stage program instance;

maintaining, in a storage, a first location for a first reconfigurable logic-based processing unit of the first set of reconfigurable logic-based processing units executing the first multi-stage program instance such that a first one or more users and/or programs are enabled to communicate directly with the first multi-stage program instance;

maintaining, in the storage, a second location for a second reconfigurable logic-based processing unit of the second set of reconfigurable logic-based processing units executing the second multi-stage program instance such that a second one or more users and/or programs are enabled to communicate directly with the second multi-stage program instance; and

in response to an increased demand for the second program, reallocating, by a controller comprising software and/or hardware logic configured to implement a load-adaptive allocation policy, at least one processing unit of the first set of reconfigurable logic-based processing units, the reallocating resulting in

(1) switching the at least one of the first set of processing units from performing a task of the plurality of first tasks to performing one task of the plurality of second tasks, wherein switching comprises matching a first programming configuration of the at least one of the first set of processing units to a programming configuration demanded by the one task, and

(2) adjusting, in storage, at least one of the first location or the second location to enable, through the respective location, direct communication to the other multi-stage program instance of the first multi-stage program instance or the second multi-stage program instance;

wherein the load-adaptive allocation policy is configured to facilitate minimizing reconfiguring the plurality of reconfigurable logic-based processing units.

2. The method of claim 1 , wherein at least one of the first program and the second program is a data processing service.

3. The method of claim 2 , wherein the data processing service is available for use by an external user or program of at least one of a) the first one or more users and/or programs or b) the second one or more users and/or programs communicating with the respective program via a network connection with the multi-user parallel processing hardware architecture.

4. The method of claim 1 , wherein the at least one processing unit comprises at least one Field Programmable Gate Array (FPGA).

5. The method of claim 1 , wherein the plurality of reconfigurable logic-based processing units is included in an array of processing units.

6. The method of claim 5 , wherein the load-adaptive allocation policy is configured to facilitate load balancing across the array of processing units.

7. The method of claim 1 , wherein the controller is configured to monitor availability of the plurality of reconfigurable logic-based processing units.

8. The method of claim 1 , further comprising monitoring a first characteristic corresponding to at least one of the first program and the first set of reconfigurable logic-based processing units, wherein

the increased demand is determined at least in part by the monitoring of the first characteristic.

9. The method of claim 8 , wherein the first characteristic comprises a data processing load.

10. The method of claim 8 , wherein the first characteristic comprises a readiness to execute of one or more tasks of the plurality of first tasks.

11. The method of claim 1 , wherein matching the first programming configuration of the at least one of the first set of processing units to the programming configuration demanded by the one task comprises, when the first programming configuration is different than the programming configuration demanded by the one task, reconfiguring the first programming configuration to the programming configuration demanded by the one task.

12. A system for task-switching on a multi-user parallel processing hardware architecture comprising a plurality of reconfigurable logic-based processing units, the system comprising:

the plurality of reconfigurable logic-based processing units;

a reconfigurable cross-connect for establishing communication links between pairs of processing units of the plurality of reconfigurable logic-based processing units; and

hardware logic and/or software logic configured to

link, through the reconfigurable cross-connect, a first set of reconfigurable logic-based processing units of the plurality of reconfigurable logic-based processing units into a first multi-stage program instance configured to execute a corresponding set of interdependent processing stages of a first program, wherein

each of the first set of reconfigurable logic-based processing units is programmed to perform a respective task of a plurality of first tasks of the first program corresponding to a respective processing stage of the first multi-stage program instance,

link, through the reconfigurable cross-connect, a second set of reconfigurable logic-based processing units of the plurality of reconfigurable logic-based processing units into a second multi-stage program instance configured to execute a corresponding set of interdependent processing stages of a second program, wherein

each of the second set of reconfigurable logic-based processing units is programmed to perform a respective task of a plurality of second tasks of the second program corresponding to a respective processing stage of the second multi-stage program instance,

maintain, in a storage, a first location for a first reconfigurable logic-based processing unit of the first set of reconfigurable logic-based processing units executing the first multi-stage program instance such that a first one or more users and/or programs are enabled to communicate directly with the first multi-stage program instance,

maintain, in the storage, a second location for a second reconfigurable logic-based processing unit of the second set of reconfigurable logic-based processing units executing the second multi-stage program instance such that a second one or more users and/or programs are enabled to communicate directly with the second multi-stage program instance, and

in response to an increased demand for the second program, reallocate, according to a load-adaptive allocation policy, at least one processing unit of the first set of reconfigurable logic-based processing units, the reallocating resulting in

(1) switching the at least one of the first set of processing units from performing a task of the plurality of first tasks to performing one task of the plurality of second tasks, wherein switching comprises matching a first programming configuration of the at least one of the first set of processing units to a programming configuration demanded by the one task, and

(2) adjusting, in storage, at least one of the first location or the second location to enable, through the respective location, direct communication to the other multi-stage program instance of the first multi-stage program instance or the second multi-stage program instance;

wherein the load-adaptive allocation policy is configured to facilitate minimizing reconfiguring the plurality of reconfigurable logic-based processing units.

13. The system of claim 12 , wherein the plurality of reconfigurable logic-based processing units is included in an array of processing units.

14. The system of claim 13 , wherein the array of processing units comprises a plurality of central processing units (CPUs) and/or graphics processing units (GPUs).

15. The system of claim 12 , wherein at least one of the first program and the second program executes a data processing service.

16. The system of claim 12 , further comprising a network connection for providing communication between an external user or program of at least one of a) the first one or more users and/or programs or b) the second one or more users and/or programs and the data processing service.

17. The system of claim 16 , wherein providing communication comprises providing communication to the external user or program without awareness of the first location or the second location by the external user or program.

18. The system of claim 12 , wherein the at least one processing unit comprises at least one Field Programmable Gate Array (FPGA).

19. The system of claim 12 , wherein the plurality of reconfigurable logic-based processing units is included in an array of processing units.

20. The system of claim 19 , wherein the load-adaptive allocation policy is configured to facilitate load balancing across the array of processing units.

21. The system of claim 12 , further comprising monitoring a first characteristic corresponding to at least one of the first program and the first set of reconfigurable logic-based processing units, wherein

the increased demand is determined at least in part by the monitoring of the first characteristic.

22. The system of claim 21 , wherein the first characteristic comprises a data processing load.

23. The system of claim 21 , wherein the first characteristic comprises a readiness to execute of one or more tasks of the plurality of first tasks.

24. The system of claim 12 , wherein matching the first programming configuration of the at least one of the first set of processing units to the programming configuration demanded by the one task comprises, when the first programming configuration is different than the programming configuration demanded by the one task, reconfiguring the first programming configuration to the programming configuration demanded by the one task.

Assignments (1)
CONFIRMATORY ASSIGNMENT Recorded Oct 22, 2020
From: SANDSTROM, MARK HENRIK
To: THROUGHPUTER, INC.
Reel/Frame 054187/0842 →
Continuity (21)
Continuation 16847341 · Apr 13, 2020
Continuation 16577909 · Sep 20, 2019
Continuation 16399593 · Apr 30, 2019
Continuation 16226502 · Dec 19, 2018
Continuation 16145632 · Sep 28, 2018
Continuation 16014674 · Jun 21, 2018
Continuation 14521490 · Oct 23, 2014
Continuation 13297455 · Nov 16, 2011
Continuation 16014674 · Jun 21, 2018
Continuation 15933724 · Mar 23, 2018
Continuation 15273731 · Sep 23, 2016
Continuation 15183860 · Jun 16, 2016
Division 15042159 · Feb 12, 2016
Continuation 14261384 · Apr 24, 2014
Continuation 13684473 · Nov 23, 2012
Provisional Application 61657708 · Jun 8, 2012
Provisional Application 61673725 · Jul 19, 2012
Provisional Application 61721686 · Nov 2, 2012
Provisional Application 61727372 · Nov 16, 2012
Provisional Application 62556065 · Nov 4, 2011
Related Publication 20210055965A1 · Feb 25, 2021
Cited By (1)
US 12,493,492