Out-of-order processor bad store-to-load forwarding recovery

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current processor technologies face performance degradation due to bad store-to-load forwarding issues, particularly when store and load accesses do not fully overlap or have mismatched sizes, leading to unnecessary stalling and increased power consumption, as no history is kept for such events, causing them to be detected only at runtime.

Innovation Solution

Implementing a system that predicts and mitigates bad store-to-load forwarding by maintaining a history of such occurrences and using an S-bit to split load instructions to match store access sizes, enabling efficient prediction and prevention of future errors, which includes a hardware alias table to track speculatively hoisted load instructions and verify them against store instructions for memory access overlaps.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If store-to-load forwarding is implemented for all store/load pairs, then processor performance is improved through better instruction-level parallelism, but false forwarding errors occur when store and load accesses do not fully overlap or have mismatched sizes

Engineering Contradiction:
Improveprocessor performanceVSAvoidforwarding accuracy
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent applies local quality by making the forwarding mechanism selective rather than universal. The store-to-load forwarding is enabled only for specific store/load pairs that meet certain criteria (full overlap and matching sizes), while other pairs are handled through traditional memory access. This localized application of forwarding avoids false errors while maintaining performance benefits for eligible cases.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent uses preliminary action by checking store and load characteristics before executing the forwarding operation. The system pre-validates whether a store/load pair is suitable for forwarding by comparing their address ranges and sizes in advance, preventing false forwarding errors before they occur. This preliminary validation ensures only correct forwarding operations are performed.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If store-to-load forwarding is restricted to fully overlapped accesses only, then forwarding accuracy is maintained, but processor performance degrades due to unnecessary stalling on partially overlapped or size-mismatched cases

Engineering Contradiction:
Improveforwarding accuracyVSAvoidprocessor performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent segments the store-to-load forwarding mechanism into two distinct paths: one for fully overlapped, size-matched pairs that can safely use forwarding, and another for partially overlapped or size-mismatched pairs that require traditional memory access. This segmentation allows the system to optimize for performance in the safe case while maintaining correctness in the complex case, eliminating unnecessary stalling.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent changes the parameters governing forwarding eligibility from a single restrictive condition (full overlap only) to a more nuanced set of conditions that distinguish between safe and unsafe forwarding cases. By adjusting the eligibility criteria based on address range overlap and size matching parameters, the system enables forwarding for more cases without sacrificing correctness.

Inventive Principle:
Principle #35Parameter changes

3Device complexity

If no history is kept for bad store-to-load forwarding occurrences, then device complexity is reduced, but detection of bad loads can only occur at runtime leading to unnecessary stalling and increased power consumption

Engineering Contradiction:
Improvehistory tracking complexityVSAvoiddetection delay
Core Design Contradiction:
Device complexityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by performing validation of store/load pairs before execution. The system checks whether a store and load pair are suitable for forwarding in advance, determining their eligibility based on address and size parameters. This pre-execution validation prevents bad forwarding from occurring in the first place, eliminating the need for runtime detection and recovery mechanisms.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent extracts the validation logic from the runtime execution path and places it in the instruction preparation phase. By taking out the eligibility checking operation and performing it earlier in the instruction pipeline, the system prevents bad forwarding cases from reaching the execution stage, thereby eliminating unnecessary stalling and power consumption associated with runtime detection and correction.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS9996356B2Method and apparatus for recovering from bad store-to-load forwarding in an out-of-order processor
Publication Date: 2018.06.12 INTEL CORP
  • US9996356B2 patent drawing
  • US9996356B2 patent drawing
  • US9996356B2 patent drawing

AI summary

Apparatus and method for detecting and recovering from incorrect memory dependence speculation in an out-of-order processor are described herein. For example, one embodiment of a method comprises: executing a first load instruction; detecting when the first load instruction experiences a bad store-to-load forwarding event during execution; tracking the occurrences of bad store-to-load forwarding event experienced by the first load instruction during execution; controlling enablement of an S-bit in the first load instruction based on the tracked occurrences; generating a plurality of load operations responsive to an enabled S-bit in first load instruction, wherein execution of the plurality of load operations produces a result equivalent to that from the execution of the first load instruction.