SIMD Bit Unpack and Decompress Instructions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current processors are not efficiently capable of handling certain data formats, limiting the performance of algorithms that rely on data level parallelism, as they lack direct support for application-specific instructions and the performance of processing units is not increasing at a sufficient rate.

Innovation Solution

The development of specific SIMD instructions such as fixed-width bit unpack, variable-length byte unpack, burst for decompressing run length encoded bit-vectors, onesidx for finding bit set indices, gatherb for fetching bit-vector values, and BitVecCmpRes for comparing value-vectors, which enable efficient processing of data formats by utilizing SIMD architecture.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If SIMD processors are used to perform parallel operations on multiple data items, then throughput per instruction is increased, but the ability to efficiently process particular data formats is reduced

Engineering Contradiction:
Improvethroughput per instructionVSAvoidability to process particular data formats
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent segments the processing task by dividing data into multiple lanes (e.g., 4 lanes of 64-bit integers) within a single SIMD register. Each lane can be independently manipulated through specialized instructions, allowing the processor to handle different data formats efficiently while maintaining high throughput. The segmentation enables parallel processing of heterogeneous data types without sacrificing format-specific optimization.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent changes the parameter of data representation by providing instructions that can dynamically interpret and transform data between different formats (e.g., converting between packed and unpacked representations, changing integer widths). This allows the same SIMD hardware to efficiently process various data formats by changing how data is organized and interpreted rather than requiring separate hardware for each format.

Inventive Principle:
Principle #35Parameter changes

2Device complexity

If processors provide minimal direct support for application specific instructions, then device complexity is reduced, but processing efficiency for particular algorithms is worsened

Engineering Contradiction:
Improveprocessor instruction set complexityVSAvoidalgorithm processing efficiency
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent implements universal SIMD instructions that can handle multiple data formats and algorithmic requirements through a single instruction set. Instructions like the gather instruction can operate on packed data, unpacked data, and data with various element widths, providing algorithm-specific efficiency without requiring separate specialized instructions for each case. This multi-functionality maintains relatively simple hardware while achieving high algorithmic performance.

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

3Ease of operation

If software developers rely on increasing processor speed to improve algorithm performance, then ease of operation is maintained, but the rate of performance improvement is reduced

Engineering Contradiction:
Improvesoftware development simplicityVSAvoidrate of performance improvement
Core Design Contradiction:
Ease of operationVSSpeed

Solution Approach 1:

The patent enables self-service performance optimization by providing compiler-friendly SIMD intrinsics and automatic vectorization capabilities. Software developers can write standard C/C++ code that the compiler automatically transforms into efficient SIMD instructions, or use simple intrinsic functions that map directly to hardware operations. This maintains ease of programming while achieving significant performance improvements through parallel processing without requiring developers to manually optimize for each algorithm.

Inventive Principle:
Principle #25Self-service

Data Source

PatentEP3106979B1Efficient hardware instructions for single instruction multiple data processors
Publication Date: 2023.03.01 ORACLE INT CORP
  • EP3106979B1 patent drawingFigure 1
  • EP3106979B1 patent drawingFigure 2
  • EP3106979B1 patent drawingFigure 3

AI summary

A method and apparatus for efficiently processing data in various formats in a single instruction multiple data ("SIMD") architecture is presented. Specifically, a method to unpack a fixed-width bit values in a bit stream to a fixed width byte stream in a SIMD architecture is presented. A method to unpack variable-length byte packed values in a byte stream in a SIMD architecture is presented. A method to decompress a run length encoded compressed bit-vector in a SIMD architecture is presented. A method to return the offset of each bit set to one in a bit-vector in a SIMD architecture is presented. A method to fetch bits from a bit-vector at specified offsets relative to a base in a SIMD architecture is presented. A method to compare values stored in two SIMD registers is presented.