3.13 Flushing and Speculation

<< Click to Display Table of Contents >>

Navigation:  ASA-EMulatR Reference Guide > Introduction > Architecture Overview > Chapter 3 - Pipeline Architecture >

3.13 Flushing and Speculation

Flush Causes

 

Pipeline slots may be flushed due to:

Branch misprediction — actual outcome does not match prediction from IF

Exception delivery — fault reached WB, younger slots must be discarded

Interrupt delivery — asynchronous event requires pipeline drain

CALL_PAL — pipeline serializes on PAL entry

HW_REI — pipeline serializes on PAL exit

Fatal fault — unrecoverable condition forces full pipeline invalidation

 

Flush Behavior

 

Only slots younger than the triggering instruction are flushed. On flush:

All speculative slots are invalidated (slot.valid = false, slot.clear())

WB state is preserved — the triggering instruction's architectural effects are maintained

PC is reset to the correct target

Fetch restarts cleanly from the corrected address

 

Flushes are precise and deterministic. No speculative side-effect survives a flush. No reservation survives a pipeline flush.

 

See Also: 2.6 Speculation Policy; 3.14 Precise Exceptions.