The PowerPC Core
MOTOROLA
MPC801 USER’S MANUAL
6-9
6
An exception can be detected at any time during instruction execution and is recorded in the
history buffer when the instruction finishes execution. The exception is not recognized until
the faulting instruction reaches the head of the history queue, but once the exception is
recognized, an interrupt process begins. The queue is reversed and the machine is restored
to its state at the time the instruction is issued. Machine state is restored at a maximum rate
of two floating-point and two fixed-point instructions per clock.
Figure 6-5. History Buffer Queue
To correctly restore the architectural state, the history buffer must record the value of the
destination prior to instruction execution. The destination of a store instruction, however, is
in memory and it is not practical, from a performance standpoint, to always read memory
before writing it. Therefore, stores issue immediately to store buffers, but do not update
memory until all previous instructions have completed execution without exception (the
store has reached the head of the history buffer).
The history buffer has enough storage to hold six instructions worth of state, but no more
than four fixed-point instructions. The other two instructions can be condition code or branch
instructions. In the event of a long latency instruction, it is possible (if a data dependency
does not occur first) for issued instructions to fill up the history buffer. If so, instruction issue
waits until the long latency operation (blocking retirement) finishes.
The following types of instructions can potentially cause the history buffer to fill up:
Floating-point arithmetic instructions
Integer divide instructions
Instructions that affect/use resources external to the core
QUEUE
TAIL
QUEUE
HEAD
HISTORY BUFFER QUEUE
ISSUED
INSTRUCTIONS
COMPLETED INSTRUCTIONS
WRITEBACK
RETIRED
INSTRUCTIONS