Parallel Symbol Decoder Layout for Variable-Length Decompression

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In data compression algorithms, the variable length of symbols makes parallel decoding operations inefficient due to the unknown starting location of the next symbol in a compressed data stream, complicating the decompression process.

Innovation Solution

A data decompressor system that uses multiple symbol decoders to speculatively decode windows of data in parallel, with a symbol strider selecting valid decoder outputs based on the size of previously decoded symbols, allowing for efficient identification of the next valid symbol's location across windows.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple symbol decoders operate in parallel to decode variable length symbols, then the decompression speed is improved, but the difficulty of identifying valid symbols increases due to variable lengths

Engineering Contradiction:
Improvedecompression speedVSAvoiddifficulty of identifying valid symbols
Core Design Contradiction:
ProductivityVSDifficulty of detecting and measuring

Solution Approach 1:

The patent applies preliminary action by having multiple symbol decoders speculatively decode symbols starting at different positions in parallel before knowing which position is actually valid. Each decoder preemptively processes a window of data assuming it contains the start of a valid symbol, and the results are later validated by checking if the decoded symbol length aligns with the actual data structure. This allows the system to identify valid symbols efficiently without sequential searching.

Inventive Principle:
Principle #10Preliminary action

2Loss of substance

If variable length symbols are used for data compression, then the compression ratio is improved, but the complexity of the decoding process increases

Engineering Contradiction:
Improvedata sizeVSAvoiddecoding process complexity
Core Design Contradiction:
Loss of substanceVSDevice complexity

Solution Approach 1:

The patent applies segmentation by dividing the compressed data stream into multiple overlapping windows, with each window being processed by a separate symbol decoder. This segmentation allows parallel processing of different potential symbol starting positions simultaneously. The complexity is distributed across multiple simple decoder units rather than requiring one complex sequential decoder, making the overall system more manageable while maintaining efficient decompression.

Inventive Principle:
Principle #1Segmentation

3Productivity

If parallel decoding operations are performed on variable length symbols, then the processing throughput is improved, but the accuracy of symbol boundary detection deteriorates

Engineering Contradiction:
Improveprocessing throughputVSAvoidsymbol boundary detection accuracy
Core Design Contradiction:
ProductivityVSMeasurement precision

Solution Approach 1:

The patent applies feedback by using the decoded symbol length information from each parallel decoder to validate whether that decoder correctly identified a valid symbol boundary. The system checks if the decoded length is consistent with the expected symbol structure, and only accepts results from decoders that pass this validation. This feedback mechanism ensures accurate symbol boundary detection even while multiple decoders operate in parallel, preventing false positives from incorrect boundary identifications.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS9819359B1Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines
Publication Date: 2017.11.14 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9819359B1 patent drawing
  • US9819359B1 patent drawing
  • US9819359B1 patent drawing

AI summary

In some data compression algorithms and/or standards, the compressed data comprises variable length symbols. A set of parallel decoders speculatively decode/decompress a window (i.e., sub-block) of data. Each of the decoders attempts to decode/decompress a symbol that starts at a different location in the compressed data block. Once the decoders have finished decoding a symbol (or determined that a valid symbol does not begin at the beginning of the window assigned to that decoder), a symbol strider selects the decoder outputs corresponding to valid symbols. The symbol strider successively selects decoder outputs based on the size of the previous symbols that were found to be valid. When the next valid symbol begins outside the current window, its location is stored to indicate the location of the next valid symbol in a subsequent window.