|
PXD20RM Datasheet, PDF (624/1628 Pages) Freescale Semiconductor, Inc – PXD20 Microcontroller | |||
|
◁ |
not requesting, the FIFO is quite full, and when they do get on the bus, its OK for them to start with low
priority, and escalate to higher after some time.
Setting ack_sel to â0â is appropriate for peripherals that desire high priority. The e200z4d and GFX2D
GPU are in this case. When they are not on the bus, its because they find the instruction or data that they
need in the processor caches, so they donât request. When the cache misses, the request comes on the bus,
and need to be serviced fast. Therefore, ack_sel is set â0â, the default priority will be high, and servicing
fast. If e200z4d and/or GFX2D get on the bus a lot (e.g. due to a lot of cache swapping), the priority
manager will detect this, and degrade their priorities over time, so the other masters still get their fair share
of bus bandwidth.
The output of the shift register ANDED in 2 to look at only the last N ACKâs. Combinatorial logic 3
decodes the AND-ing code from register field ack_count. The number of ones after the AND-ing is added
up in adder 4, and saturated, so that the result out of adder 4 is a number in the range of 0 to 15. This number
is input in the look-up table 5. Table look-up content is taken for e.g. channel 1 from register LUT 1
main[63:0] or LUT 1 alternate[63:0]. Because of the 64-bit nature of the registers, actually 4 32-bit
registers are involved, whose description is given in Figure 14-6, Figure 14-7, Figure 14-8, and
Figure 14-9.
Selection on whether to use the âmainâ or the âalternateâ register, is done via MUX 6. The MUX condition
has 2 possible sources again, selected by MUX 7, by means of control bit LUT sel, described in register
prioman_config, with details in Figure 14-3.
If LUT sel is â1â, alternate table is selected when the multi-port controller is congested. If LUT sel is â0â,
alternate table is selected when DCU incoming priority is higher than 8.
Pipeline register 8 is present purely for implementation reasons. It has no algorithmic function.
For the DCU, an additional bypass mux 9 is present. It overrules the prioman logic, and inserts the
incoming DCU priority in the output, if control bit DCU overrule is set. This bit is present in register
prioman_config, with details in Figure 14-3.
14.5.3 Congestion detector
The congestion detectors purpose is to detect when the DRAMC is congested. Congestion is assumed if
the share of the requests with priorities equal or greater than 8 is more than a certain percentage. If
congestion occurs, the priority manager may react by exchanging the look-up tables with the alternate
look-up tables, and in this way, reduce the average priority of the incoming requests. The reduced priorities
mean that on average, every incoming channel gets a lower priority, and the DRAMC will try harder to
optimize on bandwidth, and less to optimize to service the high-priority requests first. The switch-over is
driven by the congestion state. If many requests come in on âhigh priority,â so they all need to be serviced
âfirst,â the âcongestedâ flag goes high, and the controller reacts to this by reducing the request priorities
(by switching in the alternate tables), so it can concentrate on the ones that are âreallyâ important, and get
room again to optimized bandwidth.
14-24
PXD20 Microcontroller Reference Manual, Rev. 1
PreliminaryâSubject to Change Without Notice
Freescale Semiconductor
|
▷ |