Memory module including scalable embedded parallel data compression and decompression engines
First Claim
1. A method for managing memory in a system including one or more memory modules, wherein at least one of the one or more memory modules includes a decompression engine, the method comprising:
- storing compressed data on the one or more memory modules;
initiating a read of requested data from the one or more memory modules, wherein the requested data comprises compressed requested data stored on the one or more memory modules in a compressed format;
decompressing, through the one or more memory modules, the compressed requested data to produce uncompressed requested data using parallel decompression, wherein said decompressing the compressed requested data comprises;
examining a plurality of tokens from the compressed requested data in parallel in a current decompression cycle, wherein each of the plurality of tokens describes one or more symbols in the uncompressed requested data;
generating a plurality of selects in parallel in response to said examining the plurality of tokens in parallel, wherein each of the plurality of selects points to a symbol in a combined history window; and
generating the uncompressed requested data comprising the plurality of symbols using the plurality of selects; and
providing the uncompressed requested.
5 Assignments
0 Petitions
Accused Products
Abstract
An memory module including parallel data compression and decompression engines for improved performance. The memory module includes MemoryF/X Technology. To improve latency and reduce performance degradations normally associated with compression and decompression techniques, the MemoryF/X Technology encompasses multiple novel techniques such as: 1) parallel lossless compression/decompression; 2) selectable compression modes such as lossless, lossy or no compression; 3) priority compression mode; 4) data cache techniques; 5) variable compression block sizes; 6) compression reordering; and 7) unique address translation, attribute, and address caches. The parallel compression and decompression algorithm allows high-speed parallel compression and high-speed parallel decompression operation. The memory module-integrated data compression and decompression capabilities remove system bottlenecks and increase performance. This allows lower cost systems due to smaller data storage, reduced bandwidth requirements, reduced power and noise.
-
Citations
47 Claims
-
1. A method for managing memory in a system including one or more memory modules, wherein at least one of the one or more memory modules includes a decompression engine, the method comprising:
-
storing compressed data on the one or more memory modules;
initiating a read of requested data from the one or more memory modules, wherein the requested data comprises compressed requested data stored on the one or more memory modules in a compressed format;
decompressing, through the one or more memory modules, the compressed requested data to produce uncompressed requested data using parallel decompression, wherein said decompressing the compressed requested data comprises;
examining a plurality of tokens from the compressed requested data in parallel in a current decompression cycle, wherein each of the plurality of tokens describes one or more symbols in the uncompressed requested data;
generating a plurality of selects in parallel in response to said examining the plurality of tokens in parallel, wherein each of the plurality of selects points to a symbol in a combined history window; and
generating the uncompressed requested data comprising the plurality of symbols using the plurality of selects; and
providing the uncompressed requested. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A method for managing memory in a system including one or more memory modules, wherein at least one of the one or more memory modules includes a compression engine, the method comprising:
-
initiating a write of uncompressed data to the one or more memory modules, wherein the uncompressed data is in an uncompressed format;
receiving through the one or more memory modules, the uncompressed data; and
compressing, through the one or more memory modules, the uncompressed data to produce compressed data, wherein the uncompressed data comprises a plurality of symbols, wherein the one or more memory modules compressing the uncompressed data comprises;
a) comparing a plurality of symbols from the uncompressed data with each entry in a history table in a parallel fashion, wherein said comparing produces compare results;
wherein the history table comprises entries, wherein each entry comprises at least one symbol, and wherein the method maintains a current count of prior matches which occurred when previous symbols were compared with entries in the history table;
b) determining match information for each of said plurality of symbols based on the current count and the compare results; and
c) outputting compressed data in response to the match information; and
storing the compressed data on the one or more memory modules. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
-
-
34. A memory module, comprising:
-
one or more memory devices for storing data;
a compression/decompression engine for compressing uncompressed data, the uncompressed data having a plurality of symbols, and for decompressing compressed data, wherein the compressed data comprises a compressed representation of uncompressed data;
wherein the compression/decompression engine is operable to;
receive a first uncompressed data; and
compress the first uncompressed data to produce a first compressed data. - View Dependent Claims (35, 36, 37, 38)
-
-
39. A memory module, comprising:
-
one or more memory devices for storing data a parallel compression engine for compressing data, wherein the parallel compression engine is operable to;
maintain a history table comprising entries, wherein each entry comprises at least one symbol;
receive uncompressed data, wherein the uncompressed data comprises a plurality of symbols;
compare a 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;
output compressed data in response to the match information; and
wherein the parallel compression engine is operable to determine zero or more matches of said plurality of symbols with each entry in the history table.
-
-
40. A memory module, comprising:
-
one or more memory devices for storing data;
a parallel compression engine for compressing data wherein the parallel compression engine comprises;
an input for receiving uncompressed data wherein the uncompressed data comprises a plurality of symbols;
a history table comprising entries, wherein each entry comprises at least one symbol;
a plurality of comparators for comparing a plurality of symbols with entries in the history table in a parallel fashion, wherein the plurality of comparators produce compare results;
match information logic coupled to the plurality of comparators for determining match information for each of said plurality of symbols based on the compare results;
an output coupled to the match information logic for outputting compressed data in response to the match information; and
wherein the match information logic is operable to determine zero or more matches of said plurality of symbols with each entry in the history table.
-
-
41. A computer system including a memory module having an embedded parallel compression/decompression engine, the computer system comprising:
-
a CPU;
system memory which stores data used by said CPU for executing one or more applications, wherein the system memory includes one or more memory modules, wherein at least one of the one or more memory modules includes the parallel compression/decompression engine for compressing data transferred to or from the system memory and for decompressing compressed data, wherein the compressed data comprises a compressed representation of uncompressed data, the uncompressed data having a plurality of symbols, and a memory controller coupled to the system memory and the CPU, wherein the memory controller performs memory control functions for the system memory. - View Dependent Claims (42, 43)
-
-
44. A computer system including a memory module having an embedded parallel compression engine, the computer system comprising:
-
a CPU;
system memory which stores data used by said CPU for executing one or more applications, wherein the system memory includes one or more memory modules, wherein at least one of the one or more memory modules includes the parallel compression engine for compressing data transferred to or from the system memory;
a memory controller coupled to the system memory and the CPU, wherein the memory controller performs memory control functions for the system memory;
wherein the parallel compression engine is operable to;
maintain a history table comprising entries, wherein each entry comprises at least one symbol;
receive uncompressed data, wherein the uncompressed data comprises a plurality of symbols;
compare a 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.
-
-
45. A computer system including a memory module having an embedded parallel compression engine, the computer system comprising:
-
a CPU;
system memory which stores data used by said CPU for executing one or more applications, wherein the system memory includes one or more memory modules, wherein at least one of the one or more memory modules includes the parallel compression engine for compressing data transferred to or from the system memory;
a memory controller coupled to the system memory and the CPU, wherein the memory controller performs memory control functions for the system memory;
wherein the parallel compression engine comprises;
an input for receiving uncompressed data, wherein the uncompressed data comprises a plurality of symbols;
a history table comprising entries, wherein each entry comprises at least one symbol;
a plurality of comparators for comparing a plurality of symbols with entries in the history table in a parallel fashion, wherein the plurality of comparators produce compare results;
match information logic coupled to the plurality of comparators for determining match information for each of said plurality of symbols based on the compare results; and
an output coupled to the match information logic for outputting compressed data in response to the match information.
-
-
46. A computer system including a memory module having an embedded parallel decompression engine for decompressing compressed data, wherein the compressed data comprises a compressed representation of uncompressed data, the uncompressed data having a plurality of symbols, the computer system comprising:
-
a CPU;
system memory which stores data used by said CPU for executing one or more applications, wherein the system memory includes one or more memory modules, wherein at least one of the one or more memory modules includes the parallel compression engine for compressing data transferred to or from the system memory;
a memory controller coupled to the system memory and the CPU, wherein the memory controller performs memory control functions for the system memory;
wherein the parallel decompression engine is operable to;
receive the compressed data, wherein the compressed data comprises tokens each describing one or more uncompressed symbols;
examine a plurality of tokens from the compressed data in parallel in a current decompression cycle;
generate a plurality of selects in parallel in response to examining the plurality of tokens in parallel, wherein each of the plurality of selects points to a symbol in a combined history window;
generate uncompressed data comprising the plurality of symbols; and
store the uncompressed plurality of symbols from the current decompression cycle in the combined history window.
-
-
47. A computer system including a memory module having an embedded parallel decompression engine for decompressing compressed data, wherein the compressed data comprises a compressed representation of uncompressed data, the uncompressed data having a plurality of symbols, the computer system comprising:
-
a CPU;
system memory which stores data used by said CPU for executing one or more applications, wherein the system memory includes one or more memory modules, wherein at least one of the one or more memory modules includes the parallel compression engine for compressing data transferred to or from the system memory;
a memory controller coupled to the system memory and the CPU, wherein the memory controller performs memory control functions for the system memory;
wherein the parallel decompression engine comprises;
an input for receiving the compressed data, wherein the compressed data comprises tokens each describing one or more uncompressed symbols;
a combined history window comprising a plurality of uncompressed symbols;
token examination logic operable to examine a plurality of tokens from the compressed data in parallel in a current decompression cycle;
preliminary select generation logic operable to generate a plurality of preliminary selects in parallel in response to the token examination logic examining the plurality of tokens in parallel, wherein each of the plurality of preliminary selects points to an uncompressed symbol in the combined history window or to another of the preliminary selects in the current decompression cycle;
final select generation logic operable to generate a plurality of final selects in parallel in response to the preliminary select generation logic generating the plurality of preliminary selects, wherein each of the plurality of final selects points to an uncompressed symbol in the combined history window;
uncompressed data output logic operable to;
generate the uncompressed data comprising the uncompressed symbols pointed to by the plurality of final selects; and
store the uncompressed symbols from the current decompression cycle in the combined history window; and
an output coupled to the uncompressed data output logic for outputting the plurality of uncompressed symbols in the uncompressed data in response to the decompression of the plurality of tokens.
-
Specification