Memory Performance Optimizations for AXI4 Interface

The AXI4 MM interfaces typically connect to DDR memory controllers in the platform. For optimal frequency and resource usage it is recommended that one interface is used per memory controller. For best performance from the memory controller, the following is the recommended AXI interface behavior:

  1. Use an AXI data width that matches the native memory controller AXI data width, typically 512 bits.
  2. Do not use WRAP, FIXED, or sub-sized bursts.
  3. Use burst transfer as large as possible (up to 4KByte AXI4 protocol limit).
  4. Avoid use of de-asserted write strobes. De-asserted write strobes can cause ECC logic in the DDR memory controller to perform read-modify-write operations.
  5. Use pipelined AXI transactions
  6. Avoid using threads if an AXI interface is only connected to one DDR controller.
  7. Avoid generating write address commands if the kernel does not have the ability to deliver the full write transaction (non-blocking write requests).
  8. Avoid generating read address commands if the kernel does not have the capacity to accept all the read data without backpressure (non-blocking read requests).
  9. If a read-only or write-only interfaces are desired, then the ports of the unused channels can be commented out in the top level RTL file before the project is packaged into a kernel.
  10. Using multiple threads can cause larger resource requirements in the infrastructure IP between the kernel and the memory controllers.