Multiple instruction execution mode resource-constrained device
AssigneeOracle America, Inc.
InventorsEduard K. de Jong, Jurjen N. E. Bos
Life of this patent
Estimating the term…
Abstract
A resource-constrained device comprises a processor configured to execute multiple instruction streams comprising multiple instructions having an opcode and zero or more operands. Each of the multiple instruction streams is associated with one of multiple instruction execution modes having an instruction set comprising multiple instruction implementations. At least one of the multiple instruction implementations is configured to change the processor from a first instruction execution mode to a second instruction execution mode. The processor comprises an instruction fetcher configured to fetch an instruction from one of the multiple instruction streams based at least in part upon a current instruction execution mode.
Claims30
A computer-based method comprising:
- receiving an instruction stream comprising a plurality of program units;
- determining a frequency of use of program units in said instruction stream;
- ordering said program units within said instruction stream by said frequency of use;
- recoding said instruction stream to generate a modified instruction stream for execution on a resource-constrained device, wherein the modified instruction stream comprises
- a plurality of short program unit call instructions,
- a program unit reference table wherein said program unit reference table includes a plurality of addresses of a first plurality of program units in said modified instruction stream, and
- wherein the program unit reference table is collocated in said modified instruction stream adjacent said first plurality of program units referenced by said plurality of addresses and between said first plurality of program units and a second plurality of program units in the modified instruction stream;
- wherein each of said short program unit call instructions comprises an opcode and zero or more operands, said opcode comprising,
- a static portion which determines an instruction implementation, and
- a dynamic portion wherein content of the dynamic portion of the short program unit call instruction is used to obtain one of said plurality of addresses in said program unit reference table in order to jump to a called program unit of said first plurality of program units for execution of said called program unit;
- and
- storing said modified instruction stream on a storage medium.
A computer-based method for transforming an instruction stream to a modified instruction stream for execution on a resource-constrained device comprising:
- receiving an instruction stream comprising a plurality of program units;
- determining a frequency of use of program units in said instruction stream;
- ordering said program units within said instruction stream by said frequency of use;
- recoding said instruction stream to generate a modified instruction stream for execution on a resource-constrained device, wherein the modified instruction stream comprises
- a plurality of short program unit call instructions,
- a program unit reference table wherein said program unit reference table includes a plurality of addresses of a first plurality of program units in said modified instruction stream, and
- wherein the program unit reference table is collocated in said modified instruction stream adjacent said first plurality of program units referenced by said plurality of addresses and between said first plurality of program units and a second plurality of program units in said modified instruction stream;
- wherein each of said short program unit call instructions comprises an opcode and zero or more operands, said opcode comprising
- a static portion which determines an instruction implementation, and
- a dynamic portion for use in accessing said addresses in said program unit reference table, wherein content of the dynamic portion of the short program unit call instruction is decoded during execution and an address is obtained from said program unit reference table, to jump to a called program unit of said first plurality of program units for execution of said called program unit, based at least in part on the dynamic portion;
- and
- storing said modified instruction stream on a storage medium for execution by said resource-constrained device.
A non-transitory computer-readable storage medium, including instructions stored thereon for transforming an instruction stream to a modified instruction stream for execution on a resource-constrained device, said instructions, when read and executed by one or more processors, cause the one or more processors to perform steps comprising:
- receiving an instruction stream comprising a plurality of program units;
- determining a frequency of use of program units in said instruction stream;
- ordering said program units within said instruction stream by said frequency of use;
- recoding said instruction stream to generate a modified instruction stream for execution on a resource-constrained device, wherein the modified instruction stream comprises
- a plurality of short program unit call instructions,
- a program unit reference table wherein said program unit reference table includes a plurality of addresses of a first plurality of program units in said modified instruction stream, and
- wherein the program unit reference table is collocated in said modified instruction stream adjacent said first plurality of program units referenced by said plurality of addresses and between said first plurality of program units and a second plurality of program units in said modified instruction stream;
- wherein each of said short program unit call instructions comprises an opcode and zero or more operands, said opcode comprising
- a static portion which determines an instruction implementation, and
- a dynamic portion for use in accessing said addresses in said program unit reference table, wherein content of the dynamic portion of the short program unit call instruction is decoded during execution and an address is obtained from said program unit reference table, to jump to a called program unit of said first plurality of program units for execution of said called program unit, based at least in part on the dynamic portion;
- and
- storing said modified instruction stream on a storage medium for execution by said resource-constrained device.
A computer-based method comprising:
- receiving an instruction stream comprising a plurality of program units;
- determining a frequency of use of program units in said instruction stream;
- ordering said program units within said instruction stream by said frequency of use;
- recoding said instruction stream to generate a modified instruction stream for execution on a resource-constrained device, wherein the modified instruction stream comprises
- a plurality of short program unit call instructions,
- a plurality of program unit reference tables wherein each said program unit reference table includes a corresponding plurality of addresses of a corresponding plurality of program units in said modified instruction stream, and
- wherein each said program unit reference table is collocated in said modified instruction stream adjacent the corresponding plurality of program units referenced by said corresponding plurality of addresses in said each program unit reference table and between said corresponding plurality of program units and another plurality of program units in the modified instruction stream;
- wherein each of said short program unit call instructions comprises an opcode and zero or more operands, said opcode comprising,
- a static portion which determines an instruction implementation, and
- a dynamic portion wherein content of the dynamic portion of the short program unit call instruction is used to obtain one of said corresponding plurality of addresses in order to jump to a called program unit of said corresponding plurality of program units for execution of said called program unit;
- and
- storing said modified instruction stream on a storage medium.
Dependencies are inferred from the claim text.