Out-of-Order Processor Load Store Reordering via Instruction Splitting

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current processor architectures face inefficiencies in context switching and parallelism due to the overhead of duplicating architecture state elements for multiple threads, particularly in fine-grained parallelism scenarios, where context switches are frequent and resource-intensive, and existing techniques struggle to efficiently execute load and store operations in out-of-order processors.

Innovation Solution

The method involves splitting store and load instructions into address calculation and data transfer components, allowing for earlier dispatch and execution by reordering these instructions, enabling speculative execution while maintaining memory consistency through a unified load/store queue and speculative recovery mechanisms.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

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

Engineering Contradiction:
Improvecontext switch overheadVSAvoidhardware architecture complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The architecture state is segmented into multiple save areas (first save area, second save area, third save area) that can be selectively used. Instead of duplicating the entire architecture state for each thread, the system divides the state into manageable segments that can be stored and switched between efficiently.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The architecture state is pre-saved into different save areas before context switching is needed. The system prepares multiple save areas in advance, allowing for rapid context switching without the overhead of saving and restoring state during the actual context switch operation.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If the number of software threads exceeds the number of explicitly supported hardware threads, then fine-grained parallelism is enabled, but context switches must still be performed increasing overhead

Engineering Contradiction:
Improvefine-grained parallelism executionVSAvoidcontext switch frequency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system segments the thread management into multiple save areas that can accommodate more software threads than hardware threads. This segmentation allows fine-grained parallelism by enabling multiple thread contexts to be maintained and switched between without requiring proportional hardware thread duplication.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The architecture uses copied state representations in different save areas to represent multiple thread contexts. Instead of requiring unique hardware resources for each thread, the system creates copies of the architecture state in different save areas, enabling efficient context switching for fine-grained parallelism.

Inventive Principle:
Principle #26Copying

3Reliability

If load and store instructions are executed in program order, then memory consistency is maintained, but execution latency increases in out-of-order processors

Engineering Contradiction:
Improvememory consistencyVSAvoidinstruction execution latency
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

Address calculation for load and store instructions is performed in advance (preliminarily) before the actual data transfer. The system calculates addresses early in the instruction pipeline, allowing the data transfer operations to proceed without waiting for address computation, thus reducing overall execution latency while maintaining memory consistency through proper ordering of the address calculation results.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9990198B2Instruction definition to implement load store reordering and optimization
Publication Date: 2018.06.05 INTEL CORP
  • US9990198B2 patent drawing
  • US9990198B2 patent drawing
  • US9990198B2 patent drawing

AI summary

A method for forwarding data from the store instructions to a corresponding load instruction in an out of order processor. The method includes accessing an incoming sequence of instructions, and of said sequence of instructions, splitting store instructions into a store address instruction and a store data instruction, wherein the store address performs address calculation and fetch, and wherein the store data performs a load of register contents to a memory address. The method further includes, of said sequence of instructions, splitting load instructions into a load address instruction and a load data instruction, wherein the load address performs address calculation and fetch, and wherein the load data performs a load of memory address contents into a register, and reordering the store address and load address instructions earlier and further away from LD/SD the instruction sequence to enable earlier dispatch and execution of the loads and the stores.