Systems and methods for managing resource allocation and concurrent program execution on an array of processor cores
First Claim
1. A system for controlling access to an array of processor cores on behalf of a plurality of users, each user presenting one or more programs of a plurality of software programs for execution upon the array of processor cores, the system comprising:
- a plurality of program specific data buffers, each buffer being dedicated to a respective program of the plurality of software programs such that each program of at least a portion of the plurality of software programs has a respective one or more buffers of the plurality of program specific data buffers dedicated to the respective program;
a plurality of multiplexers; and
a plurality of subsystems each implemented in hardware logic and/or software logic, the plurality of subsystems comprisinga first subsystem configured to allocate the array of processor cores among the plurality of software programs of the plurality of users, whereineach user of the plurality of users submitted one or more software programs of the plurality of software programs for execution on the array of processor cores, andallocating comprises allocating, to each program of the plurality of software programs, a respective number of cores of the array of processor cores as one or more allocated cores of the respective program,a second subsystem configured to, at least in part based on said allocating, assign one or more instances of each program of at least a subset of the plurality of software programs as selected instances for execution on the one or more allocated cores of the respective program, whereineach selected instance is assigned to a different core of the one or more allocated cores of the respective program corresponding to the respective instance,for each program of at least a portion of the plurality of software programs, the number of cores allocated to the respective program is less than a number of possible instances of the respective program available for assigning,andnumber of the one or more selected instances equals number of the one or more allocated cores allocated to the respective program by the allocating, anda third subsystem configured to, at least in part based on said assigning, establish connections between the array of processor cores and the plurality of program specific data buffers, whereinestablishing connections comprises, for each core of at least a portion of the array of processor cores, establishing, via one or more multiplexers of the plurality of multiplexers, a data read connection to the respective core from one or more data buffers of the plurality of program specific data buffers specific to a program of the plurality of software programs corresponding to the respective instance assigned to the respective core by the second subsystem of the one or more selected instances of the program, such that the one or more buffers of each program of the portion of the plurality of software programs are multiplexed, via one or more different multiplexers of the plurality of multiplexers, to respective one or more cores to which the one or more selected application instances of the respective program were assigned by the second subsystem;
wherein the allocating, the assigning, and the establishing are repeated over time to respond to demand expressions of the plurality of software programs for the array of processor cores.
1 Assignment
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
16 Claims
-
1. A system for controlling access to an array of processor cores on behalf of a plurality of users, each user presenting one or more programs of a plurality of software programs for execution upon the array of processor cores, the system comprising:
-
a plurality of program specific data buffers, each buffer being dedicated to a respective program of the plurality of software programs such that each program of at least a portion of the plurality of software programs has a respective one or more buffers of the plurality of program specific data buffers dedicated to the respective program; a plurality of multiplexers; and a plurality of subsystems each implemented in hardware logic and/or software logic, the plurality of subsystems comprising a first subsystem configured to allocate the array of processor cores among the plurality of software programs of the plurality of users, wherein each user of the plurality of users submitted one or more software programs of the plurality of software programs for execution on the array of processor cores, and allocating comprises allocating, to each program of the plurality of software programs, a respective number of cores of the array of processor cores as one or more allocated cores of the respective program, a second subsystem configured to, at least in part based on said allocating, assign one or more instances of each program of at least a subset of the plurality of software programs as selected instances for execution on the one or more allocated cores of the respective program, wherein each selected instance is assigned to a different core of the one or more allocated cores of the respective program corresponding to the respective instance, for each program of at least a portion of the plurality of software programs, the number of cores allocated to the respective program is less than a number of possible instances of the respective program available for assigning, and number of the one or more selected instances equals number of the one or more allocated cores allocated to the respective program by the allocating, and a third subsystem configured to, at least in part based on said assigning, establish connections between the array of processor cores and the plurality of program specific data buffers, wherein establishing connections comprises, for each core of at least a portion of the array of processor cores, establishing, via one or more multiplexers of the plurality of multiplexers, a data read connection to the respective core from one or more data buffers of the plurality of program specific data buffers specific to a program of the plurality of software programs corresponding to the respective instance assigned to the respective core by the second subsystem of the one or more selected instances of the program, such that the one or more buffers of each program of the portion of the plurality of software programs are multiplexed, via one or more different multiplexers of the plurality of multiplexers, to respective one or more cores to which the one or more selected application instances of the respective program were assigned by the second subsystem; wherein the allocating, the assigning, and the establishing are repeated over time to respond to demand expressions of the plurality of software programs for the array of processor cores. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A process, implemented on hardware logic and/or software logic, for managing execution of a set of software applications on an array of processing cores, the process comprising:
-
allocating, by the hardware logic and/or software logic, the array of processing cores among the set of software applications, wherein each user of a plurality of users submitted one or more software applications of the set of software applications for execution on the array of processing cores, and allocating comprises allocating, to each application of the set of software applications, a respective number of cores of the array of processing cores as one or more allocated cores of the respective application; prioritizing, by the hardware logic and/or software logic for each application of the set of software applications, a set of executable instances of the respective application into an execution priority order; selecting, by the hardware logic and/or software logic for each application of at least a subset of the set of software applications, one or more selected instances of the set of executable instances of the respective application for execution on the array of processing cores, wherein number of the one or more selected instances equals the number of cores allocated to the respective application by the allocating, the one or more selected instances are selected according to the execution priority order of the set of executable instances of the respective application, and for each application of at least a portion of the set of software applications, the number of cores allocated to the respective application is less than a number of possible instances of the respective application available for selecting; at least in part based on the selecting, assigning, by the hardware logic and/or software logic, each instance of a plurality of selected instances for execution on the array of processing cores, wherein, for each software application of the set of software applications, each instance of the one or more selected instances is assigned to a different core of the one or more allocated cores of the respective software application; and establishing connections, by the hardware logic and/or software logic, between the array of processing cores and a plurality of application specific data buffers, each buffer of the plurality of application specific data buffers being dedicated to a respective application of the set of software applications such that each application of at least a portion of the set of software applications has a respective one or more buffers of the plurality of program specific data buffers dedicated to the respective application, wherein establishing connections comprises, for each core of at least a portion of the array of processing cores, establishing a connection to the respective core from one or more data buffers of the plurality of application specific data buffers, wherein the one or more data buffers are each specific to an application of the set of software applications corresponding to an instance assigned to the respective core, and each of the plurality of application specific data buffers is accessible to the array of processing cores via multiplexed connections, such that the one or more buffers of each application of a portion of the set of software applications are multiplexed, via one or more different multiplexers of a plurality of multiplexers, to respective one or more cores to which the one or more selected application instances of the respective program were assigned; wherein the process is repeated periodically. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
Specification