< previous page page_476 next page >

Page 476
destination register. The scoreboard is simplified as only (write) essential dependencies are entered. Thus, the precedence control and the read scoreboard entries as shown in Figure 7.37 are eliminated.
If an instruction has an essential dependency and accesses a source register with a functional unit tag, this instruction is placed in a reservation station together with any valid source value. For example, for
d87111c01013bcda00bb8640fdff6754.gif
ADD.F R1, R2, R3,
suppose R2 depends on (has a tag for) the multiplier functional unit and R3 has valid data. This instruction is then issued to the adder reservation station. After the instruction is issued:
R1 has ADD tag.
R2 is unaffected (still has MPY tag).
R3 is unaffected.
The adder reservation station has
OP
=
ADD.F
Source 1
=
Tag of multiplier
Source 2
=
Value from R3.

When the multiplier has a result, it broadcasts it to the scoreboard (which is updated), the register set, and the adder reservation station. The reservation station activates the adder to ingate the multiplier result and begin the addition in the next cycle.
There are some notable items here:
1. The reservation stations and their control can be distributed to the functional units or centralized (say) with the decoder.
2. The copying of values into the reservation stations eliminates the need to check for ordering dependencies.
3. The tag associated with a register can be overwritten in dataflow, not in control flow.
4. The "improved" scheme is not equivalent to the dataflow approach, since all results still must go to their designated destination register, e.g.:
d87111c01013bcda00bb8640fdff6754.gif
MPY.F R1, R2, R3
ST.F  ALPHA, R1
LD.F  R1, BETA.
In our improved scheme, the LD.F cannot execute until after the ST.F, since the result of the multiply must actually go through R1 to the store buffer.
In dataflow, the multiplier tag is passed to the store buffer unit when the ST.F instruction is issued. Now LD.F is free to proceed and is independent of the earlier instructions.

 
< previous page page_476 next page >