11.1.1. Interface Configuration Bottleneck and Efficiency Issues
Any interface has a maximum theoretical data rate derived from the clock frequency, however, in practice this theoretical data rate can never be achieved continuously due to protocol overhead and bus turnaround times.
Simulate your desired configuration to ensure that you have specified a suitable external memory family and that your chosen controller configuration can achieve your required bandwidth.
Efficiency can be assessed in several different ways, and the primary requirement is an achievable continuous data rate. The local interface signals combined with the memory interface signals and a command decode trace should provide adequate visibility of the operation of the IP to understand whether your required data rate is sufficient and the cause of the efficiency issue.
To show if under ideal conditions the required data rate is possible in the chosen technology, follow these steps:
- Use the memory vendor's own testbench and your own transaction engine.
- Use either your own driver, or modify the provided example driver, to replicate the transaction types typical of your system.
- Simulate this performance using your chosen memory controller and decide if the achieved performance is still acceptable.
Observe the following points that may cause efficiency or bottleneck issues at this stage:
- Identify the memory controller rate (full, half, or quarter) and commands, which may take two or four times longer than necessary
- Determine whether the memory controller is starved for data by observing the appropriate request signals.
- Determine whether the memory controller processor transactions at a rate sufficient to meet throughput requirements by observing appropriate signals, including the local ready signal.
Consider using either a faster interface, or a different memory type to better align your data rate requirements to the IP available directly from Intel® .
Intel® also provides stand-alone PHY configurations so that you may develop custom controllers or use third-party controllers designed specifically for your requirements.