Tomasulo's algorithm: Difference between revisions

Content deleted Content added
Echrei (talk | contribs)
copy editting; maybe this makes the logical flow more human-readable
Line 18:
 
===Stage 1: issue===
In the issue stage, instructions are issued for execution if all operands and reservation stations are ready or else they are stalled. Registers are renamed in this step, eliminating WAR and WAW hazards.
 
*Retrieve the next instruction from the head of the instruction queue. If the instruction operands are currently in the registers, <!-- Unclear -->then
**If there is a matching empty reservation station (i.e., functional unit is available) then:, issue the instruction
**Else, there is notno a matching empty reservation station (i.e.,available functional unit is not available) then:, stall the instruction until a station or buffer is free
*ElseOtherwise, we can assume the operands are not in the registers, then:so use virtual values,; the functional unit calculatingmust calculate the real value, in order to keep track of the functional units that will produce the operand
 
===Stage 2: execute===