Claims
- 1. A method for compressing uncompressed object code instructions from an executable program for a computer, wherein the uncompressed object code instructions are compressed to reduce power consumption, the method comprising:
(a) decomposing the uncompressed object code instructions into at least four predetermined instruction classes; (b) excluding certain uncompressed object code instructions in order to derive a mathematical model to use for compressing predetermined uncompressed object code instructions; (c) compressing uncompressed object code instructions from the first predetermined instruction class, wherein the uncompressed object code instructions are compressed using the derived mathematical model, and building a decoding table for the compressed object code instructions in accordance with the derived mathematical model; (d) compressing uncompressed object code instructions from the second predetermined instruction class, wherein an address offset is added to each object code instruction following its compression; (e) compressing uncompressed object code instructions from the third predetermined instruction class, wherein each uncompressed object code instruction is assigned an index value into a first decompression look-up table; and (f) patching each address offset that was added to a compressed instruction.
- 2. The method for compressing uncompressed object code instructions as claimed in claim 1, the method further including:
(a) retrieving an uncompressed object code instruction for analysis from the executable object code instructions to be compressed; (b) determining if the extracted uncompressed object code instruction is a branching instruction, and based on that determination, assigning the extracted uncompressed object code instruction to the second predetermined instruction class; (c) determining if the extracted uncompressed object code instruction has an immediate field and is compressible, and based on that determination, assigning the extracted uncompressed object code instruction to the first predetermined instruction class; (d) determining if the extracted object code instruction does not have an immediate field, and based on that determination, assigning the extracted object code instruction to the third predetermined instruction class; (e) assigning the extracted uncompressed object code instruction to the fourth predetermined instruction class if the object code instruction is not assigned to the first, second or third predetermined instruction classes; and (f) determining if there are more uncompressed object code instructions to analyze, and based on that determination, repeating steps (a) through (e).
- 3. The method for compressing uncompressed object code instructions as claimed in claim 2, the method further including creating a decompression look-up table for extracted instructions assigned to the third predetermined instruction class, wherein the previously assigned index value into the first decompression look-up table is inserted into the compressed instruction.
- 4. The method for compressing uncompressed object code instructions as claimed in claim 3, the method further including appending a first predetermined bit sequence to the index value inserted into each compressed instruction from the third predetermined instruction class.
- 5. The method for compressing uncompressed object code instructions as claimed in claim 2, the method further including appending a second predetermined bit sequence to the uncompressed instruction from the fourth predetermined instruction class.
- 6. The method for compressing uncompressed object code instructions as claimed in claim 1, the method further including:
(a) extracting an object code instruction from the executable program; (b) determining if the extracted object code instruction is a non-branching instruction or does not have an immediate field, and based on that determination, saving the extracted object code instruction for mathematical modeling; and (c) repeating steps (a) through (b) if there are more object code instructions to analyze.
- 7. The method for compressing uncompressed object code instructions as claimed in claim 6, the method further including deriving a mathematical model for the compression of object code instructions based upon the saved object code instructions.
- 8. The method for compressing uncompressed object code instructions as claimed in claim 1, the method further including:
(a) extraction of a non-branching object code instruction with immediate field from the executable program; (b) compression of the non-branching object code instruction with immediate field using table-based mathematical encoding while maintaining track of branching instruction addresses; (c) repeating steps (a) through (b) if there are more object code instructions to compress; and (d) if no more non-branching object code instructions with immediate field remain to be compressed, then build a second decoding table for non-branching object code instructions according to the mathematical model.
- 9. The method for compressing uncompressed object code instructions as claimed in claim 8, the method further including:
(a) compressing branching object code instructions using branching instruction addresses obtained during the compression of the non-branching object code instructions with immediate fields; (b) recalculating branching instruction target addresses; and (c) patching branch instruction target address offsets to point to new branching instruction target addresses.
- 10. The method for compressing uncompressed object code instructions as claimed in claim 9, the method further including appending a third predetermined bit sequence to the index inserted into a compressed instruction from the first predetermined instruction class.
- 11. The method for compressing uncompressed object code instructions as claimed in claim 9, the method further including appending a fourth predetermined bit sequence to the index inserted into a compressed instruction from the second predetermined instruction class.
- 12. The method for compressing uncompressed object code instructions as claimed in claim 11, the method further including appending a second index to a compressed instruction from the second predetermined instruction class, wherein the second index indicates the number of bits used for the compressed object code instruction.
- 13. A computer system adapted to compressing uncompressed object code instructions from an executable program for a computer, wherein the uncompressed object code instructions are compressed to reduce power consumption, the computer system including:
a processor; a memory including software instructions adapted to enable the computer system to perform the steps of:
(a) decomposing the uncompressed object code instructions into at least four predetermined instruction classes; (b) excluding certain uncompressed object code instructions in order to derive a mathematical model to use for compressing predetermined uncompressed object code instructions; (c) compressing uncompressed object code instructions from the first predetermined instruction class, wherein the uncompressed object code instructions are compressed using the derived mathematical model, and building a decoding table for the compressed object code instructions in accordance with the derived mathematical model; (d) compressing uncompressed object code instructions from the second predetermined instruction class, wherein an address offset is added to each object code instruction following its compression; (e) compressing uncompressed object code instructions from the third predetermined instruction class, wherein each uncompressed object code instruction is assigned an index value into a first decompression look-up table; and (f) patching each address offset that was added to a compressed instruction.
- 14. A computer system adapted to compressing uncompressed object code instructions as claimed in claim 13, wherein the software instructions are further adapted to enable the computer system to download the compressed object code instructions to a memory resident on an embedded computer system.
- 15. A computer system adapted to compressing uncompressed object code instructions as claimed in claim 14, wherein the software instructions are further adapted to enable the computer system to save the compressed object code instructions to a memory resident on an embedded computer system.
- 16. A computer system adapted to compressing uncompressed object code instructions as claimed in claim 13, wherein the software instructions are further adapted to enable the computer system to dynamically debug the downloaded compressed object code instructions resident on an embedded computer system.
- 17. A computer program product for enabling a computer system to compress uncompressed object code instructions from an executable program for an embedded computer, wherein the uncompressed object code instructions are compressed to reduce power consumption, the computer program product including:
software instructions for enabling the computer system to perform predetermined operations, and a computer readable medium bearing the software instructions; the predetermined operations including:
(a) decomposing the uncompressed object code instructions into at least four predetermined instruction classes; (b) excluding certain uncompressed object code instructions in order to derive a mathematical model to use for compressing predetermined uncompressed object code instructions; (c) compressing uncompressed object code instructions from the first predetermined instruction class, wherein the uncompressed object code instructions are compressed using the derived mathematical model, and building a decoding table for the compressed object code instructions in accordance with the derived mathematical model; (d) compressing uncompressed object code instructions from the second predetermined instruction class, wherein an address offset is added to each object code instruction following its compression; (e) compressing uncompressed object code instructions from the third predetermined instruction class, wherein each uncompressed object code instruction is assigned an index value into a first decompression look-up table; and (f) patching each address offset that was added to a compressed instruction.
- 18. A computer for executing compressed object code instructions, wherein the object code instructions have been compressed to reduce power consumption, the computer including:
a central processing device; a storage device; a memory cache device; a decompression engine interposed between the memory cache device and the central processing device, wherein compressed object code instructions are decompressed by the decompression engine prior to their transmittal to the central processing device; a first connection bus connecting the central processing device to the decompression engine; a second connection bus connecting the decompression engine to the memory cache device; and an address bus of a predetermined bit width interconnecting the central processing device, the storage device and the memory cache device and the decompression engine allowing communication therebetween.
- 19. The embedded computer for executing compressed object code instructions as claimed in claim 18, wherein the memory cache device includes separate caches for executable instructions and data.
- 20. The computer as claimed in claim 19, the decompression engine comprising:
a fast dictionary look-up table device; a branch control device; a first local buffer device; a second local buffer device; an instruction input buffer connected to the fast dictionary look-up table device, the branch control device, the first local buffer device and the second local buffer device; a decoding device connected to the second local buffer device; a multiplexing device, wherein the outputs of the decoding device and the first local buffer device are connected to the multiplexing device; and a controller connected to the first local buffer device, the second local buffer device and the multiplexing device, wherein the controller properly sequences the object code instruction decompression.
- 21. The computer as claimed in claim 20, wherein the controller generates a first signal to signal the central processing device that the first and second local buffer devices are full.
- 22. The computer as claimed in claim 21, wherein the controller generates a second signal indicative of the order that the decompressed object code instructions are to be output from the multiplexing device.
- 23. A circuit for decompressing compressed object code instructions that have been compressed to reduce power consumption, the circuit comprising:
an input buffer circuit that receives compressed object code instructions; a first decoding circuit having an input connected to an output of the input buffer circuit; a second decoding circuit having an input connected to the output of the input buffer circuit; a third decoding circuit having an input connected to the output of the input buffer circuit; an output buffer circuit having an input connected to an output from each of the first, second and third decoding circuits; and a controller circuit controlling the first decoding circuit, the second decoding circuit, the third decoding circuit and the output buffer circuit, wherein the controller circuit coordinates the decompression of compressed object code instructions.
- 24. The circuit for decompressing compressed object code instructions as claimed in claim 23, wherein the input buffer circuit further comprises:
a memory storage circuit that stores compressed object code instructions; a multiplexing circuit having an input connected to an output of the memory storage circuit; and a decoder circuit having an input connected to an output of the memory storage circuit and having an output connected to an input of the multiplexing circuit.
- 25. The circuit for decompressing compressed object code instructions as claimed in claim 23, wherein the first decoding circuit further comprises a memory circuit storing uncompressed object code instructions.
- 26. The circuit for decompressing compressed object code instructions as claimed in claim 25, wherein the first decoding circuit further comprises a nonvolatile memory device.
- 27. The circuit for decompressing compressed object code instructions as claimed in claim 23, wherein the output buffer circuit further comprises:
a first memory storage circuit having an input connected to the outputs of the first and second decoding circuits; a multiplexing circuit having an input connected to the output of the first memory storage circuit and the output of the third decoding circuit; and a second memory storage circuit having an input connected to the output of the multiplexing circuit.
- 28. The circuit for decompressing compressed object code instructions as claimed in claim 23, wherein the third decoding circuit further comprises:
a comparator circuit having a first input connected to the output of the input buffer circuit; a memory storage circuit having an input connected to a first output of the comparator circuit and having an output connected to the output buffer circuit; a register circuit having an input connected to a second output of the comparator circuit; and a decoding table circuit having an input connected to an output of the register circuit and having an output connected to a second input of the comparator circuit.
- 29. A circuit for decompressing compressed object code instructions that have been compressed to reduce power consumption, the circuit comprising:
an input buffer circuit for receiving and distributing compressed object code instructions transferred from a memory storage device; a first decoding circuit for decompressing compressed fast dictionary instructions; a second decoding circuit for decompressing compressed branching object code instructions; a third decoding circuit for decompressing non-branching object code instructions; an output buffer circuit for receiving and ordering the output of the first, second and third decoding circuits; and a controller circuit controlling the first decoding circuit, the second decoding circuit, the third decoding circuit and the output buffer circuit, wherein the controller circuit coordinates the decompression of compressed object code instructions.
- 30. The circuit for decompressing compressed object code instructions as claimed in claim 29, wherein the input buffer circuit removes the tag bits from each compressed object code instruction and routes to the first, second or third decoding circuits based upon the tag bits.
- 31. The circuit for decompressing compressed object code instructions as claimed in claim 29, wherein the first decoding circuit decompresses compressed object code instructions by indexing into a first decompression table.
- 32. The circuit for decompressing compressed object code instructions as claimed in claim 29, wherein the second decoding circuit decompresses compressed branching object code instructions.
- 33. The circuit for decompressing compressed object code instructions as claimed in claim 29, wherein the third decoding circuit decompresses compressed non-branching object code instructions by referencing a second decompression table.
- 34. The circuit for decompressed compressed object code instructions as claimed in claim 33, wherein a comparison is made between portions of each compressed object code instruction and the appropriate entry in the second decompression table.
- 35. The circuit for decompressed compressed object code instructions as claimed in claim 29, wherein the controller circuit generates a stall signal to a central processing unit when the input buffer circuit is full.
- 36. The circuit for decompressed compressed object code instructions as claimed in claim 29, wherein the controller circuit assigns a priority value to each compressed instruction received by the input buffer circuit.
- 37. The circuit for decompressed compressed object code instructions as claimed in claim 29, wherein the controller circuit generates an instruction order signal, whereby the output buffer circuit restores the uncompressed object code instructions to their proper instructional sequence.
CROSS-REFERENCES TO RELATED APPLICATIONS
[0001] This application is an application filed under 35 U.S.C. § 111(a), claiming benefit pursuant to 35 U.S.C. §§ 119-120 of the filing date of the Provisional Application Serial No. 60/164,607 filed on Nov. 10, 1999, pursuant to 35 U.S.C. § 111(b). The Provisional Application Serial No. 60/164,607 is incorporated herein by reference for all it discloses.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60164607 |
Nov 1999 |
US |
Divisions (1)
|
Number |
Date |
Country |
| Parent |
09556927 |
Apr 2000 |
US |
| Child |
10462675 |
Jun 2003 |
US |