| |||
| Home > Instruction Execution > Serializing instructions | |||
A serializing instruction is one that stalls due to activity in the VFP11 pipelines without the presence of a register or resource hazard. In general, an access to a VFP11 control or status register is a serializing instruction.
The serializing instructions are FMRX and FMXR,
including the FMSTAT instruction. Serializing instructions
stall the VFP11 coprocessor in the Issue stage and the ARM processor
in the Execute 2 stage until:
the VFP11 pipeline is past the point of updating either the condition codes or the exception status
a write to a system register can no longer affect the operation of a current or pending instruction.
An FMRX or FMSTAT instruction stalls
until all previous floating-point operations have completed, and
the data to be written by the VFP11 coprocessor is valid. For
example, until a compare operation updates the FPSCR register condition
codes in the Writeback stage of the compare.
An FMXR instruction stalls until all previous
floating-point operations are past the point of being affected by
the instruction. For example, writing to the FPSCR register stalls until
the point when changing the control bits cannot affect any operation
currently executing or awaiting execution. A write to the FPEXC, FPINST,
or FPINST2 register stalls until the pipeline is completely clear.
Uses of serializing instructions include:
capturing condition codes and exception status
delineating a block of instructions for execution with the ability to capture the exception status of that block of instructions
modifying the mode of operation of subsequent instructions, such as the rounding mode or vector length.
While no instruction can change the contents of the FPSID
register, you can access the FPSID register with FMRX or FMXR as
a general-purpose serializing operation or to create an exception
boundary.