< previous page page_484 next page >

Page 484
the window:
0484-01.gif
There are a maximum of N - 1 compares per source operand. For the two source operands, we require:
d87111c01013bcda00bb8640fdff6754.gif
2[1 + 2 + 3 + + (N - 1)] compares
or
0484-02.gif
To evaluate ordering dependencies, we must compare the destination specifier with each pair of higher-precedence source instruction specifiers. Again, the maximum number of compares is 2 ´ (N - 1), and the total is the same as before:
d87111c01013bcda00bb8640fdff6754.gif
Ordering compares = (N - 1)N.
Suppose we ignore output dependencies, assuming they are detected at compile time. Thus, we have:
d87111c01013bcda00bb8640fdff6754.gif
Total compares = 2(N - 1)N.
In addition to the preceding, there may be other instructions previously issued but incomplete. Here, we can use a scoreboard to reduce the comparison costs. Before each independent instruction is issued, its register scoreboard is checked. Issue is completed only if there are no conflicts. The scoreboard is updated when instructions are issued and when results are stored.
Dataflow control poses a different set of problems. All instructions in the instruction window can be issued if sufficient resources are available, but those with essential dependencies are issued to reservation stations. Thus, the basic limitations are on the number of buses, register ports, and reservation stations. The same amount of comparison hardware (essential dependencies) as with control flow is required so that tags can be properly determined.
For example:
d87111c01013bcda00bb8640fdff6754.gif
ADD   R3,     R1,   R2
ADD   R4,     R3,   R2
MPY   R5,     R4,   R2
ST    ALPHA   R3
ST    BETA    R4
ST    GAMMA   R5
LD    R3,     DELTA
LD    R4,     EPSILON

 
< previous page page_484 next page >