Implicit Variable-Length Distance Coding in LZ Compression
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
LZ-based data compression techniques, while effective in reducing data size, incur high power consumption and latency due to the use of Huffman coding for further reducing length and distance blocks, which adds complexity and energy expenditure during compression and decompression.
Innovation Solution
Implementing implicit variable-length distance coding, which encodes distances without trailing zeros, reducing the bit length required for storage and using a distance table to determine the correct number of bits for decoding, thereby reducing data size and memory usage without the need for Huffman trees.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of substance
If Huffman coding is applied on top of LZ-based compression to further reduce data size, then compression ratio is improved, but power consumption and latency increase due to the complexity of Huffman trees
Solution Approach 1:
The patent extracts and removes the Huffman coding component from the compression pipeline, replacing it with a simpler variable-length encoding scheme that achieves comparable compression ratios without the overhead of Huffman tree construction and traversal, thereby reducing power consumption
Solution Approach 2:
The patent changes the encoding parameters by using variable-length codes directly derived from the LZ compression output without requiring Huffman optimization, adjusting the coding strategy to balance compression efficiency with computational simplicity and energy efficiency
2Loss of substance
If Huffman coding is applied on top of LZ-based compression to further reduce data size, then compression ratio is improved, but latency increases due to the complexity of Huffman trees
Solution Approach 1:
The patent removes the Huffman tree construction and traversal steps from the encoding and decoding processes, eliminating the associated latency while maintaining effective compression through alternative variable-length encoding methods
Solution Approach 2:
The patent skips the intermediate Huffman coding step entirely, transitioning directly from LZ-based compression to final variable-length encoding, thereby reducing the number of processing stages and minimizing latency
3Loss of substance
If Huffman coding is used to encode distances in LZ-based compression, then data size is reduced, but device complexity increases due to Huffman tree storage and processing
Solution Approach 1:
The patent extracts and eliminates the Huffman tree data structure from the system, removing the associated memory storage requirements and complex lookup operations, and replaces it with a simpler encoding approach that reduces device complexity
Solution Approach 2:
The patent replaces the expensive, complex Huffman tree structure with a simpler, more lightweight variable-length encoding scheme that requires minimal storage and processing resources, effectively using a cheaper alternative to achieve the same compression goal
Data Source
AI summary
Lempel-Ziv (LZ)-based data compression employing implicit variable-length distance coding is disclosed. Distances in LZ-based data compression length and distance blocks are implicit variable-length encoded during data compression to avoid padding encoded distances with extra bits (e.g., trailing 0's) that require fewer bits for storage than the number of bits needed to store maximum distance length. This reduces distance bit lengths in compressed output data to further reduce data size. During data compression, a distance table is generated that contains entries each having an assigned base and a number of extra bits to be read in compressed data during data decompression. In this manner, during data decompression, the entries in the distance table can be consulted to determine the number of bits in the variable-encoded distance in the compressed data to be read since the encoded distances can be encoded in the compressed data in fewer bits and without bit padding.


