|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
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) |
|
|
|
|
|