2–28
Internal Architecture
29 September 1997 – Subject To Change
Replay Traps
•
No instruction can be issued to pipe E0 or E1 exactly two cycles before an inte-
ger register fill is requested (speculatively) by the CBU, except IMULL,
IMULQ, and IMULH instructions and instructions that do not produce any
result.
•
No LD, ST, or MBX class instructions can be issued to pipe E0 or E1 exactly
one cycle before an integer register fill is requested (speculatively) by the CBU.
•
No instruction issues after a TRAPB instruction until all previously issued
instructions are guaranteed to finish without generating a trap other than a
machine check.
All instructions sent to the issue stage (stage 3) by the slotting logic (stage 2) are
issued subject to the previous rules. If issue is prevented for a given instruction at the
issue stage, all logically subsequent instructions at that stage are prevented from
issuing automatically. The 21164PC only issues instructions in order.
2.4 Replay Traps
There are no stalls after the instruction issue point in the pipeline. In some situations,
an MTU instruction cannot be executed because of insufficient resources (or some
other reason). These instructions trap and the IDU restarts their execution from the
beginning of the pipeline. This is called a replay trap. Replay traps occur in the fol-
lowing cases:
•
The write buffer is full when a store instruction is executed and there are already
six write buffer entries allocated. The trap occurs even if the entry would have
merged in the write buffer.
•
A load instruction is issued in pipe E0 when all six MAF entries are valid (not
available), or a load instruction issued in pipe E1 when five of the six MAF
entries are valid. The trap occurs even if the load instruction would have hit in
the Dcache or merged with an MAF entry.
•
Alpha shared memory model order trap (Litmus test 1 trap): If a load instruction
issues that address matches with any miss in the MAF (down to the quadword
boundary), the load instruction is aborted through a replay trap regardless of
whether the newly issued load instruction hits or misses in the Dcache. This
ensures that the two loads execute in issue order.