Concurrent atomic execution
AssigneeAzul Systems, Inc.
InventorsGil Tene, Ivan Posva, Michael A. Wolf, Daniel Dwight Grove, Tom Kraljevic
Life of this patent
Estimating the term…
Abstract
Executing a set one or more instructions is disclosed. A set of one or more register states is saved in a software data structure. The set of instructions is speculatively executed. At least one store made to a memory location during the speculative execution is not committed until the speculative execution is successfully completed. If an abort indication is received, the state of one or more registers restored.
Claims32
A method of executing a set one or more instructions, including:
- determining, based on at least in part on a synchronization state of an object associated with the set of instructions, whether the set of instructions should be executed speculatively, wherein prior to determining whether the set of instructions should be executed speculatively, determining that speculation is not active on the set of instructions and determining whether the object should be thin locked;
- saving in a software data structure, one or more states of one or more saved state source registers, wherein the software data structure is not stored in a register file;
- speculatively executing the set of instructions, wherein at least one store made to a memory location during the speculative execution is not committed until the speculative execution is successfully completed and speculatively executing the set of instructions includes modifying one or more of the one or more saved state source registers, wherein a previous state of the one or more saved state source registers is saved in the software data structure;
- and
- restoring one or more states of the one or more saved state source registers to one or more of the one or more states saved in the software data structure if an abort indication is received, wherein the abort indication triggering copying of the one or more of the one or more states saved in the software data structure to one or more of the one or more saved state source registers is received before the set of instructions is entirely speculatively executed;
- wherein saving the set of one or more saved state source register states in the software data structure, speculatively executing the set of instructions, and restoring the state of one or more saved state source registers are performed in the event that the indication indicates that the set of instructions should be executed speculatively.
A system for executing a set one or more instructions, including:
- a processor configured to:
- determine, based on at least in part on a synchronization state of an object associated with the set of instructions, whether the set of instructions should be executed speculatively, wherein prior to determining whether the set of instructions should be executed speculatively, determine that speculation is not active on the set of instructions and determine whether the object should be thin locked;
- save in a software data structure, one or more states of one or more saved state source registers, wherein the software data structure is not stored in a register file;
- speculatively execute the set of instructions, wherein at least one store made to a memory location during the speculative execution is not committed until the speculative execution is successfully completed and speculatively executing the set of instructions includes modifying one or more of the one or more saved state source registers, wherein a previous state of the one or more saved state source registers is saved in the software data structure;
- and
- restore one or more states of the one or more saved state source registers to one or more of the one or more states saved in the software data structure if an abort indication is received, wherein the abort indication triggering copying of the one or more of the one or more states saved in the software data structure to one or more of the one or more saved state source registers is received before the set of instructions is entirely speculatively executed;
- wherein saving the set of one or more saved state source register states in the software data structure, speculatively executing the set of instructions, and restoring the state of one or more saved state source registers are performed in the event that the indication indicates that the set of instructions should be executed speculatively;
- and
- a memory coupled with the processor, wherein the memory provides the processor with instructions.
A computer program product for executing a set one or more instructions, the computer program product being embodied in a non-transitory computer readable medium and comprising computer instructions for:
- determining, based on at least in part on a synchronization state of an object associated with the set of instructions, whether the set of instructions should be executed speculatively, wherein prior to determining whether the set of instructions should be executed speculatively, determining that speculation is not active on the set of instructions and determining whether the object should be thin locked;
- saving in a software data structure, one or more states of one or more saved state source registers, wherein the software data structure is not stored in a register file;
- speculatively executing the set of instructions, wherein at least one store made to a memory location during the speculative execution is not committed until the speculative execution is successfully completed and speculatively executing the set of instructions includes modifying one or more of the one or more saved state source registers, wherein a previous state of the one or more saved state source registers is saved in the software data structure;
- and
- restoring one or more states of the one or more saved state source registers to one or more of the one or more states saved in the software data structure if an abort indication is received, wherein the abort indication triggering copying of the one or more of the one or more states saved in the software data structure to one or more of the one or more saved state source registers is received before the set of instructions is entirely speculatively executed;
- wherein saving the set of one or more saved state source register states in the software data structure, speculatively executing the set of instructions, and restoring the state of one or more saved state source registers are performed in the event that the indication indicates that the set of instructions should be executed speculatively.
Dependencies are inferred from the claim text.