12. Optimizing Controller Performance
The following topics discuss factors that affect controller efficiency and ways to increase the efficiency of the controller.
Controller efficiency varies depending on data transaction. The best way to determine the efficiency of the controller is to simulate the memory controller for your specific design.
Controller efficiency is expressed as:
Efficiency = number of active cycles of data transfer/total number of cycles
The total number of cycles includes the number of cycles required to issue commands or other requests.
The following cases are based on a high-performance controller design targeting an FPGA device with a CAS latency of 3, and burst length of 4 on the memory side (2 cycles of data transfer), with accessed bank and row in the memory device already open. The FPGA has a command latency of 9 cycles in half-rate mode. The local_ready signal is high.
- Case 1: The controller performs individual reads.
Efficiency = 1/(1 + CAS + command latency) = 1/(1+1.5+9) = 1/11.5 = 8.6%
- Case 2: The controller performs 4 back to back reads.
In this case, the number of data transfer active cycles is 8. The CAS latency is only counted once because the data coming back after the first read is continuous. Only the CAS latency for the first read has an impact on efficiency. The command latency is also counted once because the back to back read commands use the same bank and row.
Efficiency = 4/(4 + CAS + command latency) = 4/(4+1.5+9) = 1/14.5 = 27.5%
Did you find the information on this page useful?