AN 1003: Multi Memory IP System Resource Planning: for Intel Agilex® 7 M-Series FPGAs

ID 788295
Date 11/22/2023
Public
Document Table of Contents

6.3.3. Performance Debug Steps

To debug a performance issue, determine whether the issue is caused by controller efficiency or congestion in the NoC. Apply the appropriate improvement methods according to the steps below.
  1. Use design simulation to indicate whether memory controller efficiency is an issue. The NoC simulation model does not consider NoC congestion, but does include approximately accurate interleaving of traffic reaching the target. If the performance problem persists in simulation, this is indicative of a controller efficiency issue, or insufficiently high clock rate for the initiators or target.
  2. If possible in your system, disable traffic to all other connections, except for the NoC target of interest and all of its connected initiators. If the problem resolves, this indicates that the source of the problem is congestion from connections on the NoC. If the problem does not resolve, the likely cause is the load of other connections to that same target, or memory controller efficiency.
  3. If you suspect the performance issue is related to memory controller efficiency, review the access pattern for each initiator, and the effective access pattern when multiple initiators send transactions to one target. Consider using the following techniques to improve efficiency and performance:
    • Increase the transaction size if your application permits. Refer to Transaction Size.
    • Implement address re-ordering to suit your access pattern. The HBM2E Intel FPGA IP supports address re-ordering, which changes the mapping between your logical address and the memory physical address (row, column, bank, bank group).
    • If your application can take advantage of it, enable auto-precharge control if using the HBM2E Intel FPGA IP.
  4. If you suspect the performance issue is related to congestion, move NoC initiators and targets to reduce overlap between critical connections and other traffic, if possible. Refer to Congestion Interaction.
  5. To reduce throughput on less critical connections that overlap more critical, congested connections, modify the transaction issue rate in your design. In general, making critical connections as short as possible is also beneficial.
  6. To raise the priority of critical connections and decrease the priority of less critical connections, apply the QoS priority feature. Refer to QoS Priority.

Congestion can be caused by memory controller efficiency, as Congestion Interaction describes. A connection with a high number of outstanding transactions that is limited by the target throughput that includes controller efficiency, causes congestion of overlapping traffic. This congestion occurs because slow moving traffic queues in the NoC. For such connections, implement the following changes:

  • Move the connection to a dedicated path on the NoC that does not overlap with other traffic. A direct connection through a switch is optimal.
  • Limit the transaction issue rate in your application to reduce the number of outstanding transactions that queue in the NoC.