Disambiguation-Free Out-of-Order Load Store Queue

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current processor architectures face inefficiencies in context switching and memory disambiguation, particularly in handling fine-grained parallelism and managing out-of-order load and store operations, leading to increased complexity, power consumption, and overhead in thread management.

Innovation Solution

A disambiguation-free out-of-order load store queue method is implemented, utilizing a memory resource accessible by asynchronous cores, a store retirement buffer, and speculative execution, where results are saved in a store retirement/reorder buffer, allowing for correct forwarding and error recovery in load operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If hardware duplicates all architecture state elements for each supported thread, then context switch is eliminated, but area, power and complexity increase

Engineering Contradiction:
Improvecontext switch timeVSAvoidhardware complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The processor architecture is segmented into in-order and out-of-order execution domains. The in-order core handles thread management and context switching, while the out-of-order execution engine handles speculative instruction execution. This segmentation allows the system to support multiple threads without duplicating entire architecture states for each thread, reducing hardware complexity while maintaining fast context switching.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

A thread control structure acts as an intermediary between software threads and hardware execution. This structure manages thread state information and coordinates between the in-order core and out-of-order execution engine, enabling efficient thread management without requiring full state duplication for each thread.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If out of order execution is implemented, then processing efficiency improves, but memory disambiguation complexity increases

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidmemory disambiguation complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system performs preliminary actions by maintaining a store buffer that records store operations before they are committed to memory. This buffer preserves the original program order of store operations, allowing the out-of-order execution engine to execute instructions speculatively while the in-order store buffer ensures correct memory disambiguation and maintains memory consistency without requiring complex disambiguation logic in the execution engine.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If speculative execution is enabled, then performance improves, but error recovery overhead increases

Engineering Contradiction:
Improvespeculative execution performanceVSAvoiderror recovery time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The architecture prepares for potential speculative errors in advance by maintaining an in-order store buffer that preserves the correct program order of memory operations. This buffer acts as a cushion that ensures memory consistency is maintained even if speculative execution fails, eliminating the need for complex error recovery mechanisms and reducing recovery overhead.

Inventive Principle:
Principle #11Beforehand cushioning (Prior cushioning)

Data Source

PatentEP2862068B1Reordered speculative instruction sequences with a disambiguation-free out of order load store queue
Publication Date: 2022.07.06 INTEL CORP
  • EP2862068B1 patent drawingFigure 1
  • EP2862068B1 patent drawingFigure 2
  • EP2862068B1 patent drawingFigure 3

AI summary

In a processor, a disambiguation-free out of order load store queue method. The method includes implementing a memory resource that can be accessed by a plurality of asynchronous cores; implementing a store retirement buffer, wherein stores from a store queue have entries in the store retirement buffer in original program order; and implementing speculative execution, wherein results of speculative execution can be saved in the store retirement/reorder buffer as a speculative state. The method further includes, upon dispatch of a subsequent load from a load queue, searching the store retirement buffer for address matching; and, in cases where there are a plurality of address matches, locating a correct forwarding entry by scanning for the store retirement buffer for a first match, and forwarding data from the first match to the subsequent load. Once speculative outcomes are known, the speculative state is retired to memory.