SPRUHZ7K August 2015 – April 2024 AM5706 , AM5708 , AM5716 , AM5718 , AM5718-HIREL
The bandwidth limiter is added to control the bandwidth of GPU, EDMA_TPTC (RD and WR ports) and MMU1. This prevents a large number of RD requests being processed together, thus avoiding a large number of RD responses.
The bandwidth limiter regulates the packet flow in the L3_MAIN interconnect by applying flow control when a user-defined bandwidth limit is reached. The next packet is served only after an internal timer expires, thus ensuring that traffic does not exceed the allocated bandwidth. Bandwidth limiter can be used with a watermark mechanism that allows traffic to temporarily exceeds the peak bandwidth.
The registers in this group are:
Example of setting the Bandwidth Limiters:
L3_BW_LIMITER_BANDWIDTH_FRACTIONAL must be set to BandwidthConf [4 down to 0] and L3_BW_LIMITER_BANDWIDTH_INTEGER contains the remaining BandiwdthConf bits, shifted to the right. BandwidthConf = AverageBandwidth / EffectiveResolution, where EffectiveResolution parameter is set to 8.3125 MHz at design time
AverageBandwidth is a parameter representing the value to which the payload bandwidth must be limited in average; this parameter depends on the use case and is the reason that makes the content of the registers variable. In addition the maximum packet length is 8 cells, that is 32 bytes.
Assuming that the use case requires that in average the payload bandwidth is limited to 200 MB/s, then registers must be set to the following values:
BandwidthConf = 200 MBps / 8.3125 MHz = 38 (0x26)
L3_BW_LIMITER_BANDWIDTH_FRACTIONAL = LSBs [4 down to 0] of BandwidthConf = 0x6.
L3_BW_LIMITER_BANDWIDTH_INTEGER = the remaining bits of BandwidthConf shifted to the right = 0x1.
By setting L3_BW_LIMITER_WATERMARK to 65 (L3_BW_LIMITER_WATERMARK_0 = 0x41), the bandwidth limiter is able to send three packets consecutively during peaks, therefore exceeding the peak traffic with two packets (64 bytes)