Constant Cache Forwarding Literal Values to Eliminate Pipeline Stalls

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In superscalar processors, delays in forwarding operands from producer instructions to consuming instructions can lead to pipeline stalls, degrading CPU performance due to inefficient data dependency handling.

Innovation Solution

Implementing a constant cache that stores literal values generated by instructions, allowing subsequent dependent instructions to access these values directly without waiting for the operand to be written to the register, thereby eliminating the need for data forwarding and pipeline stalls.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If traditional data forwarding is used in superscalar processors, then instructions can obtain operands from producer instructions, but pipeline stalls occur due to data dependency delays

Engineering Contradiction:
Improveinstruction execution throughputVSAvoidpipeline stall delay
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by pre-computing and storing constant values in a dedicated constant cache during the decode stage, before they are needed by dependent instructions. This allows consuming instructions to directly access pre-prepared constant values without waiting for producer instructions to complete execution and forward results through traditional pipeline stages, thereby eliminating pipeline stalls caused by data dependencies.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If operands are forwarded through traditional pipeline stages, then data dependency is handled, but performance degrades due to forwarding delays

Engineering Contradiction:
Improvedata dependency handlingVSAvoidCPU performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent introduces an intermediary constant cache structure that mediates between producer instructions and consuming instructions. Instead of directly forwarding operands through multiple pipeline stages, the constant cache acts as an intermediary storage mechanism that holds constant values and makes them immediately accessible to dependent instructions, thereby maintaining data dependency correctness while eliminating forwarding delays.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Ease of operation

If constant values are stored in registers, then instructions can access literals, but subsequent dependent instructions must wait for register write completion

Engineering Contradiction:
Improveliteral accessVSAvoidwait time for register write
Core Design Contradiction:
Ease of operationVSLoss of time

Solution Approach 1:

The patent applies segmentation by separating constant value storage from the traditional register file. Instead of storing constants in general-purpose registers where they block subsequent accesses, the patent creates a dedicated constant cache segment that specifically handles constant values. This segmentation allows independent access to constant values without interfering with the register write process, thereby eliminating wait time for dependent instructions.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentEP2972791B1Method and apparatus for forwarding literal generated data to dependent instructions more efficiently using a constant cache
Publication Date: 2019.08.07 QUALCOMM INC
  • EP2972791B1 patent drawingFigure 1
  • EP2972791B1 patent drawingFigure 2
  • EP2972791B1 patent drawingFigure 3

AI summary

A processor to a store constant value (immediate or literal) in a cache upon decoding a move immediate instruction in which the immediate is to be moved (copied or written) to an architected register. The constant value is stored in an entry in the cache. Each entry in the cache includes a field to indicate whether its stored constant value is valid, and a field to associate the entry with an architected register. Once a constant value is stored in the cache, it is immediately available for forwarding to a processor pipeline where a decoded instruction may need the constant value as an operand.