SSD Compression Engine With Compact History Buffer Encoding
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current solid-state drive (SSD) compression algorithms, such as LZ77-based methods, are costly and inefficient in terms of circuitry and area usage, making it challenging to achieve a good compression ratio while meeting bandwidth and speed requirements.
Innovation Solution
A novel compression and decompression engine design that uses a history buffer of a fixed size, encoding literals and pointers, and optimizing pointer length and offset bits to reduce the number of gates required, resulting in a more efficient and cost-effective solution.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Manufacturing precision
If LZ77-based compression algorithms (e.g., LZ4, LZFX, LZSS, Snappy) are used to achieve high compression ratios, then compression performance is improved, but circuit complexity and area increase significantly (requiring over three million gates)
Solution Approach 1:
The patent divides the compression algorithm into distinct functional segments: a hash function for pattern matching, a separate encoding module for generating compression codes, and a history buffer for storing recent data. This segmentation allows each component to be optimized independently, reducing overall circuit complexity while maintaining compression effectiveness.
Solution Approach 2:
Instead of using traditional LZ77 approaches that require large history buffers and complex matching logic, the patent inverts the approach by using a compact hash-based indexing system that references a smaller history buffer. This inversion enables achieving similar compression ratios with significantly reduced circuit area by accessing historical data through hash indices rather than direct sequential search.
2Manufacturing precision
If larger history buffers are used to improve compression ratios, then more data patterns can be matched, but memory area and access complexity increase
Solution Approach 1:
The patent pre-computes and stores hash indices of historical data patterns in a compact hash table structure. This preliminary action allows the compression engine to quickly retrieve relevant historical patterns without searching through the entire history buffer, thereby maintaining high compression ratios while using minimal buffer area.
Solution Approach 2:
The patent changes the parameter of history buffer size from large (traditional approach) to small (optimized approach), and compensates by optimizing the hash function parameters and index structure. This parameter transformation enables the system to achieve equivalent compression performance with a much smaller physical buffer area.
3Manufacturing precision
If more circuitry is added to achieve better compression, then compression ratio improves, but power consumption and manufacturing cost increase
Solution Approach 1:
The patent employs simple, resource-efficient computational structures such as basic hash functions and direct encoding logic that can be implemented with minimal gates. These lightweight components consume less power and are easier to manufacture, achieving acceptable compression ratios without the high power consumption associated with complex compression algorithms.
4Device complexity
If compression algorithms are simplified to reduce area, then circuit area decreases, but compression ratio and performance deteriorate
Solution Approach 1:
The patent introduces a hash function as an intermediary between the input data and the compression encoding process. This intermediary efficiently identifies repeating patterns by mapping data to hash indices, enabling the simple encoding logic to achieve good compression ratios without requiring complex matching algorithms or large history buffers.
Data Source
AI summary
Compression and decompression technology within a solid-state device (SSD) is disclosed that provides a good compression ratio while taking up less on-chip area. An input interface receives an input stream to be compressed. An output interface provides a compressed stream. A history buffer is of a fixed size that is a fraction of a size of a data buffer. Processing logic encodes into the compressed stream element types, literals and pointers, the latter which reference copies of data found elsewhere within the history buffer during compression. The history buffer may be multiple banks in width, where the data is loaded from the input stream sequentially across rows of the banks. The decompression side may be similarly designed, optionally with a different number of banks. The pointers may be a fixed two bytes including four bits for length and eleven bits for offset of back reference to a copy (or other combination).


