Claims
- 1. A codeword decoder for decoding one of a plurality of codewords, each codeword including a class code and a symbol code selected from the group consisting of literals and index codes, the codeword decoder comprising:
(a) a symbol memory for storing symbols corresponding to respective index codes; (b) a class code decoder for extracting, from the codeword, information for decoding the symbol code of the codeword, said information for decoding the symbol code of the codeword including:
(i) an indication of whether the symbol code of the codeword is a literal, and (ii) if the symbol code of the codeword is an index code, information related to an address in said symbol memory of said respective symbol of said index code; and (c) a symbol code decoder for receiving the codeword and for decoding the symbol code of the codeword, based on said information for decoding the symbol code of the codeword.
- 2. The codeword decoder of claim 1, wherein said class code decoder includes a PLA for receiving the class code of the codeword and for computing, from the class code of the codeword, said information for decoding the symbol code of the codeword.
- 3. The codeword decoder of claim 1, wherein said information related to said address in said symbol memory includes a high-order portion of said address.
- 4. The codeword decoder of claim 3, wherein said information related to said address in said symbol memory includes information related to a low-order portion of said address, and wherein said symbol code decoder includes a mechanism for computing said low-order portion of said address from said information related to said low-order portion of said address.
- 5. The codeword decoder of claim 4, wherein said information related to said low-order portion of said address includes a length of the codeword and a mask control word; and wherein said symbol code decoder includes:
(i) a rotate left unit for aligning the codeword, based on said length of the codeword, thereby producing an aligned codeword; and (ii) a mask unit for masking said aligned codeword according to said mask control word to extract therefrom said low-order portion of said address.
- 6. The codeword decoder of claim 4, wherein said symbol code decoder includes a mechanism for combining said high-order portion of said address with said low-order portion of said address to recover said address.
- 7. A computer comprising:
(a) a code memory for storing a plurality of blocks of compressed code, each said block including a first half-block and a second half-block, each said half-block including at least one codeword; and (b) two codeword decoders of claim 1, a first said codeword decoder for decoding said at least one codewords of said first half-blocks and a second said codeword decoder for decoding said at least one codewords of said second half-blocks.
- 8. The computer of claim 7, further comprising:
(c) an address translation table including only references to beginning addresses of said blocks in said code memory, each said first half-block of each said block being addressed using said beginning address of said each block, each said second half-block of each said block being addressed using said beginning address of a block immediately subsequent to said each block.
- 9. A method of decoding one of a plurality of codewords, each codeword including a class code and a symbol code selected from the group consisting of literals and index codes, each index code corresponding to a respective symbol, the method comprising the steps of:
(a) storing the symbols in a memory; (b) computing, from the class code of the codeword, information for decoding the symbol code of the codeword, said information including:
(i) an indication of whether the symbol code of the codeword is a literal, and (ii) if the symbol code of the codeword is an index code, information related to an address in said memory of the respective symbol of the index code; and (c) if the symbol code of the codeword is an index code, reconstructing said address from said information related to said address.
- 10. The method of claim 9, wherein said information related to said address includes a high-order portion of said address, a length of the codeword and a mask control word, and wherein said reconstructing is effected by steps including:
(i) aligning the codeword according to said length of the codeword, thereby producing an aligned codeword; (ii) masking said aligned codeword according to said mask control word to extract therefrom a low-order portion of said address; and (iii) combining said high order portion of said address with said low-order portion of said address.
- 11. A codeword decoder for decoding one of a plurality of codewords, each codeword including a plurality of class codes and a like plurality of symbol codes, each symbol code being selected from the group consisting of literals and index codes, the codeword decoder comprising:
(a) a class code decoder for extracting, from said codeword, information for decoding the symbol codes of the codeword; and (b) a like plurality of symbol code decoders, each said symbol code decoder for receiving the codeword and for decoding a respective symbol code of the codeword, based on a respective portion of said information.
- 12. The codeword decoder of claim 11, wherein said class code decoder includes:
(i) a PLA for receiving the class codes of the codeword and for computing, from the class codes of the codeword:
(A) a class code combination number corresponding to the class codes of the codeword, and (B) for each symbol code of the codeword, a respective symbol class number; and (ii) for each symbol code of the codeword, a respective symbol class number translator for translating said respective symbol class number into said information for decoding said each symbol code of the codeword.
- 13. The codeword decoder of claim 11, further comprising:
(c) a like plurality of symbol memories for storing symbols corresponding to respective index codes; and wherein said information for decoding the symbol codes of the codeword includes, for each symbol code of the code word: (i) an indication of whether said each symbol code is a literal, and (ii) if said each symbol code is an index code, information related to an address, in a respective said symbol memory, of said respective symbol of said index code.
- 14. The codeword decoder of claim 13, wherein, for each symbol code of the codeword, said information related to said address, in said respective said symbol memory, of said respective symbol of said index code, includes a high-order portion of said address.
- 15. The codeword decoder of claim 14, wherein, for each symbol code of the codeword, said information related to said address, in said respective said symbol memory, of said respective symbol of said index code, includes information related to a low-order portion of said address, and wherein said respective symbol code decoder includes a mechanism for computing said low-order portion of said address from said information related to said low-order portion of said address.
- 16. The codeword decoder of claim 15, wherein said class code decoder further includes:
(iii) a class code combination number translator for translating said class code combination number into a total length of the class codes of the codeword; wherein, for each symbol code of the codeword, said information related to said low-order portion of said address includes a length of said each symbol code of the codeword, and wherein said respective symbol code decoder includes: (i) a rotate left unit for aligning the codeword, based on said total length of the class codes of the codeword and on said length of said each symbol code of the codeword, thereby producing a respective aligned codeword; and (ii) a mask unit for masking said respective aligned codeword according to said length of said each symbol code of the codeword to extract the refrom said low-order portion of the address.
- 17. The codeword decoder of claim 16, wherein, for each symbol code of the codeword subsequent to a first symbol code of the codeword: said information related to said low-order portion of said address includes a length of each preceding symbol code of the codeword, and said aligning of the codeword in based on said lengths of said preceding symbol codes.
- 18. The codeword decoder of claim 15, wherein, for each symbol code of the codeword, said respective symbol code decoder includes a mechanism for combining said high-order portion of said address with said low-order portion of said address to recover said address.
- 19. A computer comprising:
(a) a code memory for storing a plurality of blocks of compressed code, each said block including a first half-block and a second half-block, each said half-block including at least one codeword; and (b) two codeword decoders of claim 14, a first said codeword decoder for decoding said at least one codeword of said first half-blocks and a second said codeword decoder for decoding said at least one codeword of said second half-blocks.
- 20. The computer of claim 19, further comprising:
(c) an address translation table including only references to beginning addresses of said blocks in said code memory, each said first half-block of each said block being addressed using said beginning address of said each block, each said second half-block of each said block being addressed using said beginning address of a block immediately subsequent to said each block.
- 21. A method of encoding a plurality of symbols, comprising the steps of:
(a) encoding each symbol separately as a respective class code and a respective symbol code; and (b) concatenating said class codes and said symbol codes to provide a codeword.
- 22. The method of claim 21, wherein said codeword includes a first portion including only said concatenated class codes and a second portion including only said symbol codes.
- 23. The method of claim 22, wherein each said symbol code is selected from the group consisting of literals and index codes, the method further comprising the step of:
(c) decoding said codeword, by steps including:
(i) for each symbol whose respective symbol code is an index code: storing said each symbol in a respective symbol memory at an address corresponding to said index code; (ii) extracting, from said first portion of said codeword, information for decoding said second portion of said codeword, said information including, for each said symbol code:
(A) an indication of whether said each symbol code is a literal, and (B) if said each symbol code is an index code, information related to said address corresponding to said index code; and (iii) for each symbol whose respective symbol code is an index code: reconstructing said address corresponding to said index code from said information related to said address corresponding to said index code.
- 24. The method of claim 23, wherein said extracting is effected by steps including:
(A) computing, from said first portion of said codeword, a class code combination number corresponding to said class codes; (B) translating said class code combination number into a total length of said class codes; (C) for each said symbol code, computing a respective symbol class number; and (D) translating said respective symbol class number into said information for decoding said second portion of said codeword.
- 25. The method of claim 24, wherein, for each said symbol whose respective symbol code is an index code, said information related to said address corresponding to said index code includes a high-order portion of said address and a length of said each symbol code, and wherein said reconstructing is effected by steps including:
(A) aligning said codeword, based on said total length of said class codes and on said length of said each symbol code, thereby producing a respective aligned codeword; (B) masking said respective aligned codeword according to said length of said each symbol code to extract therefrom said low-order portion of said address; and (C) combining said high order portion of said address with said low order portion of said address.
- 26. A method of encoding a plurality of blocks, each block including 2N symbols, where N is a positive integer, comprising the steps of:
(a) for each block:
(i) compressing a first N symbols of said each block to provide N first codewords, (ii) compressing a second N symbols of said each block to provide N second codewords, said N second codewords being compressed oppositely to said compressing of said N first codewords, and (iii) concatenating said N first codewords with said N second codewords to provide a compressed block; and (b) storing said compressed blocks consecutively in a memory.
- 27. The method of claim 26, further comprising the step of:
(c) providing an address translation table including only references to beginning addresses of said compressed blocks in said memory.
- 28. The method of claim 27, further comprising the step of:
(d) for each said compressed block:
(i) retrieving said each compressed block using only said references of said address translation table; and (ii) decoding said codewords of said each block.
- 29. The method of claim 28, wherein said first N codewords of said each block and said second N codewords of said each block are decoded substantially simultaneously.
Parent Case Info
[0001] This is a continuation-in-part of U.S. Provisional patent application No. 60/278,868, filed Mar. 26, 2001.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60278868 |
Mar 2001 |
US |