Claims
- 1. A one-cycle decompression engine, the decompression engine comprising:
a decoding circuit; at least two dictionary tables coupled to the decoding circuit; an output register coupled to the decoding circuit and to the dictionary tables; and a plurality of registers coupled to the decoding circuit and to the output register.
- 2. The decompression engine as claimed in claim 1, wherein the dictionary tables are coupled to the decoding circuit by a plurality of multiplexers.
- 3. The decompression engine as claimed in claim 1, wherein the decoding circuit receives compressed and uncompressed software instruction words.
- 4. The decompression engine as claimed in claim 3, wherein uncompressed compressed instructions are stored in one of the plurality of registers prior to being forwarded to the output register.
- 5. The decompression engine as claimed in claim 3, wherein compressed instructions are stored in one of the plurality of registers prior to being forwarded to one of the plurality of multiplexers.
- 6. The decompression engine as claimed in claim 1, wherein the decompression engine further comprises a flag register that indicates if portions of compressed instructions or uncompressed instructions are stored in the plurality of registers.
- 7. A computer system comprising:
a decompression engine as claimed in claim 1;a processing unit coupled to the decompression engine; and an instruction cache coupled to the decompression engine such that compressed or uncompressed instructions stored in the instruction cache pass through the decompression engine to the processing unit.
- 8. An embedded computer system, comprising:
a decompression engine as claimed in claim 1;an embedded processor coupled to an interface bus and to the decompression engine; a memory coupled to the interface bus; and an instruction cache coupled to the decompression engine.
- 9. The decompression engine as claimed in claim 1, wherein the decoding circuit implements a decoding tree algorithm in order to send a predetermined number of bits to a processing unit during one processing cycle.
- 10. The decompression engine as claimed in claim 9, wherein the predetermined number of bits is 32.
- 11. The decompression engine as claimed in claim 9, wherein the decoding circuit decodes multi-format instruction words.
- 12. The decompression engine as claimed in claim 11, wherein the decoding circuit controls the multiplexers coupled to the dictionary tables based upon instruction data input into the decoding circuit.
- 13. The decompression engine as claimed in claim 9, wherein the decoding circuit decodes 24-bit instructions, 24-bit instructions compressed into 8-bit instructions and 24-bit instructions compressed into 16-bit instructions.
- 14. A one-cycle decompression engine, the decompression engine comprising:
means for decoding input data; means for storing decoded instructions coupled to the means for decoding; output means coupled to the means for decoding and to the means for storing decoded instructions; and means for storing coupled to the means for decoding and to the output means.
- 15. The decompression engine as claimed in claim 14, wherein the means for storing decoded instructions are coupled to the means for decoding by means for multiplexing.
- 16. The decompression engine as claimed in claim 13, wherein the means for decoding receives compressed and uncompressed software instruction words.
- 17. The decompression engine as claimed in claim 16, wherein uncompressed compressed instructions are stored in means for storing prior to being forwarded to the output means.
- 18. The decompression engine as claimed in claim 16, wherein compressed instructions are stored in the means for storing prior to being forwarded to the means for multiplexing.
- 19. The decompression engine as claimed in claim 14, wherein the decompression engine further comprises a flag means that indicates if portions of compressed instructions or uncompressed instructions are stored in the means for storing.
- 20. The decompression engine as claimed in claim 14, wherein the means for decoding implements a decoding tree algorithm in order to send a predetermined number of bits to a processing unit during one processing cycle.
- 21. The decompression engine as claimed in claim 20, wherein the predetermined number of bits is 32.
- 22. The decompression engine as claimed in claim 20, wherein the means for decoding decodes multi-format instruction words.
- 23. The decompression engine as claimed in claim 22, wherein the means for decoding controls the means for multiplexing coupled to the means for storing decoded instructions based upon instruction data input into the means for decoding.
- 24. The decompression engine as claimed in claim 20, wherein the means for decoding decodes 24-bit instructions, 24-bit instructions compressed into 8-bit instructions and 24-bit instructions compressed into 16-bit instructions.
- 25. A method for maintaining instruction counter coherency during decompression of compressed software instructions, wherein the method comprises:
determining if an uncompressed instruction is a predetermined type of instruction, and based on that determination, storing a decompression program counter in a predetermined memory location; determining if the processor program counter is greater than the decompression program counter, and if that determination is true, incrementing the decompression program counter; and determining if the processor program counter offset points to a replay buffer address, and if that determination is true, changing the decompression engine program counter to be equal to the replay buffer address.
- 26. The method for maintaining instruction counter coherency as claimed in claim 25, wherein the predetermined instruction types are branch instructions, load instructions, store instruction, sync instructions and call instructions.
- 27. The method for maintaining instruction counter coherency as claimed in claim 25, wherein if the uncompressed instruction is a branch instruction, the decompression program counter is stored in a buffer.
- 28. The method for maintaining instruction counter coherency as claimed in claim 25, wherein if the uncompressed instruction is a load, store or sync instruction, the decompression program counter is stored in a replay buffer.
- 29. The method for maintaining instruction counter coherency as claimed in claim 25, wherein if the uncompressed instruction is a call instruction, the decompression program counter is stored in the stack.
- 30. A method for handling compressed and uncompressed software instructions of various bit sizes, wherein the method comprises:
constructing a decompression tree having a root and a plurality of branches extending from the root, each branch having a branch end; receiving at least first and second software instructions at the root of the decompression tree; determining the bit size of the first software instruction, and traversing a branch of the decompression tree that corresponds to the bit size of the first software instruction; determining the bit size of the second software instruction, and traversing the decompression tree down a branch that corresponds to the bit size of the second software instruction; determining if a branch end has been reached, and if that determination is true, decoding the software instructions; otherwise, additional software instructions are received until a branch end is reached.
- 31. The method for handling compressed and uncompressed software instructions as claimed in claim 31, wherein constructing a decompression tree further comprises:
determining the number of bits in each instruction code size; adding a first branch layer to the root of the decompression tree for each instruction code size, such that each branch is assigned a length that corresponds to the instruction code size; and adding additional layers of branches to the first branch layer until a bit distance from each branch end to the root of the decompression tree is equal to or greater than a predetermined bit amount.
- 32. The method for handling compressed and uncompressed software instructions of various bit sizes as claimed in claim 31, wherein the predetermined bit amount is 32.
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. § 120 of the filing date of the Provisional Application Ser. No. 60/346,002 filed on Jan. 9, 2002, pursuant to 35 U.S.C. § 111(b) and claiming benefit pursuant to 35 U.S.C. § 120 of the filing date of the Provisional Application Ser. No. 60/359,692 filed on Feb. 27, 2002, pursuant to 35 U.S.C. § 111(b). The Provisional Application Ser. No. 60/346,002 and Provisional Application Ser. No. 60/359,692 are incorporated herein by reference for all they disclose.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60346002 |
Jan 2002 |
US |
|
60359692 |
Feb 2002 |
US |