| 
   
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