Zero-Delay Compression FIFO Buffer Using Segmented Storage

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing FIFO buffers face challenges in minimizing delay during data compression and decompression, leading to inefficient memory usage and increased latency in memory operations.

Innovation Solution

A compression FIFO buffer (cFIFO) is introduced, utilizing two FIFOs to store higher and lower words, with control logic that increments memory pointers only when the higher word changes, allowing for zero-delay compression and decompression while reducing memory footprint by leveraging redundant information in data sequences.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If data is compressed in a FIFO buffer, then memory consumption is reduced, but delay increases

Engineering Contradiction:
Improvememory consumptionVSAvoiddelay
Core Design Contradiction:
Quantity of substanceVSLoss of time

Solution Approach 1:

The patent segments data words into high-order and low-order parts, storing only unique high-order values in one FIFO and all low-order values in another FIFO. This segmentation allows compression of redundant high-order data while maintaining zero-delay operation through separate write pointers for each FIFO.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a third FIFO that stores the mapping between compressed high-order values and their original positions. This intermediary structure enables zero-delay decompression by providing direct lookup of the correct high-order value for each low-order value during read operations.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Quantity of substance

If compression is implemented in FIFO, then memory footprint is reduced, but device complexity increases

Engineering Contradiction:
Improvememory footprintVSAvoiddevice complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent divides the compression function into three separate FIFO structures: one for high-order values, one for low-order values, and one for mapping information. This segmentation simplifies the overall design by using standard FIFO components rather than a complex custom compression circuit.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The control logic automatically manages the compression and decompression processes by comparing high-order values and incrementing write pointers only when values change. This self-service mechanism eliminates the need for complex external control circuits while achieving compression.

Inventive Principle:
Principle #25Self-service

3Speed

If all data words are stored in uncompressed FIFO, then access speed is maintained, but memory usage increases

Engineering Contradiction:
Improveaccess speedVSAvoidmemory usage
Core Design Contradiction:
SpeedVSQuantity of substance

Solution Approach 1:

The patent extracts the redundant high-order data from the full data words and stores only unique instances in a separate FIFO. This extraction reduces memory usage by eliminating redundant storage of identical high-order values while maintaining fast access through direct FIFO read operations.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent merges the compressed high-order data with low-order data during the read operation to reconstruct the original data words. This merging occurs in the output stage without affecting the speed of the underlying FIFO operations, thus maintaining fast access while reducing memory usage.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS10007485B2Zero-delay compression FIFO buffer
Publication Date: 2018.06.26 ORACLE INT CORP
  • US10007485B2 patent drawing
  • US10007485B2 patent drawing
  • US10007485B2 patent drawing

AI summary

A compression first in, first out (cFIFO) that includes at least two FIFOs is described. A first FIFO is used to store instances of higher words in data entries, and a second FIFO is used to store corresponding instances of lower words in the data entries. If an instance of the higher word for a data entry has a different value than an immediately preceding stored instance of the higher word associated with at least an immediately preceding data entry which is stored in the second FIFO, memory pointers are incremented so that a subsequent instance of the higher word will be stored in the second FIFO without overwriting the instance of the higher word. Otherwise, the memory pointers are unchanged, which associates the instance of the lower word with the immediately preceding stored instance of the higher word.