Software compiler generated threaded environment
First Claim
1. A computer-implemented method for creating a threaded package of computer executable instructions from software compiler generated code, comprising:
- allocating, through a computer processor, the computer executable instructions into a plurality of stacks;
differentiating between different types of computer executable instructions for each computer executable instruction allocated to each stack of the plurality of stacks, wherein the differentiating comprises interpreting each computer executable instruction at a software compiler to differentiate between at least two different types of computer executable instructions, the at least two different types of computer executable instructions comprising a memory operation and a computation operation, wherein the memory operation comprises a transfer of information from a remote memory to a localized cache of a target processor, and wherein the computation operation is a computer executable instruction involving computation on information within the localized cache of the target processor;
creating, by the software compiler, switch points for each stack of the plurality of stacks based upon the differentiating;
inserting, by the software compiler, the created switch points directly after any computer executable instructions that were determined to be associated with a memory access by the differentiating within each stack of the plurality of stacks; and
executing the plurality of stacks of computer executable instructions after inserting the switch points, wherein the execution comprises;
based on execution of a first computer executable instruction in a first stack of the plurality of stacks, initiating a transfer of information from the remote memory to the localized cache or register of the target processor;
switching from the first stack to a second stack of the plurality of stacks based on a first switch point that is located directly after the first computer executable instruction in the first stack;
initiating execution of a second computer executable instruction in the second stack while processing the transfer of information from the remote memory to the localized cache associated with the first computer executable instruction in the first stack;
switching from the second stack to the first stack based on a second switch point that is located in the second stack after the second computer executable instruction; and
after switching from the second stack to the first stack, performing a third computer executable instruction in the first stack comprising the computation operation using the information in the localized cache that was transferred by the first computer executable instruction.
1 Assignment
0 Petitions
Accused Products
Abstract
A computer-implemented method for creating a threaded package of computer executable instructions from software compiler generated code includes allocating, through a computer processor, the computer executable instructions into a plurality of stacks, differentiating between different types of computer executable instructions for each computer executable instruction allocated to each stack of the plurality of stacks, creating switch points for each stack of the plurality of stacks based upon the differentiating, and inserting the switch points within each stack of the plurality of stacks.
12 Citations
13 Claims
-
1. A computer-implemented method for creating a threaded package of computer executable instructions from software compiler generated code, comprising:
-
allocating, through a computer processor, the computer executable instructions into a plurality of stacks; differentiating between different types of computer executable instructions for each computer executable instruction allocated to each stack of the plurality of stacks, wherein the differentiating comprises interpreting each computer executable instruction at a software compiler to differentiate between at least two different types of computer executable instructions, the at least two different types of computer executable instructions comprising a memory operation and a computation operation, wherein the memory operation comprises a transfer of information from a remote memory to a localized cache of a target processor, and wherein the computation operation is a computer executable instruction involving computation on information within the localized cache of the target processor; creating, by the software compiler, switch points for each stack of the plurality of stacks based upon the differentiating; inserting, by the software compiler, the created switch points directly after any computer executable instructions that were determined to be associated with a memory access by the differentiating within each stack of the plurality of stacks; and executing the plurality of stacks of computer executable instructions after inserting the switch points, wherein the execution comprises; based on execution of a first computer executable instruction in a first stack of the plurality of stacks, initiating a transfer of information from the remote memory to the localized cache or register of the target processor; switching from the first stack to a second stack of the plurality of stacks based on a first switch point that is located directly after the first computer executable instruction in the first stack; initiating execution of a second computer executable instruction in the second stack while processing the transfer of information from the remote memory to the localized cache associated with the first computer executable instruction in the first stack; switching from the second stack to the first stack based on a second switch point that is located in the second stack after the second computer executable instruction; and after switching from the second stack to the first stack, performing a third computer executable instruction in the first stack comprising the computation operation using the information in the localized cache that was transferred by the first computer executable instruction. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A computer program product comprising a non-transitory computer readable storage medium having computer executable instructions stored thereon, that, when executed by a computer processor, direct the computer processor to perform a method for creating a threaded package of computer executable instructions from software compiler generated code, the method comprising:
-
allocating the computer executable instructions into a plurality of stacks; differentiating between different types of computer executable instructions for each computer executable instruction allocated to each stack of the plurality of stacks, wherein the differentiating comprises interpreting each computer executable instruction at a software compiler to differentiate between at least two different types of computer executable instructions, the at least two different types of computer executable instructions comprising a memory operation and a computation operation, wherein the memory operation comprises a transfer of information from a remote memory to a localized cache of a target processor, and wherein the computation operation is a computer executable instruction involving computation on information within the localized cache of the target processor; creating, by the software compiler, switch points for each stack of the plurality of stacks based upon the differentiating; inserting, by the software compiler, the created switch points directly after any computer executable instructions that were determined to be associated with a memory access by the differentiating within each stack of the plurality of stacks; and executing the plurality of stacks of computer executable instructions after inserting the switch points, wherein the execution comprises; based on execution of a first computer executable instruction in a first stack of the plurality of stacks, initiating a transfer of information from the remote memory to the localized cache or register of the target processor; switching from the first stack to a second stack of the plurality of stacks based on a first switch point that is located directly after the first computer executable instruction in the first stack; initiating execution of a second computer executable instruction in the second stack while processing the transfer of information from the remote memory to the localized cache associated with the first computer executable instruction in the first stack; switching from the second stack to the first stack based on a second switch point that is located in the second stack after the second computer executable instruction; and after switching from the second stack to the first stack, performing a third computer executable instruction in the first stack comprising the computation operation using the information in the localized cache that was transferred by the first computer executable instruction. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A software compiler system, comprising:
-
a memory configured to store computer executable instructions; and a computer processor operatively coupled to the memory, wherein the computer processor is configured to perform a method for creating a threaded package of computer executable instructions from software compiler generated code, the method comprising; allocating, through the computer processor, the computer executable instructions into a plurality of stacks; differentiating between different types of computer executable instructions for each computer executable instruction allocated to each stack of the plurality of stacks, wherein the differentiating comprises interpreting each computer executable instruction at a software compiler to differentiate between at least two different types of computer executable instructions, the at least two different types of computer executable instructions comprising a memory operation and a computation operation, wherein the memory operation comprises a transfer of information from a remote memory to a localized cache of a target processor, and wherein the computation operation is a computer executable instruction involving computation on information within the localized cache of the target processor; creating, by the software compiler, switch points for each stack of the plurality of stacks based upon the differentiating; inserting, by the software compiler, the created switch points directly after any computer executable instructions that were determined to be associated with a memory access by the differentiating within each stack of the plurality of stacks; and executing the plurality of stacks of computer executable instructions after inserting the switch points, wherein the execution comprises; based on execution of a first computer executable instruction in a first stack of the plurality of stacks, initiating a transfer of information from the remote memory to the localized cache or register of the target processor; switching from the first stack to a second stack of the plurality of stacks based on a first switch point that is located directly after the first computer executable instruction in the first stack; initiating execution of a second computer executable instruction in the second stack while processing the transfer of information from the remote memory to the localized cache associated with the first computer executable instruction in the first stack; switching from the second stack to the first stack based on a second switch point that is located in the second stack after the second computer executable instruction; and after switching from the second stack to the first stack, performing a third computer executable instruction in the first stack comprising the computation operation using the information in the localized cache that was transferred by the first computer executable instruction. - View Dependent Claims (12, 13)
-
Specification