< previous page page_170 next page >

Page 170
that set a particular register and the instruction that uses it as an operand. Table 3.20 shows the execute interlock distances for the same scientific mix used to determine address interlock distances.
Assume we have a delay of three cycles (if interlocked by the preceding instruction) on an address interlock and a delay of one cycle (1 ~) on an execution interlock (if dependent on the preceding instruction). The effect of these dependencies can be computed for addresses using Table 3.19 as follows:
Address: 3 cycles ´ 0.099
+2 cycles ´ 0.084
+1 cycles ´ 0.028
0.0493 cycles

This delay of 0.49 cycles occurs with frequency of 1 - .40 = 0.60 (excluding RR formats, in Table 3.2) for the R/M architecture. For the L/S architecture, it would occur with frequency 0.54 (from Table 3.4); in L/S only Move class instructions can have an address interlock. Thus, the effective delay due to the address interlock is 0.60 ´ 0.49 = 0.30 cycles in R/M and 0.54 ´ 0.49 = 0.26 cycles in L/S.
The execute interlock occurs only on instructions that have an execute phase; i.e., excluding Gibson classes Move and Branch. From Table 3.4, this occurs with frequency 37% (R/M) and 33% (L/S). Thus, the effective delay due to the execution interlock (Table 3.20) is
.37 ´ .403
=
0.15 cycles for R/M
.33 ´ .403
=
0.13 cycles for L/S.

The designer must keep in mind the variance in workload data and project performance on a conservative workload (and hope for better!).
3.4.7 Decimal and Character Operand Length
Decimal and character operations are memory-to-memory instructions in which the lengths of the operands are not implied by the opcode, but are defined in other fields of the instruction or are data-dependent. Even in a commercial environment these instructions tend to be infrequent, but their execution times can be very long and they can account for a substantial part of the execution time. Consequently, their implementation is often given careful attention. For our purposes, we divide the variable operand length instructions into two classes:
1. The character manipulation instructions: Move Character(s) (MOVE.C) and Compare Character (CMP.C).
2. The decimal arithmetic instructions such as Add Decimal (ADD.P).
Data are for the commercial environment only, as this environment makes the predominant use of these instructions.
The Compare Logical Characters instruction (CMP.C) is an MM instruction that compares the bytes of the first operand (length-specified instruction)

 
< previous page page_170 next page >