SIMD Shift Instruction with Per-Element Shift Counts

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current approaches for handling packed data, such as co-processor solutions and instruction-level solutions, face limitations in flexibility, overhead, and scalability, especially when dealing with data widths larger than 64 bits, and require significant control logic and multiple hardware copies in modern CPU designs.

Innovation Solution

A SIMD shift instruction that allows each element in a vector to be associated with a different shift count, enabling flexible and efficient shifting of data elements by using a shift count register to specify unique shift operations for each output element, thereby allowing bits from anywhere in the source register to be shifted into the output register.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If co-processor solutions are used for handling packed data, then data packing and unpacking can be performed, but significant overhead is required for controlling the co-processor's actions and gathering its results

Engineering Contradiction:
Improvedata packing and unpacking capabilityVSAvoidcontrol overhead and result gathering time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent merges the data packing/unpacking functionality directly into the main CPU instruction set rather than using a separate co-processor. The shift instruction integrates multiple data elements and shift counts into a single instruction execution, eliminating the need for separate co-processor control sequences and result gathering operations.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The shift instruction is designed to handle multiple data elements simultaneously with different shift counts, making it a universal instruction that can perform various packing and unpacking operations. This multi-functional instruction replaces multiple specialized co-processor operations, reducing overhead and improving efficiency.

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

2Productivity

If co-processor solutions are used for handling packed data, then data packing and unpacking can be performed, but multiple copies of co-processor hardware are needed in modern, highly-threaded CPU designs

Engineering Contradiction:
Improvedata packing and unpacking capabilityVSAvoidhardware structure and copying requirements
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent combines the data packing/unpacking functionality into the main CPU architecture rather than requiring separate co-processor hardware. The shift instruction uses existing CPU registers and execution units, eliminating the need for multiple co-processor copies in multi-threaded CPU designs.

Inventive Principle:
Principle #5Merging (Combining)

3Device complexity

If instruction-level solutions such as parallel deposit and parallel extract are used, then less overhead and relatively less logic are required, but separate hardware structures and significant control logic are needed

Engineering Contradiction:
Improvehardware logic and control structuresVSAvoidflexibility and data width scalability
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The shift instruction uses dynamic shift counts stored in vector registers rather than fixed hardware control logic. This allows the same instruction to handle different data widths and shift amounts by loading different shift count values from the vector register, providing flexibility without requiring multiple specialized hardware structures.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The instruction changes parameters (shift counts) dynamically based on data width requirements. By loading different shift count values from the vector register, the same shift instruction can efficiently handle various data widths without requiring separate hardware paths for each width.

Inventive Principle:
Principle #35Parameter changes

4Device complexity

If current instruction-level solutions are used, then less overhead and relatively less logic are required, but they do not extend well when dealing with data widths larger than 64 bits

Engineering Contradiction:
Improvehardware logicVSAvoiddata width scalability
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The shift instruction is designed as a universal instruction that can handle various data widths (8-bit, 16-bit, 32-bit, 64-bit, and beyond) by using vector registers to store different shift counts. This single instruction pattern can be adapted to process different data widths without requiring width-specific hardware implementations.

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

Data Source

PatentUS9323524B2Shift instruction with per-element shift counts and full-width sources
Publication Date: 2016.04.26 ORACLE INT CORP
  • US9323524B2 patent drawing
  • US9323524B2 patent drawing
  • US9323524B2 patent drawing

AI summary

Techniques for packing and unpacking data from a source register using a particular shift instruction are provided. The shift instructions takes, as input, a source register that contains a plurality of elements and a shift count register that contains a plurality of shift counts. Each shift count indicates how much to shift bits from the source registers. Where “source” bits are shifted (or copied) to in an output register depends on the position of the shift count in the shift count register. The shift counts may correspond to one or more bytes from the source register. The shift instruction may initiate a left shift operation or a right shift operation.