Philips Semiconductors
Arbiter
PRELIMINARY SPECIFICATION
20-5
20.5
ARBITER PROGRAMMING
The PNX1300 arbiter accepts programmable bandwidth
weights to directly control the percentage of bandwidth
allocated to each unit. In the worst case all bandwidth is
used. If not all of the bandwidth is used, then all units
eventually get their desired bandwidth (as the bus be-
comes free)
regardless of the weights
. However, the
weights still indirectly guarantee each unit a worst-case
latency, which is important for the real-time behavior.
There are two basic types of PNX1300 coprocessor and
peripheral units. The first type is units which have hard
real-time constraints, i.e. VO, VI, AO and AI. To ensure
multimedia functionality, these units must be able to ac-
quire the bus within a fixed amount of time in order to fill
or empty a buffer before it over- or underflows.
The second type, the CPU, PCI, ICP, VLD and DVDD
units, can absorb long latencies but performance is en-
hanced (there are fewer stall cycles or waiting cycles) if
latency is short. The bandwidth requirement is usually
known and depends on the application. It is especially
well known that ICP and VLD or DVDD have a fixed
bandwidth requirements in multimedia applications.
For the PNX1300 DSPCPU, latency is of prime impor-
tance. CPU performance reduces as average latency in-
creases. The design of the arbiter guarantees that the
DSPCPU gets all unused bus bandwidth with lowest pos-
sible latency. Optimal operation is achieved if the arbiter
is set in such a way that the DSPCPU has the best pos-
sible latency given the required latency and bandwidth of
units active in the application.
To pick programmable weights and priority raising de-
lays, the following procedure is recommended:
1. Try to keep CPU weight as high as possible through
the remaining steps.
2. Pick weights sufficient to guarantee latency to hard
real-time peripherals (see
Section 20.5.1
).
3. Pick weights for remaining peripherals in order to give
enough bandwidth to each (see
Section 20.5.2
). Step
2 above has priority, because bandwidth can be ac-
quired as the bus becomes free and because the hard
real-time units use a known amount of bandwidth.
4. If latency and bandwidth slack remains, increase pri-
ority raise delays in order to improve average CPU la-
tency.
20.5.1
Latency Analysis
In the following, ceil(X) is the least integral value greater
than or equal to X.
Latency is defined in each real-time unit chapter through
this databook. Refer to the related sections to find out the
latency requirement according to the mode and clock
speed at which the unit is operating.
This latency value has to be larger than the maximum la-
tency L
x
(in nanoseconds) guaranteed by the arbiter.
For a unit x the arbiter guarantees a latency of:
L
x
= L
x,sc
* (SDRAM cycle time in ns)
where
L
x,sc
= (D
x
* T) + E + ceil(D
x
* T / K
d
) * K + ceil(16*R
x
/C)
is the latency in SDRAM clock cycles.
Latency in CPU clock cycles is defined by:
L
x,cc
= ceil(L
x,sc
* C)
The symbols are defined as follows:
T = 20 cycles (transaction length, assuming worst case
pattern alternating reads and writes).
E = 10 cycles (extra delay in case the first transaction
made by the CPU requires a different bank order to sat-
isfy the critical word first.
K = 19 cycles (refresh transaction length).
K
is the programmed refresh interval (see
Section 12.11
on page12-6
).
C is the CPU/SDRAM ratio (i.e. 5/4, 4/3, 3/2, 2/1 or 1 as
explained in
Section 12.6.2 on page12-4
).
R
is the priority raise delay of unit x as stored in MMIO
register ARB_RAISE (see
Section 20.2
).
R
x
= 0 for units other than VO, VI, PCI or VLD.
D
is the worst case number of requests that the arbiter
allows before the request from unit x goes through.
D
includes the transaction from unit x (the unit which
needs the data) as well as the internal implementation
delays that occur in the transaction.
D
x
is derived from the arbiter settings as follows:
D
CPU
ceil
CPU
------------------------------------------------------
L
2
+
CPU
weight
L
3
+
VO
weight
ICP
weight
VI
L
5
+
VI
weight
PCI
PCI
weight
ceil
2
-------------------------------------------------
=
D
VO
ceil
D
2
×
1
+
=
D
ICP
ceil
L
4
+
---------------------------------------------------
D
3
×
1
+
=
D
VI
ceil
-----------------------------------------------
D
4
×
1
+
=
D
PCI
ceil
weight
-------------------------+
D
5
×
1
+
=
D
VLD
1
1
0
1
1
+
+
+
2
+
+
D
6
×
1
+
=
D
AI
ceil
1
1
0
1
1
+
+
+
1
+
+
2
D
6
×
1
+
=
D
AO
ceil
1
1
0
1
1
+
+
+
1
+
+
2
D
6
×
1
+
=
D
DVDD
ceil
1
1
0
1
1
+
+
+
1
+
+
2
D
6
×
1
+
=
D
SPDO
ceil
1
1
0
1
1
+
+
+
1
+
+
2
D
6
×
1
+
=