283
SAM9G15 [DATASHEET]
11052E–ATARM–06-Feb-13
Use of undefined length16-beat bursts, or less, is discouraged since this generally decreases significantly overall bus
bandwidth due to arbitration and slave latencies at each first access of a burst.
If the master does not permanently and continuously request the same slave or has an intrinsically limited average
throughput, the ULBT should be left at its default unlimited value, knowing that the AHB specification natively limits all
word bursts to 256 beats and double-word bursts to 128 beats because of its 1 Kilobyte address boundaries.
Unless duly needed, the ULBT should be left at its default value of 0 for power saving.
This selection can be done through the ULBT field of the Master Configuration Registers (MATRIX_MCFG).
25.5.1.2 Slot Cycle Limit Arbitration
The Bus Matrix contains specific logic to break long accesses, such as back-to-back undefined length bursts or very long
bursts on a very slow slave (e.g., an external low speed memory). At each arbitration time a counter is loaded with the
value previously written in the SLOT_CYCLE field of the related Slave Configuration Register (MATRIX_SCFG) and
decreased at each clock cycle. When the counter elapses, the arbiter has the ability to re-arbitrate at the end of the
current AHB bus access cycle.
Unless a master has a very tight access latency constraint, which could lead to data overflow or underflow due to a badly
undersized internal FIFO with respect to its throughput, the Slot Cycle Limit should be disabled (SLOT_CYCLE = 0) or
set to its default maximum value in order not to inefficiently break long bursts performed by some Atmel masters.
However, the Slot Cycle Limit should not be disabled in the particular case of a master capable of accessing the slave by
performing back-to-back undefined length bursts shorter than the number of ULBT beats with no Idle cycle in between,
since in this case the arbitration could be frozen all along the burst sequence.
In most cases this feature is not needed and should be disabled for power saving.
Warning:
This feature cannot prevent any slave from locking its access indefinitely.
25.5.2 Arbitration Priority Scheme
The bus Matrix arbitration scheme is organized in priority pools.
Round-robin priority is used in the highest and lowest priority pools, whereas fixed level priority is used between priority
pools and in the intermediate priority pools.
For each slave, each master is assigned to one of the slave priority pools through the priority registers for slaves (MxPR
fields of MATRIX_PRAS and MATRIX_PRBS). When evaluating master requests, this programmed priority level always
takes precedence.
After reset, all the masters belong to the lowest priority pool (MxPR = 0) and are therefore granted bus access in a true
round-robin order.
The highest priority pool must be specifically reserved for masters requiring very low access latency. If more than one
master belongs to this pool, they will be granted bus access in a biased round-robin manner which allows tight and
deterministic maximum access latency from AHB bus requests. At worst, any currently occurring high-priority master
request will be granted after the current bus master access has ended and other high priority pool master requests, if
any, have been granted once each.
The lowest priority pool shares the remaining bus bandwidth between AHB Masters.
Intermediate priority pools allow fine priority tuning. Typically, a moderately latency-critical master or a bandwidth-only
critical master will use such a priority level. The higher the priority level (MxPR value), the higher the master priority.
All combinations of MxPR values are allowed for all masters and slaves. For example some masters might be assigned
to the highest priority pool (round-robin) and the remaining masters to the lowest priority pool (round-robin), with no
master for intermediate fix priority levels.
If more than one master requests the slave bus, irregardless of the respective masters priorities, no master will be
granted the slave bus for two consecutive runs. A master can only get back-to-back grants so long as it is the only
requesting master.