
The central processing unit (CPU)
UM0404
56/564
DocID13284 Rev 2
Figure 10. Standard branch instruction pipelining
3.1.3
Cache jump instruction processing
The ST10F276 incorporates a jump cache. This minimizes the time taken for conditional
jumps which are repeatedly processed in a loop. Whenever a cache jump instruction passes
through the decode stage of the pipeline for the first time (provided that the jump condition is
met), the sequential instruction is fetched as usual, causing a time delay of one instruction
cycle.
If the instruction is repeated in a loop, the target instruction is additionally stored in the
cache. For execution of the repeated cache jump instruction, the jump target instruction is
not fetched from program memory but taken from the cache and immediately injected into
the decode stage of the pipeline (see
A time saving jump on cache is always taken after the second and any further occurrence of
the same cache jump instruction, unless an instruction which has the fundamental capability
of changing the CSP register contents (JMPS, CALLS, RETS, TRAP, RETI), or any
standard interrupt has been processed during the period of time between two following
occurrences of the same cache jump instruction.
Figure 11. Cache jump instruction pipelining
3.1.4
Particular pipeline effects
Since up to four different instructions are processed simultaneously, additional hardware
has been included in the ST10F276 to take into account dependencies between instructions
in different stages of the pipeline.
This extra hardware like a forwarding operand read and write values, resolves most of the
possible conflicts like multiple usage of buses.
1 instruction
cycle
FETCH
I
n+2
BRANCH
I
n
. . .
I
TARGET
(I
INJECT
)
BRANCH
I
n
I
1
I
TARGET
(I
INJECT
)
BRANCH
I
3
I
2
I
1
I
TARGET
I
2
I
1
I
TARGET
(I
INJECT
)
BRANCH
I
n
. . .
. . .
DECODE
EXECUTE
WRITEBACK
time
Injection
I
n+2
Cache Jmp
I
n
. . .
I
1
I
TARGET
Cache Jmp
I
n
I
2
I
1
I
TARGET
Cache Jmp
I
n+2
Cache Jmp
I
n
. . .
I
TARGET
(I
INJECT
)
Cache Jmp
I
n
I
1
I
TARGET
(I
INJECT
)
Cache Jmp
1 instruction
cycle
FETCH
DECODE
EXECUTE
WRITEBACK
1st loop iteration
Injection
Injection of cached
Target Instruction
Repeated loop iteration