×

Systems and methods for managing resource allocation and concurrent program execution on an array of processor cores

  • US 10,514,953 B2
  • Filed: 09/23/2016
  • Issued: 12/24/2019
  • Est. Priority Date: 07/15/2011
  • Status: Active Grant
First Claim
Patent Images

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.

View all claims
  • 1 Assignment
Timeline View
Assignment View
    ×
    ×