7.4.3. Out-of-order packets

ETMv3.x supports processors with non-blocking data caches. A non-blocking data cache enables instructions, including data instructions, to execute underneath an outstanding data transfer. This means that the data cache can return data to the processor out-of-order.

This behavior is handled by the Out-of-order placeholder and Out-of-order data header types. These are described in:

For more information about tracing LSMs see Tracing LSMs.

Out-of-order placeholder

When data cannot be traced in order, an Out-of-order placeholder packet is placed in the FIFO instead of a Normal data packet. Figure 7.33 shows an Out-of-order placeholder packet.

Figure 7.33. Out-of-order placeholder packet

To view this graphic, your browser must support the SVG format. Either install a browser with native support, or install an appropriate plugin such as Adobe SVG Viewer.


When an Out-of-order placeholder packet is read, the decompression software must identify the data value as an outstanding value. This outstanding value is returned later in the trace.

The A bit

The A bit indicates that a data address is present if data tracing is enabled. See The A bit for more information.

Tag bits

The tag bits are used to identify each load miss. Values b01, b10, and b11 are supported. Encodings corresponding to a tag of b00 correspond to other packets in the header space.

BE bit

The BE bit indicates that the data was a BE-8 transfer. See BE bit for more information.

Out-of-order data

When out-of-order data is returned, the Out-of-order data packet, comprising the Out-of-order data header byte and the data value, is placed in the FIFO.

An Out-of-order data packet never includes a data address.

An Out-of-order data packet is shown in Figure 7.34.

Figure 7.34. Out-of-order data packet for ETMv3.0 and later

To view this graphic, your browser must support the SVG format. Either install a browser with native support, or install an appropriate plugin such as Adobe SVG Viewer.


An Out-of-order data packet always corresponds to the most recent Out-of-order placeholder packet with the same TT tag value, with the exception of 64-bit values. See 64-bit values for more information.

If the decompressor receives an unexpected Out-of-order data packet (that is, an Out-of-order data packet is given without a pending Out-of-order placeholder packet with the same TT tag), it must be ignored. If trace is disabled before the outstanding out-of-order data is returned, this data item is placed in the FIFO as soon as it is available.

Note

In ETMv3, all forms of data, loads, stores, and CPRTs, can be returned out-of-order. In ETMv2, only loads can be returned out-of-order.

Rules for generation of Out-of-order packets

These rules do not affect decompression, but describe how the ETM handles out-of-order trace packets.

Out-of-order placeholder packets are placed in the FIFO if TraceEnable and ViewData are active at the time that the Out-of-order placeholder is generated, in the same way as Normal data packets.

Out-of-order data packets are placed in the FIFO if and only if the corresponding Out-of-order placeholder packet was traced, with the following exceptions:

  • Out-of-order data might be missing following overflow, if the Out-of-order placeholder packet was placed in the FIFO before the overflow occurred.

  • Out-of-order data might be missing following restart from debug, if the Out-of-order placeholder packet was placed in the FIFO before the entry to debug state.

  • Out-of-order data might be missing following a processor reset, if the Out-of-order placeholder packet was placed in the FIFO before the reset occurred.

  • Out-of-order data might be missing if it is returned in the same cycle as a Non-periodic I-sync. This is because of FIFO bandwidth limitations. A periodic I-sync must be delayed if it would cause the loss of an Out-of-order data packet.

Out-of-order data packets are never output without a corresponding Out-of-order placeholder packet. However, lone Out-of-order data packets might be observed at the beginning of the captured trace, because of the loss of the original Out-of-order placeholder packets.

64-bit values

When a miss occurs on a 64-bit value, two out-of-order packets are placed in the FIFO in the same cycle. The decompressor must recognize that these two misses are for a single 64-bit value because both packets have the same tag value and they are consecutive. As with Normal data packets, the data address is present only with the first Out-of-order placeholder packet, and is not present at all if the miss occurs in the middle of an LSM that has already output data packets.

When 64-bit out-of-order data is returned, it is always returned as two separate Out-of-order data packets given in the same cycle. Both packets have the same tag, and are consecutive.

Copyright © 1999-2002, 2004-2009, 2011 ARM Limited. All rights reserved.ARM IHI 0014Q
Non-ConfidentialID101211