5.4. Independent load/store unit

ARM10 has an independent load/store unit. This means that it is capable of continuing to transfer data values for an earlier instruction after later instructions have been executed. In these circumstances, the later instructions are said to have executed underneath the data instruction. Once a data instruction has been traced, all instructions executed underneath it are also traced.

Note

This does not create any extra data, because the instructions executed underneath cannot be data instructions or indirect branches.

All address comparators have a sticky bit that is observed when the comparator is used as shown in Table 5.2.

Table 5.2. Conditions for observing address comparator sticky bits

Comparator usageSingle address comparatorAddress range comparator
Selected as an eventSticky bit ignored Sticky bit observed
Selected by TraceEnableSticky bit ignored Sticky bit ignored
Selected by start/stop blockSticky bit ignored Sticky bit ignored
Selected by ViewDataSticky bit observed Sticky bit observed

Where it is observed, the sticky bit behaves as follows:

Sticky bit set

When the comparator matches the instruction address of a data instruction.

Sticky bit cleared

When the data instruction completes.

The sticky bit is never set for address comparators configured for data addresses.

Where observed, the comparator continues to match while the sticky bit is set.

Single address comparators cannot observe the sticky bit when selected as an event, because they are defined to be active for only one cycle for the benefit of the counters and sequencer. If an event of the kind instruction address = X AND data address = Y is required, the instruction address comparator must be an address range comparator to guarantee that it will still match when the data address comparator matches.

ViewData always observes the sticky bits so that if an instruction address comparator is selected, all the data corresponding to that instruction will match. In normal circumstances, you must not use single instruction address comparators as the enabling event, because they do not observe the sticky bit.

There is no need for TraceEnable or the start/stop block to observe the sticky bit, because when a data instruction has been traced, tracing cannot be disabled until all data transfers corresponding to that instruction have occurred.

Note

Using data values to create an event, such as a sequencer transition, might result in out-of-order events occurring because the load data might be returned out of order. If you are concerned that the ARM10 nonblocking cache might affect programmed events, you can disable it in the core by writing to bit 21 of the cp15 configuration register (r1). See the appropriate ARM10 Technical Reference Manual for more information.

Copyright © 2001, 2003 ARM Limited. All rights reserved.ARM DDI 0206B
Non-Confidential