Variable-Length Symbol Decoding with Parallel Block Preprocessing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Variable length symbol encoding schemes in data compression restrict throughput due to the need for sequential decoding, limiting parallel processing and resulting in inefficient decompression techniques.
Innovation Solution
Divide encoded data into fixed-length blocks, preprocess each block to determine the starting position of symbols in adjacent blocks, and decode in parallel using look-up tables to facilitate high-bandwidth pipelined decompression.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If sequential decoding is used for variable length symbols, then decoding accuracy is maintained, but throughput is significantly restricted
Solution Approach 1:
The patent divides the encoded data stream into fixed-length blocks, where each block contains a predetermined number of bits. This segmentation allows multiple blocks to be processed in parallel while maintaining the variable-length symbol structure within each block, thereby increasing throughput without sacrificing decoding accuracy.
Solution Approach 2:
The patent performs pre-processing on each block before full decoding, including determining starting positions of symbols and preparing lookup tables. This preliminary action enables parallel processing of multiple blocks simultaneously, as the critical path for determining symbol boundaries is resolved in advance for each block.
2Speed
If parallel processing is implemented to improve throughput, then decoding speed increases, but determining symbol starting positions becomes more complex
Solution Approach 1:
The patent determines the starting position of the first symbol in each block during pre-processing, before full decoding begins. By calculating and storing these starting positions in advance (using the block number and predetermined block size), the system enables parallel processing without requiring complex real-time position determination during the critical decoding path.
Solution Approach 2:
The patent introduces lookup tables as an intermediary structure that stores pre-calculated symbol starting positions and decoding information. These tables serve as a mediator between the block structure and the decoding process, allowing parallel decoders to quickly retrieve position information without complex calculations, thus enabling high-speed parallel processing.
3Productivity
If fixed-length blocks are used for parallel processing, then throughput improves, but handling variable length symbols within blocks becomes challenging
Solution Approach 1:
The patent segments the data stream into fixed-length blocks while preserving the variable-length symbol structure within each block. Each block is independently processed, allowing parallel execution of multiple blocks. The fixed block boundaries provide a regular structure for parallel processing, while the internal variable-length symbols maintain their original encoding properties.
Solution Approach 2:
The patent uses lookup tables as an intermediary to bridge the fixed-block structure and variable-length symbols. The tables store pre-computed information about symbol boundaries and lengths within each block, allowing the decoding logic to easily handle variable-length symbols without complex boundary detection, thus simplifying symbol processing within the fixed-block framework.
Data Source
AI summary
A method of decoding data includes: receiving an encoded data stream transmitted as a plurality of variable length symbols; dividing the data stream into a sequence of blocks, each block having a sequence of adjacent bit positions starting a first bit position and ending with a last bit position; pre-processing each block prior to fully decoding each block, wherein pre-processing includes, for each block, selecting a bit position in a current block and determining a starting position of a first symbol in an adjacent block based on the selected bit position, wherein determining is initially performed for the last bit position in the current block, and is repeated sequentially for each preceding bit position through and including the first bit position; and fully decoding each block by decoding a first block starting at the first bit position and decoding each adjacent block starting at the starting position.


