Task switching and inter-task communications for coordination of applications executing on a multi-user parallel processing architecture
DCFirst Claim
1. A method for managing execution of a plurality of software applications on an array of processing units, the method comprising:
- providing, for each software application of the plurality of software applications, one or more input buffers of a plurality of input buffers,each input buffer being provided for buffering processing load input directed to a respective software application of the plurality of software applications and being dedicated to the respective software application; and
repeatedly rearranging, by a controller comprising hardware logic and/or software logic, task assignment to the array of processing units and communication path connectivity for the array of processing units, whereinthe array of processing units comprises a plurality of processing units of a reconfigurable type, each being configurable in two or more application specific configurations, andrearranging comprises, for each iteration of a plurality of iterations,allocating, to each software application of at least a portion of a plurality of software applications as a set of active software applications, a number of units of the array of processing units at least in part in accordance with a plurality of demand expressions, each demand expression of the plurality of demand expressions corresponding to a different software application of the plurality of software applications, whereineach demand expression of the plurality of demand expressions is based at least in part on a measure of an amount of a processing load input at the one or more input buffers of the respective software application,assigning, for each application of the set of active software applications, one or more task instances of the respective active application to one or more processing units of the plurality of processing units in accordance with the allocating, whereinat least one task instance of the one or more task instances is a ready-to-execute task instance of the respective software application for processing the data at the one or more input data buffers of the respective software application,each task instance of the one or more task instances is assigned to a different processing unit of the one or more processing units such that assigning results in each processing unit of the plurality of processing units being assigned only one respective task instance for any given iteration of the plurality of iterations, andassigning comprises, for at least one task instance of the one or more task instances of a given software application of the plurality of software applications, reconfiguring the respective processing unit to an application specific configuration of the two or more application specific configurations, wherein the application specific configuration is associated with the at least one task instance, andcausing connection, in accordance with the assigning, of the processing load input from each buffer of at least a portion of the plurality of input buffers to a different unit of the plurality of processing units to connect respective processing load input to the respective software application that the respective processing load input is directed to.
1 Assignment
Litigations
0 Petitions
Accused Products
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.
192 Citations
21 Claims
-
1. A method for managing execution of a plurality of software applications on an array of processing units, the method comprising:
-
providing, for each software application of the plurality of software applications, one or more input buffers of a plurality of input buffers, each input buffer being provided for buffering processing load input directed to a respective software application of the plurality of software applications and being dedicated to the respective software application; and repeatedly rearranging, by a controller comprising hardware logic and/or software logic, task assignment to the array of processing units and communication path connectivity for the array of processing units, wherein the array of processing units comprises a plurality of processing units of a reconfigurable type, each being configurable in two or more application specific configurations, and rearranging comprises, for each iteration of a plurality of iterations, allocating, to each software application of at least a portion of a plurality of software applications as a set of active software applications, a number of units of the array of processing units at least in part in accordance with a plurality of demand expressions, each demand expression of the plurality of demand expressions corresponding to a different software application of the plurality of software applications, wherein each demand expression of the plurality of demand expressions is based at least in part on a measure of an amount of a processing load input at the one or more input buffers of the respective software application, assigning, for each application of the set of active software applications, one or more task instances of the respective active application to one or more processing units of the plurality of processing units in accordance with the allocating, wherein at least one task instance of the one or more task instances is a ready-to-execute task instance of the respective software application for processing the data at the one or more input data buffers of the respective software application, each task instance of the one or more task instances is assigned to a different processing unit of the one or more processing units such that assigning results in each processing unit of the plurality of processing units being assigned only one respective task instance for any given iteration of the plurality of iterations, and assigning comprises, for at least one task instance of the one or more task instances of a given software application of the plurality of software applications, reconfiguring the respective processing unit to an application specific configuration of the two or more application specific configurations, wherein the application specific configuration is associated with the at least one task instance, and causing connection, in accordance with the assigning, of the processing load input from each buffer of at least a portion of the plurality of input buffers to a different unit of the plurality of processing units to connect respective processing load input to the respective software application that the respective processing load input is directed to. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A method for managing execution of a plurality of software applications on an array of processing units, the method comprising:
-
providing a core fabric comprising the array of processing units comprising a plurality of processing units of a reconfigurable type, each processing unit of the reconfigurable type being configurable in two or more application specific configurations, and a plurality of input buffers, each input buffer being allocated for buffering input data directed to a respective software application of the plurality of software applications and being dedicated to the respective software application, wherein each software application of the plurality of software applications is allocated one or more input buffers of the plurality of input buffers; and repeatedly rearranging, by a controller comprising hardware logic and/or software logic, task assignment to the array of processing units and communication path connectivity for the array of processing units, the operations comprising, for each iteration of a plurality of iterations, allocating, to each software application of at least a portion of the plurality of software applications as a set of active software applications, a number of units of the array of processing units at least in part in accordance with a plurality of demand expressions, each demand expression of the plurality of demand expressions corresponding to a different software application of the plurality of software applications, wherein each demand expression of the plurality of demand expressions is based at least in part on a measurement of an amount of processing load input at the one or more input buffers of the respective software application, assigning, for each software application of the portion of the plurality of software applications, one or more task instances of the respective software application for execution on the number of units allocated to the respective software application, wherein assigning comprises, for at least one application of the portion of the plurality of software applications, identifying at least one activating task instance not allocated to the array of processing units for execution during a current iteration of the plurality of iterations, each activating task instance of the at least one activating task instance corresponding to a particular software application of the plurality of software applications, identifying at least one available unit of the array of processing units, each available unit corresponding to a respective deactivating task instance of at least one deactivating task instance, mapping each activating task instance of the at least one activating task instance to a different unit of the at least one available unit, and for one or more task instances of the at least one activating task instance, reconfiguring the respective available unit to an application specific configuration of the two or more application specific configurations, wherein the application specific configuration is associated with the at least one task instance, and for each unit of the at least one available unit, enabling connection between the respective unit and a respective input buffer of the one or more input buffers allocated to buffering processing load input for a respective software application of the task instance mapped to the respective unit. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21)
-
Specification