Sliding-Window Decompression Pipeline With Queued History Buffer Writes
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current data compression and decompression systems face inefficiencies in memory access and storage due to the need to frequently read from and write to history buffers for Lempel-Ziv (LZ) compressed data, leading to potential collisions and pipeline stalls.
Innovation Solution
An integrated circuit with a history buffer memory using single-ported memory banks and a write queue that coalesces write operations, allowing concurrent read and write operations while prioritizing reads over writes, reducing collisions and pipeline stalls by using a write queue to handle decompressed data before writing it to the history buffer memory.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If multi-ported memory banks are used to allow concurrent read and write operations, then memory access efficiency is improved, but device complexity and cost increase
Solution Approach 1:
A write queue is introduced as an intermediary component between the decompression logic and the history buffer memory. The write queue temporarily holds write data and coordinates access timing, allowing the single-ported memory to efficiently handle sequential read-write operations without requiring complex multi-ported memory structures.
Solution Approach 2:
The memory access operations are segmented into distinct phases: read operations are performed first to retrieve compression history data, then write operations are performed to store decompressed data. This temporal segmentation allows a single memory port to handle both operations sequentially, avoiding the need for simultaneous multi-ported access.
2Reliability
If frequent read and write operations are performed on history buffer memory, then decompression functionality is maintained, but memory access collisions and pipeline stalls increase
Solution Approach 1:
Read operations are performed before write operations in each decompression cycle. By retrieving the necessary history buffer data first, the system ensures that decompression logic has the required information before generating write data, preventing write operations from blocking subsequent read operations and avoiding pipeline stalls.
Solution Approach 2:
The write queue serves as a mediator that buffers write data until the memory is ready to accept it. This decouples the write generation process from the actual write execution, allowing read operations to proceed without being blocked by write operations, thereby maintaining high decompression throughput.
3Device complexity
If single-ported memory banks are used to reduce complexity and cost, then concurrent read and write operations are limited, but memory access efficiency deteriorates
Solution Approach 1:
Memory access is organized into periodic cycles where read operations and write operations are separated into distinct time slots. During each cycle, the single memory port first service read requests, then service write requests. This periodic scheduling ensures that no conflicts occur while maintaining efficient utilization of the memory resource.
Solution Approach 2:
The write queue acts as a mediator that smooths out write operation timing. By accumulating write data and releasing it in coordinated batches, the write queue prevents write operations from conflicting with read operations, allowing the single-ported memory to maintain high efficiency despite its limited concurrency capability.
Data Source
AI summary
Decompressing sliding window compressed data requires reference to previously decompressed character sequences. Previously decompressed data is stored in a history buffer to satisfy these ‘back references.’ As each decompressed/decoded character is emitted, it is stored in this history buffer. Thus, for each decompressed character that is emitted, the history buffer may need to be accessed at least twice—once to retrieve the backreference, and once to store the emitted character. A pipeline architecture is disclosed that stores decompressed characters in a write queue that coalesces eight or more emitted characters before they are stored in the history buffer memory. This reduces collisions between accessing the history buffer memory to retrieve the backreferences and the storing of the emitted character. This also allows the use of a single-ported memory which is less expensive than a multi-ported memory.


