In-Order MMIO Handling in Out-of-Order Processors

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In embedded control applications, ensuring in-order execution of memory mapped input/output (MMIO) accesses is crucial for correctness, but existing techniques using special instructions like fence/barrier are error-prone, reduce code portability, and increase complexity due to the introduction of out-of-order processing architectures.

Innovation Solution

The introduction of extended load and store instructions that are strictly executed in-order, encoded differently from their out-of-order counterparts, with a compiler directive to prioritize these instructions and ensure in-order execution of MMIO transactions, allowing out-of-order processors to handle control-oriented code correctly.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If out-of-order processing architecture is introduced to improve compute performance, then processing speed is improved, but device complexity increases and backwards compatibility is compromised

Engineering Contradiction:
Improveprocessing speedVSAvoiddevice complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The processor is segmented into two distinct execution paths: an out-of-order execution path for compute-intensive tasks and an in-order execution path for MMIO transactions. This segmentation allows each path to be optimized independently, maintaining the performance benefits of out-of-order execution while preserving the simplicity and correctness of in-order execution for I/O operations.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Different execution qualities are applied to different instruction types: out-of-order execution is applied to compute instructions for maximum performance, while in-order execution is applied to MMIO instructions for correctness. This local differentiation resolves the contradiction by allowing high-speed processing where needed while maintaining simplicity where required.

Inventive Principle:
Principle #3Local quality

2Reliability

If fence/barrier instructions are introduced to ensure in-order execution of MMIO accesses, then execution correctness is improved, but code portability and readability deteriorate

Engineering Contradiction:
Improveexecution correctnessVSAvoidcode portability and readability
Core Design Contradiction:
ReliabilityVSEase of operation

Solution Approach 1:

The processor architecture automatically provides in-order execution for MMIO transactions without requiring programmer intervention. The hardware inherently ensures correct execution ordering for I/O operations, eliminating the need for fence/barrier instructions and making code more portable and readable while maintaining execution correctness.

Inventive Principle:
Principle #25Self-service

3Reliability

If separate cores or modes are used to handle in-order MMIO execution, then execution correctness is improved, but device complexity increases

Engineering Contradiction:
Improveexecution correctnessVSAvoiddevice complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The processor merges two execution modes (in-order and out-of-order) into a single unified architecture. Both execution paths share common resources such as execution units, registers, and control logic, allowing the processor to switch between execution modes dynamically without requiring separate physical cores. This merging reduces device complexity while maintaining execution correctness for MMIO transactions.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentEP3384378B1Instruction and logic for in-order handling in an out-of-order processor
Publication Date: 2022.02.09 INTEL CORP
  • EP3384378B1 patent drawingFigure 1A
  • EP3384378B1 patent drawingFigure 1B
  • EP3384378B1 patent drawingFigure 1C

AI summary

In one embodiment, a processor includes a decode logic, an issue logic to issue decoded instructions, and at least one execution logic to execute issued instructions of a program. The at least one execution logic is to execute at least some instructions of the program out-of-order, and the decode logic is to decode and provide a first in-order memory instruction of the program to the issue logic. In turn, the issue logic is to order the first in- order memory instruction ahead of a second in-order memory instruction of the program. Other embodiments are described and claimed.