Methods and apparatus for executing instructions in parallel
First Claim
1. A method for executing instructions in parallel, the method comprising the steps of:
- identifying a set of traces within a segment of code, each trace representing a sequence of instructions within the segment of code that are execution structure dependent;
identifying a dependency order between traces in the identified set of traces, the dependency order indicating traces that are dependent upon operation of other traces in the segment of code; and
executing traces within the set of traces in parallel and in an execution order that is based on the identified dependency order, such that at least two traces are executed in parallel and such that if the dependency order indicates that a second trace is dependent upon a first trace, the first trace is executed prior to the second trace.
2 Assignments
0 Petitions
Accused Products
Abstract
A system, method and apparatus for executing instructions in parallel identify a set of traces within a segment of code, such as Java bytecode. Each trace represents a sequence of instructions within the segment of code that are execution structure dependent, such as stack dependent. The system, method and apparatus identify a dependency order between traces in the identified set of traces. The dependency order indicates traces that are dependent upon operation of other traces in the segment of code. The system, method and apparatus can then execute traces within the set of traces in parallel and in an execution order that is based on the identified dependency order, such that at least two traces are executed in parallel and such that if the dependency order indicates that a second trace is dependent upon a first trace, the first trace is executed prior to the second trace. This system provides bytecode level parallelism for Java and other applications that utilize execution structure-based architectures and identifies and efficiently eliminates Java bytecode stack dependency.
89 Citations
28 Claims
-
1. A method for executing instructions in parallel, the method comprising the steps of:
-
identifying a set of traces within a segment of code, each trace representing a sequence of instructions within the segment of code that are execution structure dependent; identifying a dependency order between traces in the identified set of traces, the dependency order indicating traces that are dependent upon operation of other traces in the segment of code; and executing traces within the set of traces in parallel and in an execution order that is based on the identified dependency order, such that at least two traces are executed in parallel and such that if the dependency order indicates that a second trace is dependent upon a first trace, the first trace is executed prior to the second trace. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A computer program product for identifying Java instructions that can execute in parallel, the computer program product having a computer-readable medium including computer program logic encoded thereon that, when performed on a computer system including a display, directs the computer system to perform the method of:
-
identifying a set of traces within a segment of Java code, the Java code stored within the computer system, each trace representing a sequence of Java bytecode instructions within the segment of code that are stack dependent; identifying a dependency order between traces in the identified set of traces, the dependency order indicating traces that are data dependent upon operation of other traces in the segment of code, the dependency order displayed on the display of the computer system, and executing traces within the set of traces in parallel and in an execution order that is based on the identified dependency order, such that at least two traces are executed in parallel and such that if the dependency order indicates that a second trace is dependent upon a first trace the first trace is executed prior to the second trace. - View Dependent Claims (22, 23)
-
-
24. A trace processor capable of executing instructions in parallel, the trace processor comprising:
-
a trace detector that can receive as input a segment of code and can identify a set of traces within the segment of code, each trace in the set of traces representing a sequence of instructions within the segment of code that are execution structure dependent; a dependency detector coupled to the trace detector to receive the identified set of traces, the dependency detector capable of identifying a dependency order between traces in the identified set of traces, the dependency order indicating traces that are dependent upon operation of other traces in the segment of code; a trace scheduler coupled to the dependency detector and the trace detector; and a trace executer coupled to the trace scheduler, the trace executer including a plurality of functional units, each including a respective execution structure; the trace scheduler receiving the set of traces and the dependency order and causing the trace executer to execute traces within the set of traces in parallel using respective execution structures of respective functional unites, the execution taking place in an execution order that is based on the identified dependency order, such that at least two traces are executed in parallel and such that if the dependency order indicates that a second trace is dependent upon a first trace, the first trace is executed prior to the second trace. - View Dependent Claims (25, 26, 27, 28)
-
Specification