Vector Zero-Based Decompression Using Masks and Shifted Copies

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing zero-based decompression methods are inefficient due to their iterative and data element-by-data element evaluation approach, particularly in handling large data streams with frequent zero values, which is common in graphics processing.

Innovation Solution

The implementation of a vector-based instruction set architecture that utilizes simple shifts and masked moves instead of expensive shuffle and permute instructions, allowing for efficient decompression of Run-Length Encoding (RLE) data by generating masks, counting trailing zeros, and performing masked copies to efficiently decode zero-based streams.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If iterative data element-by-data element evaluation is used for zero-based decompression, then the decompression can be performed with simple instructions, but the processing speed is slow and efficiency is low

Engineering Contradiction:
Improvedecompression speedVSAvoidinstruction complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the decompression task into vector-level operations rather than element-level operations. By using SIMD instructions to process multiple data elements simultaneously, the decompression is divided into parallel processing units that can handle multiple zero-based runs in a single instruction cycle, thereby improving productivity without significantly increasing device complexity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent transitions from scalar processing to vector processing by adding a dimension of parallelism. Instead of processing one data element at a time in sequence, the invention uses vector registers to process multiple data elements simultaneously, effectively moving from a 1D sequential processing model to a higher-dimensional parallel processing model that improves decompression speed.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Ease of operation

If shuffle and permute instructions are used for zero-based decompression, then data can be rearranged flexibly, but the computational overhead and processing time increase significantly

Engineering Contradiction:
Improvedata rearrangement capabilityVSAvoidprocessing time
Core Design Contradiction:
Ease of operationVSLoss of time

Solution Approach 1:

The patent extracts and eliminates the need for expensive shuffle and permute instructions by using a different approach based on mask generation and selective copying. Instead of rearranging data through complex shuffle operations, the invention generates masks that directly identify zero-based runs and copies the appropriate data elements, thereby maintaining data rearrangement capability while significantly reducing processing time.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent uses mask-based copying instead of shuffle/permute operations. By generating masks that identify valid data elements and using conditional copy instructions, the invention achieves flexible data rearrangement through simple copy operations that are much faster than traditional shuffle and permute instructions, thus reducing the loss of time.

Inventive Principle:
Principle #26Copying

3Productivity

If vector-based instructions with mask generation and counting trailing zeros are used, then decompression efficiency improves significantly, but the instruction set complexity increases

Engineering Contradiction:
Improvedecompression efficiencyVSAvoidinstruction set complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent employs universal vector instructions that can perform multiple functions. The mask generation instruction can be used for both identifying zero-based runs and for other masking operations, while the count trailing zeros instruction serves both decompression and other data processing tasks. This multi-functionality allows the instruction set to remain relatively simple while achieving high decompression efficiency.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The patent changes the parameters of existing vector instructions to optimize them for zero-based decompression. By adjusting mask generation parameters and using variable shift amounts based on trailing zero counts, the invention achieves high decompression efficiency without requiring entirely new instructions, thus limiting the increase in instruction set complexity.

Inventive Principle:
Principle #35Parameter changes

4Device complexity

If simple shifts and masked moves are used instead of shuffle and permute instructions, then computational overhead is reduced, but data manipulation flexibility is limited

Engineering Contradiction:
Improvecomputational overheadVSAvoiddata manipulation flexibility
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The patent performs preliminary mask generation that encodes the desired data manipulation pattern. By pre-computing masks that capture the structure of zero-based runs, the invention enables simple shift and copy operations to achieve complex data rearrangement patterns that would otherwise require multiple shuffle and permute instructions, thus reducing computational overhead while maintaining flexibility through the programmable mask generation step.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10540177B2Efficient zero-based decompression
Publication Date: 2020.01.21 INTEL CORP
  • US10540177B2 patent drawing
  • US10540177B2 patent drawing
  • US10540177B2 patent drawing

AI summary

A processor core including a hardware decode unit to decode vector instructions for decompressing a run length encoded (RLE) set of source data elements and an execution unit to execute the decoded instructions. The execution unit generates a first mask by comparing set of source data elements with a set of zeros and then counts the trailing zeros in the mask. A second mask is made based on the count of trailing zeros. The execution unit then copies the set of source data elements to a buffer using the second mask and then reads the number of RLE zeros from the set of source data elements. The buffer is shifted and copied to a result and the set of source data elements is shifted to the right. If more valid data elements are in the set of source data elements this is repeated until all valid data is processed.