Parallel Huffman Coding Using Prefix-Length and Frequency Tables

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing memory devices face challenges in achieving low memory space requirements, low complexity, high throughput, and near-optimum compression due to the complexity of parallelizing entropy coding techniques, particularly in decoders.

Innovation Solution

A memory device with a processor that generates and processes a Huffman tree to create a prefix length table, logarithm frequency table, and cumulative frequency table, allowing for parallel encoding and decoding using bitwise operations and table lookups, thereby generating a compressed bitstream and symbol stream efficiently.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of substance

If entropy coding techniques are used for compression, then compression ratio is improved, but device complexity increases due to difficulty in parallelization

Engineering Contradiction:
Improvedata redundancyVSAvoidparallelization complexity
Core Design Contradiction:
Loss of substanceVSDevice complexity

Solution Approach 1:

The patent divides the entropy coding process into independent parallel segments by processing multiple symbols simultaneously through multiple processors. Each processor handles a portion of the symbol stream independently, allowing parallel execution while maintaining the compression benefits of entropy coding. This segmentation resolves the contradiction by enabling parallelization without requiring complex synchronization mechanisms.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary actions by pre-computing and storing frequency tables, cumulative frequency tables, and Huffman code mappings in memory before the actual encoding process. These pre-computed tables allow processors to quickly lookup and encode symbols without performing complex calculations in real-time, reducing the complexity of parallel execution while maintaining high compression ratios.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If parallel processing is implemented to increase throughput, then productivity is improved, but memory space requirement increases

Engineering Contradiction:
Improveencoding throughputVSAvoidmemory space
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent assigns different memory regions and data structures to different processors, allowing each processor to access only the specific tables and data it needs for its portion of the work. This local allocation of memory resources reduces the total memory footprint compared to providing full tables to all processors, while still enabling high throughput through parallel processing.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent uses compact representations and shared read-only tables that can be copied or referenced by multiple processors without requiring large amounts of unique memory per processor. The frequency tables and Huffman mappings are stored once and accessed by multiple processors, reducing overall memory requirements while maintaining parallel processing capability.

Inventive Principle:
Principle #26Copying

3Productivity

If complex parallel techniques are used to achieve high throughput, then productivity is improved, but ease of manufacture worsens due to implementation complexity

Engineering Contradiction:
Improvedecoding throughputVSAvoidimplementation complexity
Core Design Contradiction:
ProductivityVSEase of manufacture

Solution Approach 1:

The patent implements self-service mechanisms where the decoding process automatically synchronizes processors and manages its own state without requiring complex external control. Each processor independently manages its own decoding state and progresses through the symbol stream at its own pace, eliminating the need for complex inter-processor synchronization logic and resynchronization markers, thereby simplifying implementation while maintaining high throughput.

Inventive Principle:
Principle #25Self-service

4Loss of substance

If Huffman coding is used to achieve near-optimum compression, then loss of substance is reduced, but device complexity increases due to difficulty in operating in parallel

Engineering Contradiction:
Improveinformation redundancyVSAvoidparallel operation complexity
Core Design Contradiction:
Loss of substanceVSDevice complexity

Solution Approach 1:

The patent segments the Huffman encoding process into independent parallel operations where multiple processors can simultaneously encode different symbols using the same Huffman tree. Each processor maintains its own encoding state and progresses independently through the symbol stream, allowing parallel execution of Huffman coding without requiring complex synchronization, thus achieving near-optimum compression with reduced parallelization complexity.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentEP4307567A1Low complexity optimal parallel huffman encoder and decoder
Publication Date: 2024.01.17 SAMSUNG DISPLAY CO LTD
  • EP4307567A1 patent drawingFigure 1
  • EP4307567A1 patent drawingFigure 2A
  • EP4307567A1 patent drawingFigure 2B

AI summary

A memory device includes a memory; and at least one processor configured to: obtain a symbol stream including a plurality of symbols; determine a Huffman tree corresponding to the symbol stream, wherein each symbol of the plurality of symbols is assigned a corresponding prefix code from among a plurality of prefix codes based on the Huffman tree; generate a prefix length table based on the Huffman tree, wherein the prefix length table indicates a length of the corresponding prefix code for each symbol; generate a logarithm frequency table based on the prefix length table, wherein the logarithm frequency table indicates a logarithm of a frequency count for each symbol, generate a cumulative frequency table which indicates a cumulative frequency count corresponding to each symbol; generate a compressed bitstream by iteratively applying an encoding function to the plurality of symbols based on the logarithm frequency table and the cumulative frequency table; and store the compressed bitstream in the memory.