System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order
First Claim
Patent Images
1. In a processor, a method comprising the steps of:
- issuing a load instruction to a load/store unit for execution, wherein the load instruction is assigned to an instruction group;
comparing a memory address location of data to be loaded by the load instruction with memory address locations in a store reorder queue of data to be stored by older and previously executed store instructions;
if there is a match of the memory address location of data to be loaded by the load instruction with one or more of the memory address locations in the store reorder queue of data to be stored by older and previously executed store instructions, then forwarding the data to be stored to a register designated by the load instruction;
wherein if the data is not forwardable to the load instruction, then determining if the load instruction and the store instruction are in the instruction group; and
if the load instruction and the store instruction are in the instruction group, then flushing the load instruction; and
if the load instruction and the store instruction are not in the instruction group, then rejecting the load instruction.
1 Assignment
0 Petitions
Accused Products
Abstract
In a load/store unit within a microprocessor, load and store instructions are executed out of order. The load and store instructions are assigned tags in a predetermined manner, and then assigned to load and store reorder queues for keeping track of the program order of the load and store instructions. When a load instruction is issued for execution, a determination is made whether the load instruction is attempting to load data to a memory location that is the same as a previously executed store instruction is waiting to complete. If so, then the data waiting to be stored within the cache by the store instruction is directly forwarded to the load instruction.
60 Citations
9 Claims
-
1. In a processor, a method comprising the steps of:
-
issuing a load instruction to a load/store unit for execution, wherein the load instruction is assigned to an instruction group;
comparing a memory address location of data to be loaded by the load instruction with memory address locations in a store reorder queue of data to be stored by older and previously executed store instructions;
if there is a match of the memory address location of data to be loaded by the load instruction with one or more of the memory address locations in the store reorder queue of data to be stored by older and previously executed store instructions, then forwarding the data to be stored to a register designated by the load instruction;
wherein if the data is not forwardable to the load instruction, then determining if the load instruction and the store instruction are in the instruction group; and
if the load instruction and the store instruction are in the instruction group, then flushing the load instruction; and
if the load instruction and the store instruction are not in the instruction group, then rejecting the load instruction. - View Dependent Claims (2, 3, 4)
before the step of comparing a memory address location of data to be loaded by the load instruction with memory address locations in a store reorder queue of data to be stored by older and previously executed store instructions, comparing the memory address location of the data to be loaded by the load instruction with memory address locations of older store instructions in execute; and
rejecting the load instruction if there is a match of the memory address location of the data to be loaded by the load instruction with any memory address locations of older store instructions in execute.
-
-
5. A processor comprising:
-
a load/store unit;
a store reorder queue resident in the load/store unit;
a dispatch unit for issuing a load instruction to the load/store unit for execution, wherein the load instruction is assigned to an instruct group;
circuitry for comparing a memory address location of data to be loaded by the load instruction with memory address locations in the store reorder queue of data to be stored by older and previously executed store instructions;
circuitry for forwarding the data to be stored to a register designated by the load instruction if there is a match of the memory address location of data to be loaded by the load instruction with one or more of the memory address locations in the store reorder queue;
wherein if the data is not forwardable to the load instruction, circuitry for determining if the load instruction and the store instruction are in the instruction group;
if the load instruction and the store instruction are in the instruction group, circuitry for flushing the load instruction; and
if the load instruction and the store instruction are not in the instruction group, circuitry for rejecting the load instruction. - View Dependent Claims (6, 7, 8)
before comparing the memory address location of data to be loaded by the load instruction with memory address locations in a store reorder queue of data to be stored by older and previously executed store instructions, circuitry for comparing the memory address location of the data to be loaded by the load instruction with memory address locations of older store instructions in execute; and
circuitry for rejecting the load instruction if there is a match of the memory address location of the data to be loaded by the load instruction with any memory address locations of older store instructions in execute.
-
-
9. In a processor, a method for store forwarding comprising the steps of:
-
issuing a load instruction to a load/store unit for execution, wherein the load instruction is assigned to an instruction group;
comparing an effective memory address location of data to be loaded by the load instruction with effective memory address locations of older store instructions in execute;
rejecting the load instruction if there is a match of the effective address location of the data to be loaded by the load instruction with any effective memory address locations of older store instructions in execute;
comparing a memory address location of data to be loaded by the load instruction with memory address locations in a store reorder queue of data to be stored by older and previously executed store instructions;
if the load instruction is contained within an older and previously executed store instruction, then forwarding the data to be stored to a register designated by the load instruction, wherein the forwarding step forwards the data corresponding to a youngest one of the one or more store instructions, wherein if there is not a match of the memory address location of data to be loaded by the load instruction with any memory address locations in the store reorder queue of data to be stored by older and previously executed store instructions, then the load instruction is provided with the data from the cache/memory subsystem;
wherein if the data is not forwardable to the load instruction, then determining if the load instruction and the store instruction are in the instruction group;
if the load instruction and the store instruction are in the instruction group, then flushing the load instruction; and
if the load instruction and the store instruction are not in the instruction group, then rejecting the load instruction.
-
Specification