SIMD Conditional Move Masking via Integer Register Pipelining

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Prior SIMD architectures face bottlenecks due to the single graphics condition code register and require multiple memory transactions and scratch memory, limiting performance and causing line routing congestion.

Innovation Solution

Generating a mask in a general-purpose integer register and using a conditional-move mask to select operands, eliminating the need for scratch memory and allowing software pipelining of SIMD operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If a single graphics condition code register is used for SIMD operations, then device complexity is reduced, but productivity is limited due to bottlenecks and inability to pipeline operations

Engineering Contradiction:
Improveregister structureVSAvoidSIMD operation throughput
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent divides the single graphics condition code register into multiple separate condition code registers, each associated with a specific SIMD register. This segmentation allows independent operation of each register without blocking others, enabling pipelining and eliminating the bottleneck that limited productivity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent transitions from a single shared condition code register to multiple independent condition code registers, adding the dimension of parallelism. This dimensional change enables concurrent execution of SIMD operations without waiting for a single register to become available, thereby improving throughput.

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

2Reliability

If scratch memory is used for SIMD operations, then reliability is improved by providing a dedicated storage location, but device complexity increases and memory operations are required

Engineering Contradiction:
Improveoperation correctnessVSAvoidmemory operations
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent extracts the condition code storage function from external scratch memory and relocates it into the register file by providing dedicated condition code registers for each SIMD register. This eliminates the need for scratch memory accesses while maintaining reliable operation through dedicated storage locations.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent introduces condition code registers as intermediary storage elements between the SIMD registers and the control logic. These registers mediate the comparison results and enable conditional moves without requiring external memory transactions, reducing complexity while maintaining reliability.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Measurement precision

If multiple memory transactions are performed for SIMD operations, then data accuracy is ensured, but productivity decreases due to memory access latency

Engineering Contradiction:
Improvedata accuracyVSAvoidoperation speed
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The patent enables the register file to serve itself by providing dedicated condition code registers that are directly accessible to the control logic without requiring external memory transactions. This self-service capability maintains data accuracy through dedicated storage while eliminating memory access latency that would reduce productivity.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS7480787B1Method and structure for pipelining of SIMD conditional moves
Publication Date: 2009.01.20 ORACLE AMERICAN INC
  • US7480787B1 patent drawing
  • US7480787B1 patent drawing
  • US7480787B1 patent drawing

AI summary

A mask is first generated in a general-purpose integer register. The mask is generated by executing a single instruction multiple data (SIMD) instruction on a plurality of operands stored in a plurality of registers and by writing the result to the general-purpose integer register. Next, a conditional-move mask is generated in a register using the mask, and then the conditional-move mask is used in selecting operands from the plurality of operands to generate a result in another register.