User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 73
UG585 (v1.11) September 27, 2016
Chapter 3: Application Processing Unit
Data Synchronization Barrier (DSB)
The DSB instruction has the same effect as the DMB, but in addition to this, it also synchronizes the
memory accesses with the full instruction stream, not just other memory accesses. This means that
when a DSB is issued, execution stalls until all outstanding explicit memory accesses have completed.
When all outstanding reads have completed and the write buffer is drained, execution resumes as
normal. There is no effect on pre-fetching of instructions. An example of DSB use is discussed in the
following section.
Example: Instruction Cache Maintenance Operations
The multiprocessing extensions require that a DSB is executed by the processor which issued an
instruction cache maintenance instruction to ensure its completion; this also ensures that the
maintenance operation is completed on all cores within the shareable (not outer-shareable) domain.
ISB is not broadcast, and so does not have an effect on other cores. This requires that other cores
perform their own ISB synchronization once it is known that the update is visible, if it is necessary to
ensure the synchronization of those other cores.
P1:
STR R11, [R1] ; R11 contains a new instruction to be stored in program memory
DCCMVAU R1 ; clean to PoU (Point of Unification) makes it visible to instruction cache
DSB ; ensure completion of the clean on all processors
ICIMVAU R1 ; ensure instruction cache/branch predictor discard stale data
BPIMVA R1
DSB ; ensure completion of the ICache and branch predictor
; Invalidation on all processors
STR R0, [R2] ; set flag to signal completion
ISB ; synchronize context on this processor
BX R1 ; branch to new code
P2:
WAIT ([R2] == 1) ; wait for flag signaling completion
ISB ; synchronize context on this processor
BX R1 ; branch to new code
Instruction Synchronization Barrier (ISB)
This flushes the pipeline and pre-fetch buffer(s) in the processor, so that all instructions following the
ISB are fetched from cache or memory, after the instruction has completed. This ensures that the
effects of context altering operations (for example, CP15 or ASID changes or TLB or branch predictor
operations), executed before the ISB instruction are visible to any instructions fetched after the ISB.
This does not in itself cause synchronization between data and instruction caches, but is required as
a part of such an operation.
Mismatched Memory Attributes
A physical memory location is accessed with mismatched attributes if all accesses to the location do
not use a common definition of all of the following attributes of that location: