General Purpose Register Operand Conflict Resolution via Conflict Queue

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

General purpose registers (GPRs) with limited write/read ports in processing units, such as GPUs, face operand conflicts when multiple values need to be read or written simultaneously, leading to inefficiencies and potential bottlenecks in data processing.

Innovation Solution

Implementing a GPR design with multiple distinct memory cells, each with limited ports, and using a conflict queue to store values that would cause conflicts, allowing for the execution of instructions using values from different memory cells and the conflict queue to avoid simultaneous access issues.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a GPR includes multiple memory cells with few write/read ports, then the design is scalable for various circuits and technologies, but operand conflicts occur when multiple values are read or written simultaneously

Engineering Contradiction:
Improvedesign scalabilityVSAvoidoperand conflict resolution
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

A conflict queue is introduced as an intermediary data structure between the GPR and processing elements. When an operand conflict is detected (multiple reads or writes to the same memory cell in the same clock cycle), the conflict queue temporarily holds the conflicting operand values, allowing the GPR ports to service other requests while maintaining data availability for the conflicted operations in subsequent clock cycles.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If multiple values are read from the same memory cell simultaneously, then parallel execution is enabled, but the limited read port capacity causes bottlenecks

Engineering Contradiction:
Improveparallel execution capabilityVSAvoidclock cycle delays
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The conflict detection mechanism operates in advance during the instruction decode or issue stage, identifying potential operand conflicts before they occur. The conflict queue is pre-configured with the necessary storage structures, and when conflicts are predicted, the system proactively routes operands to the conflict queue rather than allowing port contention to occur, thereby minimizing pipeline stalls.

Inventive Principle:
Principle #10Preliminary action

3Device complexity

If a single read port serves a memory cell, then device complexity is reduced, but simultaneous reading of multiple values is limited

Engineering Contradiction:
Improveport quantityVSAvoiddata access throughput
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The GPR is segmented into multiple independent memory cells, each with its own limited ports. This segmentation allows different memory cells to be accessed in parallel by different processing elements, effectively increasing overall data access throughput without requiring each individual memory cell to have multiple ports. The conflict queue handles the rare cases where segmentation cannot prevent conflicts.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9632783B2Operand conflict resolution for reduced port general purpose register
Publication Date: 2017.04.25 QUALCOMM INC
  • US9632783B2 patent drawing
  • US9632783B2 patent drawing
  • US9632783B2 patent drawing

AI summary

Techniques are described for determining whether execution of an instruction would require reading more values from a memory cell of a general purpose register (GPR) than a read port of the memory cell would allow. In such a case, the techniques may store, prior to execution of the instruction, one or more values from the memory cell in a separate conflict queue. During execution of the instruction to implement an operation defined by the instruction, one value that is an operand of the operation would be read from the memory cell and another value that is an operand of the operation other would be read from the conflict queue.