Skip to content
STIMSMITH

Data Forwarding

Concept WIKI v2 · 7/3/2026

Data forwarding is a microprocessor pipeline technique used alongside interlocking to preserve the sequential semantics of an instruction-set architecture (ISA) while overlapping instruction execution. In pipelined designs such as the Y86-64 PIPE, forwarding paths route values produced in later pipeline stages back to earlier stages where they are consumed, reducing or eliminating certain data-hazard stalls. In industrial designs such as the e500, data forwarding is one of several micro-architectural features used for early resolution of read-after-write (RAW) data dependencies.

Overview

Data forwarding is a microprocessor pipeline technique used alongside interlocking to make a pipelined implementation faithfully implement the sequential semantics of an instruction-set architecture (ISA). In the cited Y86-64 verification context, the ISA is described as a sequential model in which instructions execute in strict order and affect architectural state such as registers, the program counter, and memory. Pipelined implementations improve performance by overlapping multiple instructions, and forwarding/interlocking mechanisms help preserve the same architectural result as the sequential ISA model [1].

Role in handling hazards

Data forwarding is relevant when an instruction needs a value that is being produced by another instruction still farther along the pipeline. The evidence contrasts two design choices:

  • In a STALL pipeline variant, no data forwarding is used. Instead, an instruction can stall in the decode stage for up to three cycles when a later pipeline stage imposes a data hazard.
  • In an LF variant, an added forwarding path connects the data-memory output to the pipeline register that feeds the data-memory input. This permits some load/use hazards to be resolved by forwarding rather than by stalling [2].

This contrast shows the practical purpose of forwarding: it can reduce or avoid certain pipeline stalls by routing a needed value directly from a later pipeline location to the point where it is consumed.

Forwarding paths and combinational dependencies

In the PIPE hardware structure, the forwarding-related decode-stage blocks are labeled Sel+Fwd A and Fwd B, with values such as W_valM, W_valE, M_valA, and memory output paths indicating that the PIPE design includes explicit forwarding-related datapath and control elements in addition to pipeline registers and execution, memory, and write-back stages [2].

The formal modeling of the pipeline imposes ordering constraints among the stages that reflect these combinational forwarding dependencies [1]:

  • writeback → decode: To multiplex two data sources from writeback to the register port and forwarding logic of decode in variant SW.
  • memory → execute: For forwarding memory data in variant LF, and to disable updating of the condition code register when a memory exception occurs.
  • memory → decode: For forwarding data from the memory stage.
  • execute → decode: For forwarding data from the execute stage.

These individual constraints combine into an overall set of constraints: writeback → decode and memory → execute → decode, which dictates the order in which stage procedures are invoked when assembling the model [1].

Data forwarding in industrial microprocessors

In the e500 processor (based on Power Architecture Technology), data forwarding is one of several micro-architectural features used for early resolution of RAW data dependencies. The model also includes multiple issue for instruction parallelism, out-of-order execution with in-order completion for dynamic scheduling, register renaming for removing false data dependencies, and reservation stations for avoiding stalls at Fetch and Decode pipeline stages [3]. A directed micro-architectural test generation study notes that earlier pipeline-path-level model partitioning has been used to generate test programs targeting data forwarding behavior [4]. The study cites four different data forwarding mechanisms as relevant configurations when validating forwarding logic in such processors [5].

Verification significance

In formal verification of pipelined processors, data forwarding is part of the implementation machinery that must be shown to preserve ISA behavior. The cited work describes the verification task as proving that, for any instruction sequence, the pipelined microprocessor obtains the same result as a purely sequential ISA implementation [6]. Since hazards and stalls are part of pipeline behavior, forwarding decisions are among the control-logic behaviors that verification must account for. Modeling the forwarding paths correctly is necessary because the signal m_valM, computed in the memory stage, feeds into the forwarding logic in the decode stage, creating cross-stage combinational dependencies [1].

LINKED ENTITIES

1 links

CITATIONS

10 sources
10 citations
[1] Data forwarding is a pipeline technique used with interlocking to preserve the sequential semantics of an ISA while overlapping instruction execution. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5
[2] In a STALL pipeline variant, no data forwarding is used and an instruction can stall in the decode stage for up to three cycles when a later stage imposes a data hazard. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5
[3] In the LF variant, an added forwarding path connects the data-memory output to the pipeline register that feeds the data-memory input, allowing some load/use hazards to be resolved by forwarding. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5
[4] The PIPE hardware structure includes forwarding-related decode-stage blocks labeled Sel+Fwd A and Fwd B, and values such as W_valM, W_valE, M_valA, and memory output paths. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5
[5] Combinational forwarding dependencies impose stage ordering constraints: writeback to decode (variant SW), memory to execute (variant LF and condition code handling), memory to decode, and execute to decode. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5
[6] The signal m_valM computed in the memory stage feeds into the forwarding logic in the decode stage of the PIPE pipeline. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5
[7] In the e500 processor, data forwarding is used for early resolution of RAW data dependencies, alongside multiple issue, out-of-order execution with in-order completion, register renaming, and reservation stations. Directed Micro-architectural Test Generation for an Industrial Processor: A Case Study
[8] Prior pipeline-path-level model partitioning has been applied to generate test programs targeting data forwarding behavior in a MIPS-based processor. Directed Micro-architectural Test Generation for an Industrial Processor: A Case Study
[9] Four different data forwarding mechanisms are considered when validating industrial processor forwarding logic. Directed Micro-architectural Test Generation for an Industrial Processor: A Case Study
[10] Formal verification of pipelined processors requires proving that the pipelined implementation produces the same architectural result as a sequential ISA implementation, making forwarding decisions part of the control-logic behaviors that must be accounted for. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5

VERSION HISTORY

v2 · 7/3/2026 · minimax/minimax-m3 (current)
v1 · 5/25/2026 · gpt-5.5