Optimizing execution of single-threaded programs on a multiprocessor managed by compilation
First Claim
Patent Images
1. A method for optimizing execution of a single threaded program on a multi-core processor comprising:
- dividing the single threaded program into a plurality of discretely executable components while compiling the single threaded program;
identifying at least some of the plurality of discretely executable components for execution by an idle core within the multi-core processor; and
enabling execution of the at least one of the plurality of discretely executable components on the idle core;
generating a graph of relationships between the plurality of discretely executable components, the graph comprising a main component and a plurality of discretely executable sub-components;
assigning the main component to execute on a first core of the multi-core processor; and
,assigning each of the plurality of discretely executable sub-components to execute on at least one idle core of the multi-core processor; and
,dynamically recording addresses accessed by the main component and the plurality of discretely executable sub-components as well as changes of values to the addresses in the order in which the changes occur on a list; and
wherein the graph groups a plurality of dependencies together within a single sub-thread so as to make execution of the sub-thread more favorable to speculative execution threads,wherein the addresses are memory addresses included in the list of addresses that were read from or written to by the main component and the plurality of discretely executable sub-components.
1 Assignment
0 Petitions
Accused Products
Abstract
A method for optimizing execution of a single threaded program on a multi-core processor. The method includes dividing the single threaded program into a plurality of discretely executable components while compiling the single threaded program; identifying at least some of the plurality of discretely executable components for execution by an idle core within the multi-core processor; and enabling execution of the at least one of the plurality of discretely executable components on the idle core.
20 Citations
12 Claims
-
1. A method for optimizing execution of a single threaded program on a multi-core processor comprising:
-
dividing the single threaded program into a plurality of discretely executable components while compiling the single threaded program; identifying at least some of the plurality of discretely executable components for execution by an idle core within the multi-core processor; and enabling execution of the at least one of the plurality of discretely executable components on the idle core; generating a graph of relationships between the plurality of discretely executable components, the graph comprising a main component and a plurality of discretely executable sub-components; assigning the main component to execute on a first core of the multi-core processor; and
,assigning each of the plurality of discretely executable sub-components to execute on at least one idle core of the multi-core processor; and
,dynamically recording addresses accessed by the main component and the plurality of discretely executable sub-components as well as changes of values to the addresses in the order in which the changes occur on a list; and wherein the graph groups a plurality of dependencies together within a single sub-thread so as to make execution of the sub-thread more favorable to speculative execution threads, wherein the addresses are memory addresses included in the list of addresses that were read from or written to by the main component and the plurality of discretely executable sub-components. - View Dependent Claims (2, 3, 4)
-
-
5. An apparatus for optimizing execution of a single threaded program on a multi-core processor comprising:
-
means for dividing the single threaded program into a plurality of discretely executable components while compiling the single threaded program; means for identifying at least some of the plurality of discretely executable components for execution by an idle core within the multi-core processor; and means for enabling execution of the at least one of the plurality of discretely executable components on the idle core; means for generating a graph of relationships between the plurality of discretely executable components, the graph comprising a main component and a plurality of discretely executable sub-components; means for assigning the main component to execute on a first core of the multi-core processor; and
,means for assigning each of the plurality of discretely executable sub-components to execute on at least one idle core of the multi-core processor; and
,means for dynamically recording addresses accessed by the main component and the plurality of discretely executable sub-components as well as changes of values to the addresses in the order in which the changes occur on a list; and
whereinthe graph groups a plurality of dependencies together within a single sub-thread so as to make execution of the sub-thread more favorable to speculative execution threads, wherein the addresses are memory addresses included in the list of addresses that were read from or written to by the main component and the plurality of discretely executable sub-components. - View Dependent Claims (6, 7, 8)
-
-
9. A computer program product for determining policy follow-up action, the computer program product comprising:
-
a non-transitory computer usable medium having computer usable program code embodied therewith, the computer usable program code comprising instructions executable by a processor for; dividing the single threaded program into a plurality of discretely executable components while compiling the single threaded program; identifying at least some of the plurality of discretely executable components for execution by an idle core within the multi-core processor; and enabling execution of the at least one of the plurality of discretely executable components on the idle core; generating a graph of relationships between the plurality of discretely executable components, the graph comprising a main component and a plurality of discretely executable sub-components; assigning the main component to execute on a first core of the multi-core processor; and
,assigning each of the plurality of discretely executable sub-components to execute on at least one idle core of the multi-core processor; and
,dynamically recording addresses accessed by the main component and the plurality of discretely executable sub-components as well as changes of values to the addresses in the order in which the changes occur on a list; and wherein the graph groups a plurality of dependencies together within a single sub-thread so as to make execution of the sub-thread more favorable to speculative execution threads, wherein the addresses are memory addresses included in the list of addresses that were read from or written to by the main component and the plurality of discretely executable sub-components. - View Dependent Claims (10, 11, 12)
-
Specification