Following is an overview of performance tuning for the NoC and integrated DDRMC:
- Choose the traffic class for each NoC
master.
- If the master has a cache, reads are low latency (LL) and writes are best effort.
- If the master has any hard or soft real-time requirements (for example video applications), the traffic class is isochronous (ISOC).
- Otherwise, choose best effort (BE). If unsure, this should be the default.
- Select bandwidth allocation for each flow. The bandwidth allocations
determine what happens when all masters are trying to get service and there is
contention.
- For LL traffic, the bandwidth allocation should be a small fraction of the available DDR bandwidth.
- For ISOC traffic, the bandwidth needed/generated by the master is typically known, and the allocation should match that bandwidth.
- For BE traffic, choose a minimum desired bandwidth.
- Configure masters to send the longest bursts possible. This will have the best DDR efficiency.
- Tune the DDR performance first before the NoC. Ensure row/bank/column mappings are optimized.
- If DDR performance is optimal but the overall NoC traffic specification is still not met:
- Examine shared routes through the NoC. Some masters might get less bandwidth than expected due to sub-optimal sharing of routes.
- A BE master might get less bandwidth than expected on reads due to finite
read reorder buffer entries in the NMU.
- Moving the master closer to DDR can help.
- Increase the bandwidth allocation of the master. For BE traffic this might not always help. The NoC applies some traffic shaping to BE based on allocations, but the memory controller treats all BE traffic with equal priority.
- Other options are to make the master ISOC, or to rate limit other BE masters.
Note: For more information on tuning NoC performance, see Improving
Performance Through the NoC in
Versal Adaptive SoC System Integration and Validation
Methodology Guide (UG1388).