SIMD Address Conflict Detection via Vector Mask Generation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern processors face challenges in efficiently processing SIMD operations due to address conflicts and the need for conflict detection in scatter-reduce operations, particularly in applications like histogram calculations where updates to memory addresses can be random, leading to difficulties in preserving scalar program order and ensuring unique memory addresses.

Innovation Solution

The introduction of SIMD address conflict detection instructions and logic within processors, which utilize conflict masks and instructions like VPCONFLICT and VPOPCNT to detect and resolve conflicts, allowing for efficient SIMD address conflict resolution without dependent computations through memory.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If SIMD operations are used to process multiple data elements concurrently, then processing throughput is improved, but address conflicts occur when multiple indices point to the same memory location

Engineering Contradiction:
Improveprocessing throughputVSAvoidaddress conflict detection
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent performs conflict detection before executing the scatter operation by comparing each index against previously seen indices using population count instructions. This preliminary detection identifies potential address conflicts early, allowing the system to maintain scalar program order and ensure reliable memory access patterns while still benefiting from SIMD throughput in conflict-free scenarios.

Inventive Principle:
Principle #10Preliminary action

2Adaptability or versatility

If scatter operations update random memory locations, then application flexibility is improved, but maintaining scalar program order becomes difficult

Engineering Contradiction:
Improvememory access flexibilityVSAvoidprogram order preservation
Core Design Contradiction:
Adaptability or versatilityVSStability of the object's composition

Solution Approach 1:

The patent introduces an intermediary conflict detection mechanism that mediates between flexible random memory access and program order requirements. By using population count instructions to detect conflicts and generating appropriate control signals, the system maintains scalar program order while still allowing scatter operations to update random memory locations flexibly.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If conflict detection is performed to ensure unique memory addresses, then memory access reliability is improved, but processing complexity increases

Engineering Contradiction:
Improvememory access reliabilityVSAvoidconflict detection complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent replaces complex mechanical conflict detection mechanisms with efficient bit manipulation instructions, specifically population count (POPCNT) and leading zero count (LZCNT). These instructions leverage the processor's existing arithmetic logic units to perform conflict detection through bitwise operations, significantly reducing the complexity compared to traditional comparison-based approaches while maintaining high memory access reliability.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentUS9411584B2Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality
Publication Date: 2016.08.09 INTEL CORP
  • US9411584B2 patent drawing
  • US9411584B2 patent drawing
  • US9411584B2 patent drawing

AI summary

Instructions and logic provide SIMD address conflict detection functionality. Some embodiments include processors with a register with a variable plurality of data fields, each of the data fields to store an offset for a data element in a memory. A destination register has corresponding data fields, each of these data fields to store a variable second plurality of bits to store a conflict mask having a mask bit for each offset. Responsive to decoding a vector conflict instruction, execution units compare the offset in each data field with every less significant data field to determine if they hold a matching offset, and in corresponding conflict masks in the destination register, set any mask bits corresponding to a less significant data field with a matching offset. Vector address conflict detection can be used with variable sized elements and to generate conflict masks to resolve dependencies in gather-modify-scatter SIMD operations.