Prioritizing instances of programs for execution based on input data availability
First Claim
1. A method for periodically arranging a set of N executables of a given software program in an execution priority order, where N is a positive integer, the method comprising:
- buffering input data at an array of executable specific input port buffers, with said array including up to M buffers for each of the N executables, where M is a positive integer, and wherein a buffer within said array buffers such input data that is directed to the executable associated with the buffer;
calculating numbers of non-empty buffers associated with each of the executables;
ranking the executables in their descending execution priority order at least in part according to their descending numbers of non-empty buffers through populating a binary matrix of at least M rows by N columns, wherein there is a column associated with each of the N executables, and wherein there is a row corresponding to each of the M possible positive numbers of non-empty buffers per an executable, such that a bit at a given column and a chosen row of the matrix indicates whether the executable associated with the given column has non-empty buffers corresponding to the chosen row; and
executing the executables on one or more processing cores of a processor according to the ranking.
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.
-
Citations
11 Claims
-
1. A method for periodically arranging a set of N executables of a given software program in an execution priority order, where N is a positive integer, the method comprising:
-
buffering input data at an array of executable specific input port buffers, with said array including up to M buffers for each of the N executables, where M is a positive integer, and wherein a buffer within said array buffers such input data that is directed to the executable associated with the buffer; calculating numbers of non-empty buffers associated with each of the executables; ranking the executables in their descending execution priority order at least in part according to their descending numbers of non-empty buffers through populating a binary matrix of at least M rows by N columns, wherein there is a column associated with each of the N executables, and wherein there is a row corresponding to each of the M possible positive numbers of non-empty buffers per an executable, such that a bit at a given column and a chosen row of the matrix indicates whether the executable associated with the given column has non-empty buffers corresponding to the chosen row; and executing the executables on one or more processing cores of a processor according to the ranking. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system for prioritizing pieces of software programs, said pieces referred to as a set of N executables, where N is a positive integer, for execution, the system comprising:
-
a processor; a subsystem for buffering input data at an array of executable specific input port buffers, wherein there is a preset number, M, a positive integer, of the executable specific input port buffers per a given one of the executables, and wherein a given buffer within said array buffers such input data that is directed to the executable associated with the given buffer; a subsystem for determining, from said array of buffers, respective numbers of non-empty buffers associated with each of the executables; a subsystem for ranking the executables in their descending execution priority order at least in part according to their determined descending numbers of non-empty buffers through populating a binary matrix of at least M rows by N columns, wherein there is a column associated with each of the N executables, and wherein there is a row corresponding to each of the M possible positive numbers of non-empty buffers per an executable, such that a bit at a given column and a chosen row of the matrix indicates whether the executable associated with the given column has non-empty buffers corresponding to the chosen row; and one or more processing cores of the processor on which the executables are executed according to the ranked execution priority order. - View Dependent Claims (9, 10, 11)
-
Specification