US7444498B2

Load lookahead prefetch for microprocessors

Summary by NHIP

Microprocessor Load Lookahead Prefetch

The method speculatively executes future load instructions during microprocessor stall conditions to maintain forward progress. It uses status bits and a bit vector to track pipeline dependencies and invalid architected facilities, retrieving valid data for non-speculative execution after the stall expires.

Claim Score by NHIP

Read claim 1, the broadest

Abstract

The present invention allows a microprocessor to identify and speculatively execute future load instructions during a stall condition. This allows forward progress to be made through the instruction stream during the stall condition which would otherwise cause the microprocessor or thread of execution to be idle. The data for such future load instructions can be prefetched from a distant cache or main memory such that when the load instruction is re-executed (non speculative executed) after the stall condition expires, its data will reside either in the L1 cache, or will be enroute to the processor, resulting in a reduced execution latency. When an extended stall condition is detected, load lookahead prefetch is started allowing speculative execution of instructions that would normally have been stalled. In this speculative mode, instruction operands may be invalid due to source loads that miss the L1 cache, facilities not available in speculative execution mode, or due to speculative instruction results that are not available via forwarding and are not written to the architected registers. A set of status bits are used to dynamically keep track of the dependencies between instructions in the pipeline and a bit vector tracks invalid architected facilities with respect to the speculative instruction stream. Both sources of information are used to identify load instructions with valid operands for calculating the load address. If the operands are valid, then a load prefetch operation is started to retrieve data from the cache ahead of time such that it can be available for the load instruction when it is non-speculatively executed.

US7444498B2, drawing sheet 1
Sheet 1 of 12

Term

Term ended

Expired 2 June 2026, 0.3 years ago.

  1. Priority and filed
  2. Granted
  3. Expired
  4. Today

19 claims: 1 independent, 18 dependent

  1. 1
    Broadest claimClaim Score 44, average(NHIP)A method for speculatively executing instructions in a microprocessor which commits results of non speculative instructions to at least one architected facility, said method comprising the steps of:determining the occurrence of a stall condition during execution of instructions;speculatively executing speculative instructions during said stall condition across multiple pipeline stages within said microprocessor;determining the validity of speculative data utilized during said speculative execution;retrieving valid data for use by said non speculative instructions upon removal of said stall condition, wherein determining the validity of speculative data utilized during said speculative execution comprises forwarding validity bits along with the instructions through a pipeline of the microprocessor via a first forwarding path associated with the pipeline of the microprocessor;and forwarding dependency on load values along a second forwarding path associated with the pipeline for the speculative instructions, wherein the dependency on load values have at least one dependency on load bit that determines at which one of the multiple pipeline stages the data retrieved by a load instruction is determined to be valid or invalid, and wherein a pipeline stage at which data retrieved by the load instruction is determined to be valid or invalid is any one of the multiple pipeline stages.