Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching
AssigneeInternational Business Machines Corporation
InventorsKurt Alan Feiste, John Stephen Muhich, Larry Edward Thatcher, Steven Wayne White
Life of this patent
Estimating the term…
Abstract
In a superscalar processor implementing out-of-order dispatching and execution of load and store instructions, when a store instruction has already been translated, the load address range of a load instruction is contained within the address range of the store instruction, and the data associated with the store instruction is available, then the data associated with the store instruction is forwarded to the load instruction so that the load instruction may continue execution without having to be stalled or flushed.
Claims24
A method for forwarding data resulting from a store instruction to a load instruction, wherein said store instruction has not yet updated said data when said load instruction is executing, said method comprising the steps of:
- determining if there are any common bytes between a data address of said load instruction and a data address of said store instruction;
- determining if said load instruction is logically subsequent to said store instruction;
- and
- forwarding said data to said load instruction if there are any common bytes between said data address of said load instruction and said data address of said store instruction, and if said load instruction is logically subsequent to said store instruction, wherein said step of determining if there are any common bytes between said data address of said load instruction and said data address of said store instruction further comprises the steps of:
- comparing effective addresses of said load instruction and said store instruction;
- and
- comparing real addresses of said load instruction and said store instruction.
In a data processing system including a processor coupled to a memory system via a system bus, a method comprising the steps of:
- dispatching a store instruction to a store execution unit;
- executing said store instruction in said store execution unit;
- transferring said store instruction to a store address queue after said execution of said store instruction, wherein data associated with said store instruction is in a store data queue;
- dispatching a load instruction to a load execution unit, wherein said load instruction is logically subsequent to said store instruction;
- executing said load instruction in said load execution unit;
- comparing an effective address of said load instruction with an effective address of said store instruction;
- comparing a real address of said load instruction with a real address of said store instruction if said effective address of said load instruction matches said effective address of said store instruction;
- and
- forwarding said data from said store data queue to said load instruction if said real address of said load instruction matches said real address of said store instruction.
A processor comprising:
- an instruction dispatch unit;
- a load execution unit operable for receiving a load instruction from said instruction dispatch unit;
- a store execution unit operable for receiving a store instruction from said instruction dispatch unit, wherein said load instruction is logically subsequent to said store instruction;
- a store data queue coupled to said store execution unit;
- a store address queue coupled to said store execution unit;
- circuitry for executing said store instruction in said store execution unit;
- circuitry for transferring said store instruction to said store address queue after said execution of said store instruction, wherein data associated with said store instruction is in said store data queue;
- circuitry for executing said load instruction in said load execution unit;
- circuitry for comparing a data address of said load instruction with a data address of said store instruction;
- and
- circuitry for forwarding said data from said store data queue to said load instruction if said data address of said load instruction matches said data address of said store instruction, wherein said comparing circuitry further comprises:
- circuit for comparing an effective address of said load instruction with an effective address of said store instruction;
- and
- circuitry for comparing a real address of said load instruction with a real address of said store instruction if said effective address of said load instruction matches said effective address of said store instruction wherein said forwarding of said data is performed if said real addresses match.
In a processor, a method for forwarding data from a store data queue and resulting from a store instruction to a load instruction while said load instruction is executing in a load execution unit, said method comprising the steps of:
- determining if there are any common bytes between an effective address of said load instruction and an effective address of said store instruction;
- holding said load instruction in said load execution unit if there are any common bytes between said effective address of said load instruction and said effective address of said store instruction;
- determining if a real address of said load instruction matches a real address of said store instruction;
- and
- forwarding said data to said load execution unit if said real address of said load instruction matches said real address of said store instruction.
In a processor, a method comprising the steps of:
- comparing an effective address of a load instruction with an effective address of a store instruction;
- and
- predicting whether a real address of said load instruction will match a real address of a store instruction as a function of whether said effective address of said load instruction matches said effective address of said store instruction.
Dependencies are inferred from the claim text.