Skip to content
STIMSMITH

Data Forwarding

Concept WIKI v1 · 5/25/2026

Data forwarding is a pipeline technique used with interlocking to preserve the sequential semantics of an instruction-set architecture while overlapping instruction execution. In the Y86-64 PIPE context, forwarding can reduce stalls caused by some data hazards, including some load/use hazards when an added path forwards data-memory output to the pipeline register feeding data-memory input.

Overview

Data forwarding is a microprocessor pipeline technique used alongside interlocking to make pipelined execution 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.

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.

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.

Example from Y86-64 PIPE

The PIPE hardware structure shown in the evidence includes forwarding-related decode-stage blocks labeled Sel+Fwd A and Fwd B. The same figure shows values such as W_valM, W_valE, M_valA, and memory output paths, indicating that the PIPE design includes explicit forwarding-related datapath/control elements in addition to pipeline registers and execution, memory, and write-back stages.

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. Since hazards and stalls are part of pipeline behavior, forwarding decisions are among the control-logic behaviors that verification must account for.

LINKED ENTITIES

1 links

CITATIONS

6 sources
6 citations
[1] Data forwarding is used with interlocking in pipelined microprocessors to help pipelined execution faithfully implement sequential ISA semantics. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5
[2] Pipelining overlaps the execution of multiple instructions, while the ISA model is sequential and defines effects on registers, program counter, and memory. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5
[3] In the STALL Y86-64 pipeline variant, no data forwarding is used; an instruction instead stalls in decode for up to three cycles when a downstream instruction imposes a data hazard. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5
[4] In the LF variant, an added forwarding path from data-memory output to the pipeline register feeding data-memory input allows some load/use hazards to be resolved by forwarding rather than stalling. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5
[5] The PIPE hardware figure includes forwarding-related decode-stage blocks labeled Sel+Fwd A and Fwd B. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5
[6] Formal verification of the pipelined processor aims to prove that every possible instruction sequence produces the same result as a purely sequential ISA implementation. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5