User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 101
UG585 (v1.11) September 27, 2016
Chapter 3: Application Processing Unit
By default, the pre-fetch offset is 5'b00000. For example, if S0 receives a cacheable read at address
0x100, the cache line at address 0x120 is pre-fetched. Pre-fetching the next cache line might not
necessarily result in optimal performance. In some systems, it might be better to pre-fetch more in
advance to achieve better performance. The pre-fetch offset enables this by setting the address of
the pre-fetched cache line to Cache Line + 1 + Offset. The optimal value of the pre-fetch offset
depends on the external memory read latency and on the L1 read issuing capability. The pre-fetch
mechanism is not launched for a 4 KB boundary crossing.
Pre-fetch accesses can use a large number of the address slots in the controller master ports. This
prevents non-prefetch accesses being serviced and affects performance. To counter this effect, the
controller can drop pre-fetch accesses. This can be controlled using bit 24 of the Pre-fetch Control
register. When enabled, if a resource conflict exists between pre-fetch and non-pre-fetch accesses in
the controller master ports, pre-fetch accesses are dropped. When data corresponding to these
dropped pre-fetch accesses returns from the external memory, it is discarded and is not allocated
into the L2 cache.
3.4.10 Programming Model
The following applies to the registers used in the L2 cache controller:
The cache controller is controlled through a set of memory-mapped registers. The memory
region for these registers must be defined with strongly ordered or device memory attributes in
the L1 page tables.
The reserved bits in all registers must be preserved; otherwise, unpredictable behavior of the
device might occur.
All registers support read and write accesses unless otherwise stated in the relevant text. A write
updates the contents of a register and a read returns the contents of the register.
All writes to registers automatically perform an initial cache sync operation before proceeding.
Initialization Sequence
As an example, a typical cache controller start-up programming sequence consists of the following
register operations:
•Write 0x020202 to the register at 0xF8000A1C. This is a mandatory step.
Write to the auxiliary, tag RAM latency, data RAM latency, pre-fetch, and Power Control registers
using a read-modify-write to set up global configurations:
°
Associativity and way size
°
Latencies for RAM accesses
°
Allocation policy
°
Pre-fetch and power capabilities
Secure write to invalidate by way, offset 0x77C, to invalidate all entries in cache:
°
Write 0xFFFF to 0x77C
°
Poll the cache maintenance register until invalidate operation is complete.
If required, write to register 9 to lock down D and lock down I.