|
|
|
|
|
|
|
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 |
|
|
|
 |
|
|
|
|
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: |
|
|
|
|
|
|
|
|
R2 is unaffected (still has MPY tag). |
|
|
|
|
|
|
|
|
The adder reservation station has |
|
|
|
|
|
|
|
|
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.: |
|
|
|
 |
|
|
|
|
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. |
|
|
|
|
|