Processor and method of executing a load instruction that dynamically bifurcate a load instruction into separately executable prefetch and register operations
First Claim
1. A processor, comprising:
- a plurality of registers;
instruction processing circuitry that fetches an instruction sequence for execution, said instruction sequence including a load instruction and a preceding instruction that precedes said load instruction in program order, wherein said instruction processing circuitry, after fetching said instruction sequence for execution and prior to dispatching said load instruction for execution and responsive to detecting said load instruction within said fetched instruction sequence, translates said load instruction into separately executable prefetch and register instructions and thereafter dispatches said prefetch and register instructions for execution;
a request bus coupled to lower level memory; and
execution circuitry coupled to said request bus and coupled to receive dispatched instructions including sand prefetch, register, and preceding instructions from said instruction processing circuitry, wherein said execution circuitry executes at least said prefetch instruction out-of-order with respect to said preceding instruction to prefetch data and subsequently separately executes said register instruction to place said data into a register among said plurality of registers specified by said load instruction, wherein said execution circuitry executes said prefetch instruction by calculating a speculative target memory address utilizing contents of at least one register identified by said prefetch instruction, without regard for whether said contents will be modified between calculation of said speculative target memory address and execution of said register instruction, and by thereafter initiating a fetch, via said request bus, of said data from a memory location associated with said speculative target memory address.
1 Assignment
0 Petitions
Accused Products
Abstract
A processor implementing an improved method for executing load instructions includes execution circuitry, a plurality of registers, and instruction processing circuitry. The instruction processing circuitry fetches a load instruction and a preceding instruction that precedes the load instruction in program order, and in response to detecting the load instruction, translates the load instruction into separately executable prefetch and register operations. The execution circuitry performs at least the prefetch operation out-of-order with respect to the preceding instruction to prefetch data into the processor and subsequently separately executes the register operation to place the data into a register specified by the load instruction. In an embodiment in which the processor is an in-order machine, the register operation is performed in-order with respect to the preceding instruction.
-
Citations
14 Claims
-
1. A processor, comprising:
-
a plurality of registers;
instruction processing circuitry that fetches an instruction sequence for execution, said instruction sequence including a load instruction and a preceding instruction that precedes said load instruction in program order, wherein said instruction processing circuitry, after fetching said instruction sequence for execution and prior to dispatching said load instruction for execution and responsive to detecting said load instruction within said fetched instruction sequence, translates said load instruction into separately executable prefetch and register instructions and thereafter dispatches said prefetch and register instructions for execution;
a request bus coupled to lower level memory; and
execution circuitry coupled to said request bus and coupled to receive dispatched instructions including sand prefetch, register, and preceding instructions from said instruction processing circuitry, wherein said execution circuitry executes at least said prefetch instruction out-of-order with respect to said preceding instruction to prefetch data and subsequently separately executes said register instruction to place said data into a register among said plurality of registers specified by said load instruction, wherein said execution circuitry executes said prefetch instruction by calculating a speculative target memory address utilizing contents of at least one register identified by said prefetch instruction, without regard for whether said contents will be modified between calculation of said speculative target memory address and execution of said register instruction, and by thereafter initiating a fetch, via said request bus, of said data from a memory location associated with said speculative target memory address. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method, said method comprising:
-
fetching an instruction sequence for execution, said instruction sequence including a load instruction and a preceding instruction that precedes said load instruction in program order;
in response to fetching said instruction sequence for execution and prior to execution of said load instruction, instruction processing circuitry detecting said load instruction within said fetched instruction sequence and translating said load instruction into separately executable prefetch and register instructions;
after the translating, the instruction processing circuitry dispatching the preceding instruction and the prefetch and register instructions for execution;
execution circuitry receiving the dispatched preceding instruction and the prefetch and register instructions from the instruction processing circuitry;
in response to receiving the dispatched prefetch instruction, the execution circuitry executing at least said prefetch instruction out-of-order with respect to said preceding instruction to prefetch data, wherein executing said prefetch instruction comprises;
the execution circuitry calculating a speculative target memory address utilizing contents of at least one register identified by the prefetch instruction without regard for whether said contents will be modified between calculation of said speculative target memory address and execution of said register instruction; and
thereafter the execution circuitry initiating a fetch via, a request bus coupled to lower level memory, of said data from a memory location associated with said speculative target memory address; and
thereafter, the execution circuitry separately executing said register instruction to place said data into a register specified by said load instruction. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
Specification