6.2.4. Arbitration

The funnel implements two arbitration schemes, which can be used at the same time:

Priority values for each ATB slave interface are defined in a 3-bit field in the Priority Control register. Fixed priority arbitration is used between interfaces programmed with different priority values, with priority level 0 having the highest priority and priority level 7 having the lowest priority. Round robin arbitration is used between interfaces programmed with the same priority value.

At reset, all ports have a value of 0, and round robin arbitration is used between all interfaces.

A minimum hold time value can be set in the Funnel Control register, which affects both arbitration schemes. At reset, a minimum hold time of four transactions is selected.

The arbitration scheme prioritizes ATB interfaces as follows:

  1. The interface that was previously selected, if it has valid trace available with the same ID as previously, and the minimum hold time has not been reached. The hold time is the number of successive times the same interface has been selected, ignoring cycles where no interfaces had valid trace.

  2. Interfaces in the flush state. When a flush occurs the flush request is propagated to all slave interfaces, and those which have not yet completed the flush are given priority over those which have completed the flush.

  3. Interfaces with a higher programmed priority level. This is the fixed priority arbitration scheme.

  4. Interfaces which were not previously selected. This is the round robin arbitration scheme. When an interface has been selected, it is marked as having lower priority than other interfaces with the same programmed priority level. When an interface that has already been marked is selected again, for example because all of the interfaces at that priority level have been selected in turn, the marks are cleared for other interfaces at the same programmed priority level and the scheme starts again.

  5. Interfaces with a lower port number.

Minimum hold time

If the funnel switches between interfaces, and therefore ATB IDs, this can frequently result in inefficiency:

  • The formatter in the trace sink must add extra trace to indicate the change of ATB ID.

  • An upsizer placed downstream of the funnel is less efficient, because trace with different IDs cannot be combined into a single cycle.

The minimum hold time setting reduces the frequency of switching between interfaces:

  • If you reduce the minimum hold time then the overall bandwidth of the trace system might be reduced, because of more frequent switching.

  • If you increase the minimum hold time then the FIFOs of individual trace sources might be insufficient, leading to greater overflow.

ARM recommends the default value of four transactions in most cases.

Example minimum hold time waveform

Figure 6.1 shows the effect of minimum hold time for a two ATB slave port funnel programmed as follows:

  • Slave port priority arbitration, where slave port 0 has the higher priority, and slave port 1 has the lower priority.

  • A minimum hold time of 4.

Figure 6.1. ATB funnel minimum hold time example

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.

Table 6.1 shows the sequence of events in Figure 6.1.

Table 6.1. Event sequence

  • Slave port 1 is currently selected.

  • Higher priority slave port 0 has a pending transfer.

  • Slave port 1 remains selected because the minimum hold time has not expired.

  • Slave port 1 remains selected because the minimum hold time has not expired.

  • Minimum hold time expires for slave port 1 and funnel switches to slave port 0.

  • Slave port 0 has no more data to transfer and the funnel switches back to slave port 1.

Copyright © 2011-2013, 2015 ARM. All rights reserved.ARM DDI 0480G