Claims
- 1. A dynamic random access memory (DRAM) module, comprising:
one or more memory devices for storing data; and a parallel compression engine for compressing uncompressed data; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 2. The DRAM module of claim 1, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 3. The DRAM module of claim 1, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 4. The DRAM module of claim 1, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 5. The DRAM module of claim 1,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 6. The DRAM module of claim 1,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 7. The DRAM module of claim 1,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 8. The DRAM module of claim 1, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 9. The DRAM module of claim 1, wherein the DRAM module is a Synchronous Dynamic Random Access Memory (SDRAM) module.
- 10. The DRAM module of claim 1, wherein the DRAM module is a Rambus Synchronous Dynamic Random Access Memory (RDRAM) module.
- 11. A device comprising:
a processor; and one or more dynamic random access memory (DRAM) modules coupled to the processor and operable to store data received from the processor; wherein at least one of the one or more DRAM modules includes a parallel compression engine for compressing uncompressed data; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 12. The device of claim 11,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to: determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 13. The device of claim 11, wherein the one or more DRAM modules are Synchronous Dynamic Random Access Memory (SDRAM) modules.
- 14. The device of claim 11, wherein the one or more DRAM modules are Rambus Synchronous Dynamic Random Access Memory (RDRAM) modules.
- 15. A dual in-line memory module (DIMM), comprising:
one or more memory devices for storing data; and a parallel compression engine for compressing uncompressed data; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 16. The DIMM of claim 15, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 17. The DIMM of claim 15, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 18. The DIMM of claim 15, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 19. The DIMM of claim 15,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 20. The DIMM of claim 15,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 21. The DIMM of claim 15,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 22. The DIMM of claim 15, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then: select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 23. A device comprising:
a processor; and one or more dual in-line memory modules (DIMMs) coupled to the processor and operable to store data received from the processor; wherein at least one of the one or more DIMMs includes a parallel compression engine for compressing uncompressed data; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 24. The device of claim 23,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 25. A processor, comprising:
one or more registers; an execution core; and a parallel compression engine for compressing uncompressed data; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 26. The processor of claim 25, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 27. The processor of claim 25, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 28. The processor of claim 25, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 29. The processor of claim 25,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 30. The processor of claim 25,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 31. The processor of claim 25,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 32. The processor of claim 25, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 33. A device comprising:
a processor; and memory coupled to the processor and operable to store data received from the processor; wherein the processor includes a parallel compression engine for compressing uncompressed data including the data sent to the memory for storing; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 34. The device of claim 33,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 35. A cache controller, comprising:
cache memory control logic for controlling a cache memory; and a parallel compression engine for compressing uncompressed data; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 36. The cache controller of claim 35, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 37. The cache controller of claim 35, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 38. The cache controller of claim 35, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 39. The cache controller of claim 35,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 40. The cache controller of claim 35,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 41. The cache controller of claim 35,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 42. The cache controller of claim 35, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 43. A device including a cache controller having an embedded parallel compression engine, the device comprising:
a processor; cache memory which stores data used by said processor for executing one or more applications; and a cache controller coupled to the cache memory and the processor, wherein the cache controller performs cache memory control functions for the cache memory, wherein the cache controller includes the parallel compression engine for compressing uncompressed data transferred to or from the cache memory; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 44. The device of claim 43,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 45. A bus bridge, comprising:
bus bridge logic for bridging a first bus to a second bus; and a parallel compression engine for compressing uncompressed data transferred between the first bus and the second bus, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 46. The bus bridge of claim 45, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 47. The bus bridge of claim 45, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 48. The bus bridge of claim 45, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 49. The bus bridge of claim 45,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 50. The bus bridge of claim 45,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 51. The bus bridge of claim 45,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 52. The bus bridge of claim 45, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 53. A device comprising:
a first bus; a second bus; and a bus bridge for bridging the first bus to the second bus, wherein the bus bridge includes a parallel compression engine for compressing uncompressed data transferred between the first bus and the second bus; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 54. The device of claim 53,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 55. A solid state storage device, comprising:
one or more memory boards for storing data; a processor board operable to manage the storage of the data on the one or more memory boards; a memory bus operable to couple the memory boards to the processor board; an interface board operable to couple the solid state storage device to a host system for receiving and sending the data; and a parallel compression engine for compressing uncompressed data; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 56. The solid state storage device of claim 55, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 57. The solid state storage device of claim 55, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 58. The solid state storage device of claim 55, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 59. The solid state storage device of claim 55,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operables to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 60. The solid state storage device of claim 55,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 61. The solid state storage device of claim 55,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 62. The solid state storage device of claim 55, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 63. A computer system comprising:
a processor; system memory coupled to the processor; and a solid state storage device operable to store data received from one or more of the processor and the system memory, wherein the solid state storage device comprises:
one or more memory boards for storing the data; and a parallel compression engine for compressing the data;
wherein the parallel compression engine is operable to: maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 64. The computer system of claim 63,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 65. An intelligent device comprising:
a processor; and a parallel compression engine for compressing uncompressed data within the device, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output the compressed data in response to the match information.
- 66. The intelligent device of claim 65, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 67. The intelligent device of claim 65, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 68. The intelligent device of claim 65, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 69. The intelligent device of claim 65,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 70. The intelligent device of claim 65,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 71. The intelligent device of claim 65,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 72. The intelligent device of claim 65, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 73. A network hub comprising:
hub logic for receiving data from one or more sources on the network and sending the data to one or more destinations on the network; and a parallel compression engine for compressing the received data prior to said sending, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 74. The network hub of claim 73, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 75. The network hub of claim 73, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 76. The network hub of claim 73, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 77. The network hub of claim 73,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 78. The network hub of claim 73,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 79. The network hub of claim 73,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 80. The network hub of claim 73, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 81. A network switch comprising:
switch logic for selecting paths for sending data to destinations on the network; and a parallel compression engine for compressing uncompressed data prior to said sending, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 82. The network switch of claim 81, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 83. The network switch of claim 81, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 84. The network switch of claim 81, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 85. The network switch of claim 81,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 86. The network switch of claim 81,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 87. The network switch of claim 81,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 88. The network switch of claim 81, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 89. A network bridge comprising:
bridge logic for connecting two or more networks; and a parallel compression engine for compressing uncompressed data received on one of the two or more networks prior to transferring the data to at least one other of the two or more networks, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 90. The network bridge of claim 89, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 91. The network bridge of claim 89, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 92. The network bridge of claim 89, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 93. The network bridge of claim 89,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 94. The network bridge of claim 89,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 95. The network bridge of claim 89,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 96. The network bridge of claim 89, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 97. A network router comprising:
router logic operable to route data on one or more networks; and a parallel compression engine for compressing uncompressed data during said routing, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 98. The network router of claim 97, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 99. The network router of claim 97, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 100. The network router of claim 97, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 101. The network router of claim 97,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 102. The network router of claim 97,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 103. The network router of claim 97,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 104. The network router of claim 97, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 105. A network brouter comprising:
bridge logic operable to connect two or more networks; router logic operable to route data on the two or more networks; and a parallel compression engine for compressing uncompressed data in transit through the brouter, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 106. The network brouter of claim 105, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 107. The network brouter of claim 105, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 108. The network brouter of claim 105, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 109. The network brouter of claim 105,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 110. The network brouter of claim 105,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 111. The network brouter of claim 105,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 112. The network brouter of claim 105, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 113. A multiplexer comprising:
multiplexing logic operable to:
receive a plurality of input signals from one or more sources; multiplex the plurality of signals to form one output multiplexed signal; and send the output multiplexed signal to a destination; a parallel compression engine for compressing uncompressed data in the plurality of signals prior to said sending, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 114. The multiplexer of claim 113, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 115. The multiplexer of claim 113, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 116. The multiplexer of claim 113, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 117. The multiplexer of claim 113,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 118. The multiplexer of claim 113,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 119. The multiplexer of claim 113,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 120. The multiplexer of claim 113, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 121. A demultiplexer comprising:
demultiplexing logic operable to:
receive a multiplexed signal from a source; demultiplex the multiplexed signal to produce a plurality of signals; and send the plurality of signals to one or more destinations; a parallel compression engine for compressing uncompressed data in the plurality of signals prior to said sending, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 122. The demultiplexer of claim 121, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 123. The demultiplexer of claim 121, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 124. The demultiplexer of claim 121, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 125. The demultiplexer of claim 121,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 126. The demultiplexer of claim 121,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 127. The demultiplexer of claim 121,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 128. The demultiplexer of claim 121, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 129. A terminal server comprising:
a plurality of ports operable to couple a plurality of devices to the terminal server; a port operable to couple a network to the terminal server; data transfer logic operable to transfer data between the network and the plurality of devices; and a parallel compression engine for compressing uncompressed data during said transferring the data between the network and the plurality of devices, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 130. The terminal server of claim 129, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 131. The terminal server of claim 129, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 132. The terminal server of claim 129, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 133. The terminal server of claim 129,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 134. The terminal server of claim 129,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 135. The terminal server of claim 129,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 136. The terminal server of claim 129, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 137. A network interface card (NIC), comprising:
network interface logic for interfacing a device to a network; and a parallel compression engine for compressing uncompressed data transferred between the device and the network, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 138. The network interface card of claim 137, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 139. The network interface card of claim 137, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 140. The network interface card of claim 137, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 141. The network interface card of claim 137,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 142. The network interface card of claim 137,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 143. The network interface card of claim 137,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 144. The network interface card of claim 137, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 145. A computer system comprising:
a processor; system memory coupled to the processor; and a network interface card (NIC) operable to couple the computer system to a network, wherein the network interface card includes a parallel compression engine for compressing uncompressed data transferred between the computer system and the network; wherein the data transferred between the computer system and the network includes one or more of data transferred between the system memory and the network and data transferred between the processor and the network; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 146. The computer system of claim 145,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 147. An Integrated Services Digital Network (ISDN) adapter comprising:
logic for interfacing a device to an Integrated Services Digital Network; and a parallel compression engine for compressing uncompressed data transferred between the device and the ISDN, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information..
- 148. The ISDN adapter of claim 147, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 149. The ISDN adapter of claim 147, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 150. The ISDN adapter of claim 147, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 151. The ISDN adapter of claim 147,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 152. The ISDN adapter of claim 147,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 153. The ISDN adapter of claim 147,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 154. The ISDN adapter of claim 147, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 155. A computer system comprising:
a processor; system memory coupled to the processor; and an Integrated Services Digital Network (ISDN) adapter operable to couple the computer system to an Integrated Services Digital Network, wherein the ISDN adapter includes a parallel compression engine for compressing uncompressed data transferred between the computer system and the Integrated Services Digital Network; wherein the data transferred between the computer system and the Integrated Services Digital Network includes one or more of data transferred between the system memory and the Integrated Services Digital Network and data transferred between the processor and the Integrated Services Digital Network; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 156. The computer system of claim 155,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 157. An asynchronous transfer mode (ATM) adapter comprising:
logic for interfacing a device to an ATM network; and a parallel compression engine for compressing uncompressed data transferred between the device and the ATM network, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 158. The ATM adapter of claim 157, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 159. The ATM adapter of claim 157, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 160. The ATM adapter of claim 157, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 161. The ATM adapter of claim 157,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 162. The ATM adapter of claim 157,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 163. The ATM adapter of claim 157,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 164. The ATM adapter of claim 157, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 165. A computer system comprising:
a processor; system memory coupled to the processor; and an asynchronous transfer mode (ATM) adapter operable to couple the computer system to a network that supports ATM, wherein the ATM adapter includes a parallel compression engine for compressing uncompressed data transferred between the computer system and the network; wherein the data transferred between the computer system and the network includes one or more of data transferred between the system memory and the network and data transferred between the processor and the network; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 166. The computer system of claim 165,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 167. A modem comprising:
modem logic for interfacing a device to an analog data source; and a parallel compression engine for compressing uncompressed data transferred between the device and the modem, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 168. The modem of claim 167, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 169. The modem of claim 167, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 170. The modem of claim 167, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 171. The modem of claim 167,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 172. The modem of claim 167,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 173. The modem of claim 167,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 174. The modem of claim 167, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 175. A computer system comprising:
a processor; system memory coupled to the processor; and an modem operable to couple the computer system to an analog data source, wherein the modem includes a parallel compression engine for compressing uncompressed data transferred between the computer system and the analog data source; wherein the data transferred between the computer system and the analog data source includes one or more of data transferred between the system memory and the analog data source and data transferred between the processor and the analog data source; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 176. The computer system of claim 175,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 177. A cable modem for connecting to a network via a cable service, comprising:
logic for coupling a device to a network via a cable service; and a parallel compression engine for compressing uncompressed data transferred between the device and the network, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 178. The cable modem of claim 177, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 179. The cable modem of claim 177, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 180. The cable modem of claim 177, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 181. The cable modem of claim 177,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 182. The cable modem of claim 177,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 183. The cable modem of claim 177,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 184. The cable modem of claim 177, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 185. The cable modem of claim 177, wherein the device is one of a television set and a computer system.
- 186. A computer system comprising:
a processor; system memory coupled to the processor; and a cable modem operable to couple the computer system to a network via a cable service, wherein the cable modem includes a parallel compression engine for compressing uncompressed data transferred between the computer system and the network; wherein the data transferred between the computer system and the network includes one or more of data transferred between the system memory and the network and data transferred between the processor and the network; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 187. The computer system of claim 186,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 188. A Digital Subscriber Line (DSL) adapter for interfacing a device to a Digital Subscriber Line, the DSL adapter comprising:
logic for interfacing the device to the Digital Subscriber Line; and a parallel compression engine for compressing uncompressed data transferred between the device and the DSL, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information..
- 189. The DSL adapter of claim 188, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 190. The DSL adapter of claim 188, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 191. The DSL adapter of claim 188, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 192. The DSL adapter of claim 188,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 193. The DSL adapter of claim 188,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 194. The DSL adapter of claim 188,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 195. The DSL adapter of claim 188, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 196. A computer system comprising:
a processor; system memory coupled to the processor; and a Digital Subscriber Line (DSL) adapter operable to couple the computer system to a Digital Subscriber Line, wherein the DSL adapter includes a parallel compression engine for compressing uncompressed data transferred between the computer system and the Digital Subscriber Line; wherein the data transferred between the computer system and the Digital Subscriber Line includes one or more of data transferred between the system memory and the Digital Subscriber Line and data transferred between the processor and the Digital Subscriber Line; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 197. The computer system of claim 196,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 198. A network appliance comprising:
network interface logic for interfacing the network appliance to a network; and a parallel compression engine for compressing uncompressed data transferred between the network appliance and the network, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 199. The network appliance of claim 198, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 200. The network appliance of claim 198, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 201. The network appliance of claim 198, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 202. The network appliance of claim 198,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 203. The network appliance of claim 198,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 204. The network appliance of claim 198,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 205. The network appliance of claim 198, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 206. A set-top box comprising:
logic for enabling a television set to serve as a user interface to the Internet; logic for enabling the television set to receive and decode digital television (DTV) broadcasts; and a parallel compression engine for compressing uncompressed data within the set-top box, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 207. The set-top box of claim 206, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 208. The set-top box of claim 206, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 209. The set-top box of claim 206, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 210. The set-top box of claim 206,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 211. The set-top box of claim 206,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 212. The set-top box of claim 206,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 213. The set-top box of claim 206, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 214. A digital-to-analog converter (DAC), comprising:
logic for converting a digital input to an analog output signal; and a parallel compression engine for compressing uncompressed data in the digital input prior to said converting the digital input to the analog output signal, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 215. The digital-to-analog converter of claim 214, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 216. The digital-to-analog converter of claim 214, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 217. The digital-to-analog converter of claim 214, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 218. The digital-to-analog converter of claim 214,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 219. The digital-to-analog converter of claim 214,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 220. The digital-to-analog converter of claim 214,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 221. The digital-to-analog converter of claim 214, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 222. A computer system comprising:
a processor; system memory coupled to the processor; and a digital-to-analog converter (DAC) for converting a digital input to an analog output signal; wherein the digital-to-analog converter is operable to receive the digital input from one or more of the processor and the system memory; wherein the DAC includes a parallel compression engine for compressing uncompressed data in the digital input prior to said converting the digital input to the analog output signal; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 223. The computer system of claim 222,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 224. An analog-to-digital converter (ADC), comprising:
logic for converting an analog input signal to a digital output; and a parallel compression engine for compressing uncompressed data in the digital output after said converting the analog input signal to the digital output, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 225. The analog-to-digital converter of claim 224, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 226. The analog-to-digital converter of claim 224, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 227. The analog-to-digital converter of claim 224, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 228. The analog-to-digital converter of claim 224,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 229. The analog-to-digital converter of claim 224,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 230. The analog-to-digital converter of claim 224,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 231. The analog-to-digital converter of claim 224, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 232. A computer system comprising:
a processor; system memory coupled to the processor; and an analog-to-digital converter (ADC) for converting an analog input signal to a digital output; wherein the analog-to-digital converter is operable to provide the digital output to one or more of the processor and the system memory; wherein the analog-to-digital converter further includes a parallel compression engine for compressing uncompressed data in the digital output after said converting the analog input signal to the digital output; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 233. The computer system of claim 232,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 234. A digital data reading system comprising:
a storage medium operable to store digital data; a mechanism for reading the data from the storage medium; and a parallel compression engine for compressing the data after said reading, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 235. The digital data reading system of claim 234, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 236. The digital data reading system of claim 234, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 237. The digital data reading system of claim 234, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 238. The digital data reading system of claim 234,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 239. The digital data reading system of claim 234,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 240. The digital data reading system of claim 234,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 241. The digital data reading system of claim 234, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 242. The digital data reading system of claim 234, wherein the digital data reading system is a Compact Disk (CD) reader.
- 243. The digital data reading system of claim 234, wherein the digital data reading system is a CD-Recordable (CD-R) device.
- 244. The digital data reading system of claim 234, wherein the digital data reading system is a CD-Rewritable (CD-RW) device.
- 245. The digital data reading system of claim 234, wherein the digital data reading system is a Digital Audio Tape (DAT) device.
- 246. A computer system comprising:
a processor; system memory coupled to the processor; and a digital data reading device operable to read data from a digital storage medium; wherein the digital data reading device includes logic for transferring the data read from the digital storage medium to one or more of the processor and the system memory; and wherein the digital data reading device further includes a parallel compression engine for compressing uncompressed data read from the digital storage medium; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 247. The computer system of claim 246,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 248. The computer system of claim 246, wherein the digital data reading device is a Compact Disk (CD) reader.
- 249. The computer system of claim 246, wherein the digital data reading device is a CD-Recordable (CD-R) device.
- 250. The computer system of claim 246, wherein the digital data reading device is a CD-Rewritable (CD-RW) device.
- 251. The computer system of claim 246, wherein the digital data reading device is a Digital Audio Tape (DAT) device.
- 252. A digital data recording system comprising:
input logic for receiving data from one or more sources; a recordable medium for recording the received data digitally; and a parallel compression engine for compressing the received data prior to said recording the received data, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 253. The digital data recording system of claim 252, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 254. The digital data recording system of claim 252, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 255. The digital data recording system of claim 252, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 256. The digital data recording system of claim 252,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 257. The digital data recording system of claim 252,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 258. The digital data recording system of claim 252,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 259. The digital data recording system of claim 252, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 260. The digital data recording system of claim 252, wherein the digital data recording system is a CD-Recordable (CD-R) device.
- 261. The digital data recording system of claim 252, wherein the digital data recording system is a CD-Rewritable (CD-RW) device.
- 262. The digital data recording system of claim 252, wherein the digital data recording system is a compact disk (CD) recorder device.
- 263. The digital data recording system of claim 252, wherein the digital data recording system is a Digital Audio Tape (DAT) device.
- 264. A computer system comprising:
a processor; system memory coupled to the processor; and a digital data recording device coupled to the processor and the system memory and operable to record data digitally to a recordable medium; wherein the digital data recording device includes logic for receiving the data for recording from one or more of the processor and the system memory; and wherein the digital data recording device further includes a parallel compression engine for compressing uncompressed data prior to said recording the data to the recordable medium; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 265. The computer system of claim 264,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 266. The computer system of claim 264, wherein the digital data recording device is a CD-Recordable (CD-R) device.
- 267. The computer system of claim 264, wherein the digital data recording device is a CD-Rewritable (CD-RW) device.
- 268. The computer system of claim 264, wherein the digital data recording device is a compact disk (CD) recorder device.
- 269. The computer system of claim 264, wherein the digital data recording device is Digital Audio Tape (DAT) device.
- 270. An optical data recording system comprising:
input logic for receiving data from one or more sources; a recordable medium for recording the received data optically; and a parallel compression engine for compressing the received data prior to said recording the received data optically, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 271. The optical data recording system of claim 270, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 272. The optical data recording system of claim 270, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 273. The optical data recording system of claim 270, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 274. The optical data recording system of claim 270,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 275. The optical data recording system of claim 270,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 276. The optical data recording system of claim 270,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 277. The optical data recording system of claim 270, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 278. The optical data recording system of claim 270, wherein the optical data recording system is a digital versatile disk (DVD) device.
- 279. A computer system comprising:
a processor; system memory coupled to the processor; and an optical data recording device coupled to the processor and the system memory and operable to record data optically to a recordable medium; wherein the optical data recording device includes logic for receiving the data to be recorded from one or more of the processor and the system memory; and wherein the optical data recording device further includes a parallel compression engine for compressing uncompressed data prior to said recording the data to the recordable medium; wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 280. The computer system of claim 279,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 281. The computer system of claim 279, wherein the optical data recording device is a digital versatile disk (DVD) device.
- 282. A scanner comprising:
scanning logic for capturing images by scanning preexisting images; optical character recognition (OCR) logic for generating data from scanned images; and a parallel compression engine for compressing the generated data, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 283. The scanner of claim 282, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 284. The scanner of claim 282, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 285. The scanner of claim 282, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 286. The scanner of claim 282,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 287. The scanner of claim 282,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 288. The scanner of claim 282,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 289. The scanner of claim 282, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 290. A personal digital assistant (PDA) comprising:
a memory operable to store data within the PDA; and a parallel compression engine for compressing uncompressed data within the PDA including the data stored to the memory, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 291. The PDA of claim 290, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 292. The PDA of claim 290, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 293. The PDA of claim 290, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 294. The PDA of claim 290,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 295. The PDA of claim 290,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 296. The PDA of claim 290,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 297. The PDA of claim 290, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
- 298. A cellular telephone comprising:
a memory for storing data within the cellular telephone; a display operable to display the data; and a parallel compression engine for compressing uncompressed data in or received by the cellular telephone including the data stored to the memory, wherein the parallel compression engine is operable to:
maintain a history table comprising entries, wherein each entry comprises at least one symbol; receive the uncompressed data, wherein the uncompressed data comprises a plurality of symbols; compare the plurality of symbols with entries in the history table in a parallel fashion, wherein said comparing produces compare results; determine match information for each of the plurality of symbols based on the compare results; and output compressed data in response to the match information.
- 299. The cellular telephone of claim 298, wherein the parallel compression engine is operable to output a count value and an entry pointer for a contiguous match, wherein the entry pointer points to the entry in the history table which produced the contiguous match, wherein the count value indicates a number of matching symbols in the contiguous match.
- 300. The cellular telephone of claim 298, wherein the parallel compression engine is operable to determine matches of said plurality of symbols with entries in the history table.
- 301. The cellular telephone of claim 298, wherein the parallel compression engine is operable to maintain count information including a count of prior matches which occurred when previous symbols were compared with entries in the history table;
wherein the parallel compression engine is operable to determine the match information for each of said plurality of symbols based on the count information and the compare results.
- 302. The cellular telephone of claim 298,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to:
determine if a contiguous match occurs for one or more of the one or more middle symbols that does not involve a match with either the first symbol or the last symbol; and determine if a contiguous match occurs involving one or more of the middle symbols and at least one of the first symbol or the last symbol.
- 303. The cellular telephone of claim 298,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine determines at least one contiguous match for one or more contiguous middle symbols that does not include either the first symbol or the last symbol.
- 304. The cellular telephone of claim 298,
wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols; wherein, in determining match information, the parallel compression engine is operable to determine if a contiguous match occurs for one or more respective contiguous middle symbols, wherein the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the one or more respective contiguous middle symbols.
- 305. The cellular telephone of claim 298, wherein the plurality of symbols includes a first symbol, a last symbol, and one or more middle symbols;
wherein, in determining match information, the parallel compression engine is operable to: if at least one contiguous match occurs with one or more respective contiguous middle symbols, and the one or more respective contiguous middle symbols are not involved in a match with either the symbol before or after the respective contiguous middle symbols, then:
select the one or more largest non-overlapping contiguous matches involving the one or more respective contiguous middle symbols; wherein the parallel compression engine is operable to output compressed data for each of the selected matches involving the one or more respective contiguous middle symbols.
CONTINUATION DATA
[0001] This is a continuation-in-part (CIP) of U.S. patent application Ser. No. 09/239,659 titled “Bandwidth Reducing Memory Controller Including Scalable Embedded Parallel Data Compression and Decompression Engines” and filed Jan. 29, 1999, whose inventors are Thomas A. Dye, Manuel J. Alvarez II, and Peter Geiger.
[0002] This is a continuation-in-part (CIP) of U.S. patent application Ser. No. 09/421,968 titled “System and Method for Performing Scalable Embedded Parallel Data Compression” and filed Oct. 20, 1999, whose inventors are Thomas A. Dye, Manuel J. Alvarez II, and Peter Geiger, which is a continuation-in-part (CIP) of U.S. patent application Ser. No. 09/239,659 titled “Bandwidth Reducing Memory Controller Including Scalable Embedded Parallel Data Compression and Decompression Engines” and filed Jan. 29, 1999, whose inventors are Thomas A. Dye, Manuel J. Alvarez II, and Peter Geiger.
[0003] This is a continuation-in-part (CIP) of U.S. patent application Ser. No. 09/491,343 titled “System and Method for Performing Scalable Embedded Parallel Data Decompression” and filed Jan. 26, 2000, whose inventors are Thomas A. Dye, Manuel J. Alvarez II, and Peter Geiger, which is a continuation-in-part (CIP) of U.S. patent application Ser. No. 09/239,659 titled “Bandwidth Reducing Memory Controller Including Scalable Embedded Parallel Data Compression and Decompression Engines” and filed Jan. 29, 1999, whose inventors are Thomas A. Dye, Manuel J. Alvarez II, and Peter Geiger, and which is also a continuation-in-part of U.S. patent application Ser. No. 09/421,968 titled “System and Method for Performing Scalable Embedded Parallel Data Compression” and filed Oct. 20, 1999, whose inventors are Thomas A. Dye, Manuel J. Alvarez II, and Peter Geiger, which is a continuation-in-part (CIP) of U.S. patent application Ser. No. 09/239,659 titled “Bandwidth Reducing Memory Controller Including Scalable Embedded Parallel Data Compression and Decompression Engines” and filed Jan. 29, 1999, whose inventors are Thomas A. Dye, Manuel J. Alvarez II, and Peter Geiger.
Continuation in Parts (3)
|
Number |
Date |
Country |
Parent |
09239659 |
Jan 1999 |
US |
Child |
09818283 |
Mar 2001 |
US |
Parent |
09421968 |
Oct 1999 |
US |
Child |
09818283 |
Mar 2001 |
US |
Parent |
09491343 |
Jan 2000 |
US |
Child |
09818283 |
Mar 2001 |
US |