3 return stack, Return stack -5 – ARM Cortex R4F User Manual

Page 164

Advertising
background image

Prefetch Unit

ARM DDI 0363E

Copyright © 2009 ARM Limited. All rights reserved.

5-5

ID013010

Non-Confidential, Unrestricted Access

5.3

Return stack

The call-return stack predicts procedural returns that are program flow changes such as loads,
and branch register. The dynamic branch predictor determines if conditional procedure returns
are predicted as taken or not-taken. The return stack predicts the target address for unconditional
procedure returns, and conditional procedure returns that have been predicted as taken by the
branch predictor.

The return stack consists of a 4-entry circular buffer. When the PFU detects a taken procedure
call instruction, the PFU pushes the return address onto the return stack. The instructions that
the PFU recognizes as procedure calls are:

for ARM and Thumb instructions:

BL

immediate

BLX

immediate

BLX Rm

.

When the return stack detects a taken return instruction, the PFU issues an instruction fetch from
the location at the top of the return stack, and pops the return stack. The instructions that the
PFU recognizes as procedure returns are, in both the ARM and Thumb instruction sets:

POP {..,pc}

LDMIB Rn{!}, {..,pc}

LDMDA Rn{!}, {..,pc}

LDMDB Rn{!}, {..,pc}

LDR pc, [sp], #4

BX Rm

.

Return stack mispredictions can exist when:

The prediction that a conditional return passed or failed its condition code is not correct.

The return address is not correct. The DPU resolves indirect branches that the return stack
predicts at the Ret-stage of the pipeline, see Figure 1-3 on page 1-17. A misprediction
causes the PFU to flush the pipeline and fetch the correct instruction stream.

The return stack has no underflow or overflow detection. Either scenario is likely to cause a
misprediction.

Note

The

MOV PC, LR

instruction is not decoded and is not predicted as a return.

Advertising
This manual is related to the following products: