|
|
|
|
|
|
|
There are a maximum of N - 1 compares per source operand. For the two source operands, we require: |
|
|
|
 |
|
|
|
|
2[1 + 2 + 3 + + (N - 1)] compares |
|
|
|
|
|
|
|
|
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: |
|
|
|
 |
|
|
|
|
Ordering compares = (N - 1)N. |
|
|
|
|
|
|
|
|
Suppose we ignore output dependencies, assuming they are detected at compile time. Thus, we have: |
|
|
|
 |
|
|
|
|
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. |
|
|
|
 |
|
|
|
|
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 |
|
|
|
|
|