Parallel Symbol Decoding for Variable-Length Decompression

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Efficient parallel decoding of data compressed into variable length symbols is challenging due to the unknown starting location of the next symbol in a compressed data stream, making it difficult to parallelize decompression operations effectively.

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, ensuring efficient decomposition by determining the location of the next valid symbol.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple symbol decoders operate in parallel to decode variable length symbols, then decompression speed is improved, but determining the correct starting location of each symbol becomes more complex

Engineering Contradiction:
Improvedecompression speedVSAvoidsymbol location determination complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent performs preliminary speculative decoding at multiple potential starting locations before knowing which location is correct. Multiple symbol decoders speculatively decode symbols starting at different positions in parallel, and the correct decoded symbols are identified afterward by validation, allowing the system to prepare multiple possibilities in advance without sequential processing

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent segments the decompression task by dividing the data stream into multiple potential symbol starting locations, with each symbol decoder handling a specific segment or starting position. This segmentation allows parallel processing of different symbol candidates simultaneously, transforming a single-threaded complex problem into multiple simpler parallel tasks

Inventive Principle:
Principle #1Segmentation

2Loss of time

If speculative decoding is performed at multiple starting locations, then the location of the next valid symbol is determined faster, but more decoding operations are required

Engineering Contradiction:
Improvetime to determine next symbol locationVSAvoidnumber of decoding operations
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The system performs preliminary speculative decoding at multiple potential starting locations simultaneously to determine where the next valid symbol actually begins. By preparing multiple decoding possibilities in parallel before validation, the system avoids sequential searching and identifies the correct symbol location faster, despite performing more total decoding operations

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent creates multiple copies of the decoding functionality at different starting positions, with each copy attempting to decode a symbol from its assumed starting location. These parallel decoding copies are then validated to identify which one produced the correct symbol, allowing the system to explore multiple possibilities simultaneously rather than one at a time

Inventive Principle:
Principle #26Copying

Data Source

PatentEP3552313B1Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines
Publication Date: 2021.07.21 MICROSOFT TECHNOLOGY LICENSING LLC
  • EP3552313B1 patent drawingFigure 1
  • EP3552313B1 patent drawingFigure 2
  • EP3552313B1 patent drawingFigure 3

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.