< previous page page_468 next page >

Page 468
0468-01.gif
Figure 7.34
Dependencies and tagged register results in a
control flow. The D, S
1, S2 of instruction N are
compared with source and destination of the
preceding N - 1 instructions.
Consider a system with multiple functional units, each of whose executions may involve multiple cycles. Using the L/S architecture as our model, we assume that there is a centralized single set of registers that provide operands for the functional units.
Suppose there are up to N instructions already dispatched for execution, and we must determine how to issue an instruction currently at the decoder. The issuance of a single instruction in the presence of up to N - 1 unissued previous instructions is equivalent to the issuance of that instruction as the last of N instructions issued at one time.
Control Flow
A control flow approach to out-of-order instruction execution has been discussed for many years. Probably the best-known implementation is the scoreboard approach of the CDC 6600 [281]. While there are many scoreboard variations, we describe here a very simple one. Read and write tags are associated with each register. The tag associated with each register identifies the functional unit that produces a result destined for that particular register. A null tag indicates that the register has a valid (updated) result. A bit associated with the read and write tags indicates which of the read or write to that register must occur first (earliest in sequence order). A single reservation station is added for each functional unit, and a scoreboard, or concurrency control unit, is introduced. This allows dependencies to be detected and instructions to be issued, and it enables the results of the various functional units to be broadcast across a bus to designated destinations (Figure 7.34). When an instruction is decoded, it is issued to a particular functional unit based on its opcode. If that functional unit already has an instruction pending in the reservation station, the decoder cannot issue another instruction to it, and that instruction cannot be issued until it becomes available. All operand values for a particular instruction need not be available for the instruction to be issued to the reservation station; the tag of a particular register may be substituted for a value, in which case the reservation station remains in a pending state until the value is available.
On an essential dependency, the control unit may issue the instruction to the functional unit's reservation station, together with a tag for the unit that will provide the operand. Thus, for the instructions:

 
< previous page page_468 next page >