Vector Population Count for SIMD Address Conflict Resolution

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 resolution, particularly in applications like histogram calculations where updates to memory addresses can be random, leading to duplicate addresses and difficulties in preserving scalar program order.

Innovation Solution

The introduction of SIMD vector population count instructions and conflict detection mechanisms that allow for efficient conflict resolution by counting bits set to one in registers, generating iteration counts and completion masks, and using conflict masks to resolve dependencies in gather-modify-scatter operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If SIMD gather-scatter operations are used to process sparse locations concurrently, then productivity is improved, but address conflicts occur leading to duplicate addresses and loss of scalar program order

Engineering Contradiction:
Improveconcurrent processing capabilityVSAvoidscalar program order preservation
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent applies preliminary action by performing conflict detection and resolution before the actual gather-scatter operations execute. The processor detects potential address conflicts in advance, resolves them by adjusting indices, and then proceeds with concurrent SIMD operations, ensuring scalar program order is maintained without sacrificing productivity

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces an intermediary conflict resolution mechanism that acts between the SIMD execution unit and memory access. This intermediary detects address conflicts, generates resolution instructions, and mediates the indexing to eliminate duplicate addresses while preserving the intended scalar program order

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If SIMD operations are used on sparse locations with random updates, then productivity is improved, but device complexity increases due to conflict detection and resolution requirements

Engineering Contradiction:
ImproveSIMD operation efficiencyVSAvoidconflict detection mechanism
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent applies self-service by enabling the SIMD execution unit to automatically detect its own address conflicts and generate appropriate resolution instructions without external intervention. The execution unit monitors its own operations, identifies duplicate addresses, and self-corrects by adjusting indices, reducing the need for complex external conflict management hardware

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent implements feedback by having the SIMD execution unit continuously monitor address generation during gather-scatter operations. When conflicts are detected, the feedback mechanism triggers conflict resolution logic that adjusts the indexing, creating a closed-loop system that maintains productivity while managing complexity through intelligent feedback control

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS9411592B2Vector address conflict resolution with vector population count functionality
Publication Date: 2016.08.09 INTEL CORP
  • US9411592B2 patent drawing
  • US9411592B2 patent drawing
  • US9411592B2 patent drawing

AI summary

Instructions and logic provide SIMD address conflict resolution with vector population count functionality. Some embodiments include processors with a register with a variable plurality of data fields, each of the data fields to store a variable second plurality of bits. A destination register has corresponding data fields, each of these data fields to store a count of the number of bits set to one for corresponding data fields. Responsive to decoding a vector population count instruction, execution units count the number of bits set to one for each of data fields in the register, and store the counts in corresponding data fields of the first destination register. Vector population count instructions can be used with variable sized elements and conflict masks to generate iteration counts and completion masks to be used each iteration to resolve dependencies in gather-modify-scatter SIMD operations.