P
US8943486B2ActiveUtilityPatentIndex 57

Multiple instruction execution mode resource-constrained device

Assignee: DE JONG EDUARD KPriority: Nov 27, 2007Filed: Mar 7, 2011Granted: Jan 27, 2015
Est. expiryNov 27, 2027(~1.4 yrs left)· nominal 20-yr term from priority
Inventors:DE JONG EDUARD KBOS JURJEN N E
G06F 9/30189G06F 9/38G06F 9/3851G09F 9/30G09F 9/38G06F 9/3836G06F 9/3802
57
PatentIndex Score
2
Cited by
48
References
30
Claims

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.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. 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. 
 
     
     
       2. The computer-based method of  claim 1  wherein said determining is based at least in part on estimated frequency of use. 
     
     
       3. The computer-based method of  claim 1  wherein said determining further comprises analyzing one or more executions of a program comprising said program units. 
     
     
       4. The computer-based method  claim 1  wherein said plurality of addresses is a plurality of relative addresses. 
     
     
       5. The computer-based method of  claim 1  further comprising:
 providing said modified instruction stream to said resource-constrained device; 
 receiving on said resource-constrained device, one of said plurality of short program call instructions; 
 decoding, on said resource constrained device, said dynamic portion of said one of said plurality of short program call instructions; 
 obtaining, on said resource-constrained device, an address from said program unit reference table based at least in part on said dynamic portion; and 
 jumping, on said resource-constrained device, to said address for continuing execution. 
 
     
     
       6. The computer-based method of  claim 1 , wherein:
 the content of the dynamic portion of the short program unit call instruction is decoded during execution and is used to reference starts of dynamic instructions within the instruction stream including a first dynamic instruction and a second dynamic instruction, and an address is obtained from said program unit reference table to jump to said called program unit of said first plurality of program units for execution of said called program unit, including one of the first or second dynamic instructions, based at least in part on the dynamic portion. 
 
     
     
       7. The computer-based method of  claim 1 , wherein:
 said modified instruction stream includes a plurality of program unit reference tables wherein each of said plurality of program unit reference tables includes a corresponding plurality of addresses of a corresponding plurality of program units in said modified instruction stream, and 
 wherein each 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 of said each program unit reference table. 
 
     
     
       8. The computer-based method of  claim 1 , wherein:
 said modified instruction stream includes four program unit reference tables wherein each of said four program unit reference tables includes a corresponding plurality of addresses of a corresponding plurality of program units in said modified instruction stream, and 
 wherein each of said four program unit reference tables is collocated in said modified instruction stream adjacent the corresponding plurality of program units referenced by the corresponding plurality of addresses of said each program unit reference table. 
 
     
     
       9. The computer-based method of  claim 1 , wherein:
 said program unit reference table includes sixteen addresses of program units in said modified instruction stream, and 
 wherein said program unit reference table is collocated in said modified instruction stream adjacent sixteen program units referenced by said sixteen addresses; and 
 wherein said dynamic portion of said short program unit call instructions identifies a particular one of said sixteen addresses in said program unit reference table. 
 
     
     
       10. 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. 
 
     
     
       11. The computer-based method of  claim 10  wherein said determining is based at least in part on estimated frequency of use. 
     
     
       12. The computer-based method of  claim 10  wherein said determining further comprises analyzing one or more executions of a program comprising said program units. 
     
     
       13. The computer-based method  claim 10  wherein said address is an absolute address. 
     
     
       14. The computer-based method of  claim 10  further comprising:
 providing said modified instruction stream to said resource-constrained device; 
 receiving on said resource-constrained device, a particular one of said plurality of short program call instructions comprising a particular opcode and zero or more operands, said particular opcode comprising a particular dynamic portion and a particular static portion; 
 decoding, on said resource constrained device, said particular dynamic portion of said one of said plurality of short program call instructions; 
 obtaining, on said resource-constrained device, a particular address from said program unit reference table based at least in part on said particular dynamic portion; and 
 jumping, on said resource-constrained device, to said particular address for continuing execution. 
 
     
     
       15. The computer-based method of  claim 10 , wherein:
 the content of the dynamic portion of the short program unit call instruction is decoded during execution and is used to reference starts of dynamic instructions within the instruction stream including a first dynamic instruction and a second dynamic instruction, and an address is obtained from said program unit reference table, to jump to said called program unit of the first plurality of program units for execution of said called program unit, including one of the first or second dynamic instructions, based at least in part on the dynamic portion. 
 
     
     
       16. The computer-based method of  claim 10 , wherein:
 said modified instruction stream includes a plurality of program unit reference tables wherein each of said plurality of program unit reference tables includes a corresponding plurality of addresses of a corresponding plurality of program units in said modified instruction stream, and 
 wherein each of said plurality of program unit reference tables is collocated in said modified instruction stream adjacent the corresponding plurality of program units referenced by the corresponding plurality of addresses included in said each program unit reference table. 
 
     
     
       17. The computer-based method of  claim 10 , wherein:
 said modified instruction stream includes four program unit reference tables wherein each of said four program unit reference tables includes a corresponding plurality of addresses of a corresponding plurality of program units in said modified instruction stream, and 
 wherein each of said four program unit reference tables is collocated in said modified instruction stream adjacent the corresponding plurality of program units referenced by the corresponding plurality of addresses included in said each program unit reference table. 
 
     
     
       18. The computer-based method of  claim 10 , wherein:
 said program unit reference table includes sixteen addresses of program units in said modified instruction stream, and 
 wherein the program unit reference table is collocated in said modified instruction stream adjacent sixteen program units referenced by said sixteen addresses; and 
 wherein said dynamic portion of said opcode identifies a particular one of said sixteen addresses in said program unit reference table. 
 
     
     
       19. 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. 
 
     
     
       20. The non-transitory computer-readable storage medium of  claim 19  wherein said determining is based at least in part on estimated frequency of use. 
     
     
       21. The non-transitory computer-readable storage medium of  claim 19  wherein said determining further comprises analyzing one or more executions of a program comprising said program units. 
     
     
       22. The non-transitory computer-readable storage medium of  claim 19  wherein said address is a relative address. 
     
     
       23. The non-transitory computer-readable storage medium of  claim 19  including further instructions stored thereon which, when read and executed by one or more processors, cause the one or more processors to perform steps further comprising:
 providing said modified instruction stream to said resource-constrained device; 
 receiving on said resource-constrained device, a particular one of said plurality of short program call instructions comprising a particular opcode and zero or more operands, said particular opcode comprising a particular dynamic portion and a particular static portion; 
 decoding, on said resource constrained device, said particular dynamic portion of said one of said plurality of short program call instructions; 
 obtaining, on said resource-constrained device, a particular address from said program unit reference table based at least in part on said particular dynamic portion; and 
 jumping, on said resource-constrained device, to said particular address for continuing execution. 
 
     
     
       24. The non-transitory computer-readable storage medium of  claim 19 , wherein:
 the content of the dynamic portion of the short program unit call instruction is decoded during execution and is used to reference starts of dynamic instructions within the instruction stream including a first dynamic instruction and a second dynamic instruction, and an address is obtained from said program unit reference table to jump to said called program unit of the first plurality of program units for execution of said called program unit, including one of the first or second dynamic instructions, based at least in part on the dynamic portion. 
 
     
     
       25. The non-transitory computer-readable storage medium of  claim 19 , wherein:
 said modified instruction stream includes a plurality of program unit reference tables wherein each of said plurality of program unit reference tables includes a corresponding plurality of addresses of a corresponding plurality of program units in said modified instruction stream; and 
 wherein each of said plurality of program unit reference tables is collocated in said modified instruction stream adjacent the corresponding plurality of program units referenced by the corresponding plurality of addresses included in said each program unit reference table. 
 
     
     
       26. The non-transitory computer-readable storage medium of  claim 19 , wherein:
 said modified instruction stream includes four program unit reference tables wherein each of said four program unit reference tables includes a corresponding plurality of addresses of a corresponding plurality of program units in said modified instruction stream; and 
 wherein each of said four program unit reference tables is collocated in said modified instruction stream adjacent the corresponding plurality of program units referenced by the corresponding plurality of addresses included in said each program unit reference table. 
 
     
     
       27. The non-transitory computer-readable storage medium of  claim 19 , wherein:
 said program unit reference table includes sixteen addresses of program units in said modified instruction stream; and 
 wherein the program unit reference table is collocated in said modified instruction stream adjacent sixteen program units referenced by said sixteen addresses; and 
 wherein said dynamic portion of said opcode includes an identifier which identifies a particular one of said sixteen addresses in said program unit reference table. 
 
     
     
       28. 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. 
 
     
     
       29. The computer-based method of  claim 28 , wherein said determining further comprises analyzing one or more executions of a program comprising said program units. 
     
     
       30. The computer-based method of  claim 28 , wherein said addresses are relative addresses.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.