Hardware-based speculation combines three key
ideas: dynamic branch prediction
to choose which instructions to execute,
speculation to allow the execution of instructions before the control
dependences are resolved (with the ability to undo the effects of an
incorrectly speculated sequence), and dynamic scheduling to deal with the scheduling
of different combinations of basic blocks. (In comparison, dynamic scheduling
without speculation only partially overlaps basic blocks because it requires
that a branch be resolved before actually executing any instructions in the
successor basic block.)
Hardware-based speculation follows the predicted flow of data values
to choose when to execute instructions. This method of executing programs is
essentially a data flow execution: Operations execute as soon as their
operandsare available.
To extend Tomasulo’s algorithm to support speculation, we must
separate the bypassing of results among instructions, which is needed to
execute an instruction speculatively, from the actual completion of an
instruction. By making this separation, we can allow an instruction to
execute and to bypass its results to other instructions, without allowing the
instruction to perform any updates that cannot be undone, until we know that
the instruction is no longer speculative. Using the bypassed value is like
performing a speculative register read, since we do not know whether the
instruction providing the source register value is providing the correct
result until the instruction is no longer speculative. When an instruction is
no longer speculative, we allow it to update the register file or memory; we
call this additional step in the instruction execution sequence instruction
commit.
The key idea behind implementing speculation is to allow instructions
to execute out of order but to force them to commit in order and to
prevent any irrevocable action (such as updating state or taking an
exception) until an instruction commits. Hence, when we add speculation, we
need to separate the process of completing execution from instruction commit,
since instructions may finish execution considerably before they are ready to
commit. Adding this commit phase to the instruction execution sequence
requires an additional set of hardware buffers that hold the results of
instructions that have finished execution but have not committed. This
hardware buffer, which we call the reorder buffer, is also used to
pass results among instructions that may be speculated.
The ROB subsumes the store buffers. Stores still execute in two steps,
but the second step is performed by instruction commit. Although the renaming
function of the reservation stations is replaced by the ROB, we still need a
place to buffer operations (and operands) between the time they issue and the
time they begin execution. This function is still provided by the reservation
stations. Since every instruction has a position in the ROB until it commits,
we tag a result using the ROB entry number rather than using the reservation
station number. This tagging requires that the ROB assigned for an
instruction must be tracked in the reservation station.
Here are the four steps involved in
instruction execution:
1. Issue—Get an instruction
from the instruction queue. Issue the instruction if there is an empty
reservation station and an empty slot in the ROB; send the operands to the
reservation station if they are available in either the registers or the ROB.
Update the control entries to indicate the buffers are in use. The number of
the ROB entry allocated for the result is also sent to the reservation
station, so that the number can be used to tag the result when it is placed
on the CDB. If either all reservations are full or the ROB is full, then
instruction issue is stalled until both have available entries.
2. Execute—If one or more of the
operands is not yet available, monitor the CDB while waiting for the register
to be computed. This step checks for RAW hazards. When both operands are
available at a reservation station, execute the operation. Instructions may
take multiple clock cycles in this stage, and loads still require two steps
in this stage. Stores need only have the base
register available at this step, since
execution for a store at this point is only effective address calculation.
3. Write
result—When the result is available, write it on the CDB (with the
ROB tag sent when the instruction issued) and from the CDB into the ROB, as
well as to any reservation stations waiting for this result. Mark the
reservation station as available. Special actions are required for store
instructions. If the value to be stored is available, it is written into the
Value field of the ROB entry for the store. If the value to be stored is not
available yet, the CDB must be monitored until that value is broadcast, at
which time the Value field of the ROB entry of the store is updated. For
simplicity we assume that this occurs during the Write Results stage of a
store.
4. Commit—This
is the final stage of completing an instruction, after which only its result
remains. (Some processors call this commit phase “completion” or
“graduation.”) There are three different sequences of actions at commit
depending on whether the committing instruction is a branch with an incorrect
prediction, a store, or any other instruction (normal commit). The
normal commit case occurs when an instruction
reaches the head of the ROB and its result is present in the buffer; at this
point, the processor updates the register with the result and removes the
instruction from the ROB. Committing a store is similar except that memory is
updated rather than a result register.
When a branch with incorrect prediction reaches the head of the ROB,
it indicates that the speculation was wrong. The ROB is flushed and execution
is restarted at the correct successor of the branch. If the branch was
correctly predicted, the branch is finished.
|
BE/ME/B.TECH/M.TECH ENGINEERING & LECTURER NOTES & QUESTION PAPERS, GENERAL TOPICS,INTERVIEW QUESTIONS,APTITUDE PAPERS,MODEL PAPERS,PLACEMENT PAPERS, EXAM RESULTS,ANNA UNIVERSITY REVALUATION RESULTS 2012 & MANY MORE....
Friday, January 4, 2013
Hardware based speculation
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment