Cross-Lane Unpack Instructions for 256-Bit SIMD Registers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current SIMD architectures lack cross-lane unpack instructions, which complicates data processing and requires additional operations to rearrange results, especially for applications like Structure of Arrays (SoA) to Array of Structures (AoS) algorithms, and do not fully utilize the capabilities of newer 256-bit registers.

Innovation Solution

Introducing cross-lane unpack instructions that specify different unpack operations for each lane, such as unpack low and unpack high operations, allowing processors to perform these operations directly on 256-bit operands with multiple lanes, enabling efficient data unpacking and interleaving across lanes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If traditional SIMD architectures use standard unpack instructions, then unpacking operations can be performed, but additional operations are required to rearrange data across lanes and programming becomes complicated

Engineering Contradiction:
Improveprogramming simplicityVSAvoiddata processing efficiency
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The patent introduces new unpack instructions with modified parameters that enable cross-lane data movement. Specifically, new control fields are added to the instruction encoding that specify different unpack behaviors for different lanes, allowing data to be unpacked and rearranged across lane boundaries in a single operation rather than requiring multiple traditional unpack instructions followed by shuffle operations.

Inventive Principle:
Principle #35Parameter changes

2Adaptability or versatility

If processors use existing unpack instructions for 256-bit registers, then operations can be performed on packed data, but the full capabilities of 256-bit registers with multiple lanes are not utilized

Engineering Contradiction:
Improveregister capability utilizationVSAvoidinstruction set complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent segments the 256-bit register into distinct lanes (typically two 128-bit lanes) and introduces unpack instructions that can operate independently on each lane with different parameters. This allows selective unpacking of low-order or high-order data elements from different lanes, enabling fine-grained control over data arrangement while fully utilizing the 256-bit register width.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent enables different unpack operations to be applied to different lanes within the same instruction. For example, one lane can perform unpack low while another lane performs unpack high, allowing each lane to be optimized for its specific data arrangement needs without requiring separate instructions for each lane.

Inventive Principle:
Principle #3Local quality

3Reliability

If applications like SoA to AoS algorithms require data rearrangement, then correct results can be achieved, but processing requires multiple operations and additional time

Engineering Contradiction:
Improvealgorithm correctnessVSAvoidprocessing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent merges multiple operations (unpacking and cross-lane shuffling) into a single unified instruction. The new unpack instructions combine the data extraction function with the lane-crossing rearrangement function, eliminating the need for separate shuffle or permutation instructions that would otherwise be required to achieve the same result for SoA to AoS conversions.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS9086872B2Unpacking packed data in multiple lanes
Publication Date: 2015.07.21 INTEL CORP
  • US9086872B2 patent drawing
  • US9086872B2 patent drawing
  • US9086872B2 patent drawing

AI summary

Receiving an instruction indicating first and second operands. Each of the operands having packed data elements that correspond in respective positions. A first subset of the data elements of the first operand and a first subset of the data elements of the second operand each corresponding to a first lane. A second subset of the data elements of the first operand and a second subset of the data elements of the second operand each corresponding to a second lane. Storing result, in response to instruction, including: (1) in first lane, only lowest order data elements from first subset of first operand interleaved with corresponding lowest order data elements from first subset of second operand; and (2) in second lane, only highest order data elements from second subset of first operand interleaved with corresponding highest order data elements from second subset of second operand.