System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
First Claim
1. A data compression system comprising:
- a first plurality of compression engines, wherein each of the first plurality of compression engines implements a different respective data compression algorithm, wherein at least one of the first plurality of compression engines implements a parallel data compression algorithm, and wherein each of the first plurality of compression engines is configured to;
receive uncompressed data; and
compress the uncompressed data using its respective data compression algorithm;
wherein the first plurality of compression engines produce a plurality of different versions of the compressed data;
decision logic coupled to the first plurality of compression engines and configured to;
select one of the plurality of different versions of the compressed data based upon one or more predetermined metrics; and
output the selected compressed data.
5 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of a compression/decompression (codec) system may include a plurality of data compression engines each implementing a different data compression algorithm. A codec system may be designed for the reduction of data bandwidth and storage requirements and for compressing/decompressing data. Uncompressed data may be compressed using a plurality of compression engines in parallel, with each engine compressing the data using a different lossless data compression algorithm. At least one of the data compression engines may implement a parallel lossless data compression algorithm designed to process stream data at more than a single byte or symbol at one time. The plurality of different versions of compressed data generated by the different compression algorithms may be examined to determine an optimal version of the compressed data according to one or more predetermined criteria. A codec system may be integrated in a processor, a system memory controller or elsewhere within a system.
-
Citations
73 Claims
-
1. A data compression system comprising:
-
a first plurality of compression engines, wherein each of the first plurality of compression engines implements a different respective data compression algorithm, wherein at least one of the first plurality of compression engines implements a parallel data compression algorithm, and wherein each of the first plurality of compression engines is configured to;
receive uncompressed data; and
compress the uncompressed data using its respective data compression algorithm;
wherein the first plurality of compression engines produce a plurality of different versions of the compressed data;
decision logic coupled to the first plurality of compression engines and configured to;
select one of the plurality of different versions of the compressed data based upon one or more predetermined metrics; and
output the selected compressed data. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A data compression system comprising:
-
a plurality of compression engines, wherein each of the plurality of compression engines implements a different data compression algorithm, wherein at least one of the plurality of compression engines implements a parallel lossless data compression algorithm;
and wherein the plurality of compression engines are configured to;
receive uncompressed data; and
compress the uncompressed data using the different data compression algorithms to produce a plurality of different versions of the compressed data;
decision logic coupled to the plurality of compression engines and configured to;
select one of the plurality of different versions of the compressed data as a most qualified version of the compressed data based upon one or more predetermined metrics; and
output the most qualified version of the compressed data. - View Dependent Claims (20, 21, 22, 23)
-
-
24. A data compression system comprising:
-
a plurality of compression engines, wherein each of the plurality of compression engines implements a different data compression algorithm, wherein at least one of the plurality of compression engines implements a parallel lossless data compression algorithm;
first logic coupled to the plurality of compression engines and configured to;
receive uncompressed data;
send the uncompressed data to each of the plurality of compression engines;
wherein each of the plurality of compression engines is configured to;
receive the uncompressed data from the first logic;
compress the uncompressed data using a data compression algorithm implemented by the particular compression engine to produce a version of compressed data; and
output the compressed data;
second logic coupled to the plurality of compression engines and configured to;
receive from the plurality of compression engines a plurality of different versions of the compressed data each compressed with a different compression algorithm; and
select one of the plurality of different versions of the compressed data based upon one or more predetermined metrics; and
output the selected compressed data. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31)
-
-
32. A system comprising:
-
a processor;
a memory coupled to the processor and operable to store data for use by the processor;
data compression logic coupled to the memory, comprising;
a plurality of compression engines, wherein each of the plurality of compression engines implements a different respective data compression algorithm, wherein at least one of the plurality of compression engines implements a parallel data compression algorithm, and wherein each of the plurality of compression engines is configured to;
receive uncompressed data; and
compress the uncompressed data using its respective data compression algorithm;
wherein the plurality of compression engines produce a plurality of different versions of the compressed data;
decision logic coupled to the plurality of compression engines and configured to;
select one of the plurality of different versions of the compressed data based upon one or more predetermined metrics; and
output the selected compressed data. - View Dependent Claims (33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45)
-
-
46. A method for compressing data in a system comprising a memory, the method comprising:
-
receiving uncompressed data;
providing the uncompressed data to a plurality of compression engines, wherein each of the plurality of compression engines implements a different respective data compression algorithm;
the plurality of compression engines compressing the uncompressed data using the different respective data compression algorithms, thereby producing a plurality of different versions of the compressed data, wherein said compressing comprises at least one of the plurality of compression engines compressing the uncompressed data using a parallel lossless data compression algorithm; and
selecting one of the plurality of different versions of the compressed data based upon one or more predetermined metrics. - View Dependent Claims (47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58)
-
-
59. A method for compressing data in a system comprising a memory, the method comprising:
-
receiving uncompressed data;
providing the uncompressed data to a plurality of compression engines, wherein each of the plurality of compression engines implements a different data compression algorithm;
the plurality of compression engines compressing the uncompressed data using a plurality of different data compression algorithms to produce a plurality of different versions of the compressed data, wherein said compressing includes at least one of the plurality of compression engines compressing the uncompressed data using a parallel lossless dictionary-based data compression algorithm; and
selecting one of the plurality of different versions of the compressed data as a most qualified version of the compressed data based upon one or more predetermined metrics. - View Dependent Claims (60, 61, 62, 63, 64, 65, 66)
-
-
67. A data compression system comprising:
-
a plurality of compression engines, wherein each of the plurality of compression engines implements a different respective parallel dictionary-based data compression algorithm, and wherein each of the plurality of compression engines is configured to;
receive uncompressed data, wherein the uncompressed data comprises a plurality of symbols; and
compress the uncompressed data using its respective data compression algorithm, wherein each of the plurality of compression engines is operable to compare each of a plurality of received symbols with each of a plurality of entries in a history table concurrently;
wherein the plurality of compression engines produce a plurality of different versions of the compressed data;
decision logic coupled to the plurality of compression engines and configured to;
select one of the plurality of different versions of the compressed data based upon one or more predetermined metrics; and
output the selected compressed data. - View Dependent Claims (68, 69, 70, 71, 72)
-
-
73. A data compression system comprising:
-
a first plurality of compression engines, wherein each of the first plurality of compression engines implements a different respective data compression algorithm, wherein at least one of the first plurality of compression engines implements a parallel data compression algorithm, and wherein each of the first plurality of compression engines is configured to;
receive uncompressed data; and
compress the uncompressed data using its respective data compression algorithm;
wherein the first plurality of compression engines produce a plurality of different versions of the compressed data; and
decision logic coupled to the first plurality of compression engines and configured to;
select one of the plurality of different versions of the compressed data based upon a plurality of predetermined metrics; and
output the selected compressed data.
-
Specification