Object-code compatible representation of very long instruction word programs
First Claim
1. A method of executing a program, said method comprising the steps of:
- constructing a program as a set of variable length tree-instructions, each given tree-instruction comprising a sequence of primitive instructions including at least one execution path which are subject to sequential semantics, wherein each execution path starting at a first primitive instruction of said sequence of primitive instructions for said given tree-instruction and terminating at an unconditional branch instruction to a target instruction outside of said tree-instruction;
storing said program in memory, wherein, for each given tree-instruction, said sequence of primitive instructions for said given tree-instruction are stored in consecutive memory locations;
accessing said memory to fetch a memory block;
decomposing portions of at least one tree-instruction stored in said memory block into a plurality of variable length intermediate instructions according to resources of a processor;
executing said variable-length intermediate instructions in said processor.
1 Assignment
0 Petitions
Accused Products
Abstract
Object-code compatibility is provided among VLIW processors with different organizations. The object-code can also be executed by sequential processors, thus providing compatibility with scalar and superscalar processors, A mechanism is provided which allows representing VLIW programs in an implementation-independent manner. This mechanism relies on instruction cache (I-cache) reload/access logic which incorporates implementation-dependent features into a VLIW program. In this way, programs are represented in main memory in an implementation-independent manner, the implementation-specific aspects are introduced as part of the instruction cache reload/fetch processes, and the simplicity in instruction dispatch logic that is characteristic of VLIW processors is preserved. The foregoing allows for object-code compatibility among VLIW processors with different organizations. Also provided is a mechanism and an apparatus for the interpretation of tree-instructions by a computer system based on a VLIW processor.
99 Citations
53 Claims
-
1. A method of executing a program, said method comprising the steps of:
-
constructing a program as a set of variable length tree-instructions, each given tree-instruction comprising a sequence of primitive instructions including at least one execution path which are subject to sequential semantics, wherein each execution path starting at a first primitive instruction of said sequence of primitive instructions for said given tree-instruction and terminating at an unconditional branch instruction to a target instruction outside of said tree-instruction; storing said program in memory, wherein, for each given tree-instruction, said sequence of primitive instructions for said given tree-instruction are stored in consecutive memory locations; accessing said memory to fetch a memory block; decomposing portions of at least one tree-instruction stored in said memory block into a plurality of variable length intermediate instructions according to resources of a processor; executing said variable-length intermediate instructions in said processor. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method of providing object-code compatibility among very long instruction word (VLIW) processors with different organizations, and compatibility with scalar and superscalar processors, by representing programs in an implementation-independent manner, said method comprising the steps of:
-
storing in computer memory a program as a set of variable length tree-instructions, each given tree-instruction comprising a sequence of primitive instructions including at least one execution path which are subject to sequential semantics, wherein each execution path starting at a first primitive instruction of said sequence of primitive instructions for said given tree-instruction and terminating at an unconditional branch instruction to a target instruction outside of said tree-instruction; and introducing implementation-specific aspects of a computer processor into the program stored in computer memory as part of the instruction cache (I-cache) access, said logic performing a first set of tasks at I-cache reload time and a second-set of tasks at I-cache fetch time. - View Dependent Claims (10, 11, 12, 13)
-
-
14. In a data processing system including a memory for storing a sequence of variable length tree-instructions, a method for executing said variable length tree-instructions comprising the steps of;
-
fetching from said memory a block containing at least one variable length tree-instruction, each given tree-instruction comprising a sequence of primitive instructions including at least one execution path which are subject to sequential semantics, wherein each execution path starting at a first primitive instruction of said sequence of primitive instructions for said given tree-instruction and terminating at an unconditional branch instruction to a target instruction outside of said tree-instruction; decomposing portions of said at least one variable length tree-instruction fetched from said memory into a plurality of intermediate instructions according to resources of a processing engine; storing said plurality of intermediate instructions in a high speed buffer; and executing said plurality of intermediate instructions stored in said high speed buffer in said processing engine. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)
-
-
31. A data processing system comprising:
-
a memory storing a sequence of variable length tree-instructions, each given tree-instruction comprising a sequence of primitive instructions including at least one execution path which are subject to sequential semantics, wherein each execution path starting at a first primitive instruction of said sequence of primitive instructions for said given tree-instruction and terminating at an unconditional branch instruction to a target instruction outside of said tree-instruction; instruction fetch means for fetching from said memory a block of data containing at least one variable length tree-instruction; a pruning unit, coupled to said instruction fetch means, decomposing portions of said at least one variable length tree-instruction fetched from said memory into a plurality of intermediate instructions according to resources of a processing engine; a high speed buffer, coupled to said pruning unit, storing said plurality of intermediate instructions; wherein said processing engine executes said plurality of intermediate instructions stored in said high speed buffer. - View Dependent Claims (32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52)
-
-
53. A method of executing a program stored in memory, said program characterized as being a set of variable length tree-instructions, each given tree-instruction comprising a sequence of primitive instructions including at least one execution path which are subject to sequential semantics, wherein each execution path starting at a first primitive instruction of said sequence of primitive instructions for said given tree-instruction and terminating at an unconditional branch instruction to a target instruction outside of said tree-instruction, the method comprising the steps of:
-
accessing said memory to fetch a memory block; decomposing portions of said at least one variable tree-instruction stored in said memory block into a plurality of variable length intermediate instructions according to resources of a processor; and executing said variable length intermediate instructions in said processor.
-
Specification