Patent ID: 8544006

Claim:
A method for executing a single threaded program within a multi-core processor comprising: dividing the single threaded program into a plurality of discretely executable components, the plurality of discretely executable components comprising a main component and a plurality of discretely executable sub-components, the main component corresponding to a parent thread and the plurality of discretely executable sub-components corresponding to respective speculative sub-threads of the single threaded program, the dividing further comprising dividing the single threaded program by an operating system at function boundaries; generating a graph of relationships between the plurality of discretely executable components, the graph identifying the main component and the 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 managing conflicts between each of the plurality of discretely executable components via the graph, the conflicts comprising at least one of register conflicts and memory conflicts.