AnsweredAssumed Answered

IPU/PCIe throughput problem on i.MX6

Question asked by Stjepan Henc on Oct 9, 2015
Latest reply on Oct 12, 2016 by Carl Jackson


I am currently working on a project that is trying to transfer raw video from the i.MX6 Solo ARM processor
over a PCIe link to an FPGA. The i.MX6 in this case serves as the root complex(RC), and the FPGA is the Endpoint.
We are using a pcie x1 gen1 link.


The firmware running on the i.MX6 is based on this demo
Basically we want to use IPU to transfer frames to memory that is connected to the FPGA and read it back.


I have attached screenshots from the FPGA's on-chip logic analyzer showing that writing data works fine and with
reasonable link utilization. In the logic analyzer screenshots the x_st signals indicate the first 32-bit doubleword
in a packet, and x_end indicates the last 32-bit doubleword in the packet.


However, we have a problem with reading data from the FPGA.


In my opinion the problem is that the IPU doesn't read data the way it is supposed to do according to
the PCIe specification or the way it is usually used. The PCIe specification allows the root complex
to request a lot of data (for example 4KB), which the endpoint then completes with multiple 128B packets (TLPss).


When using the IPU with software inspired by your PCIe validation/throughput demo, we can see that the root complex
generates small requests - at most 64 bytes at a time. This is an issue because for some reason our current
PCIe setup then issues at most 4 memory read TLP's at a time.


You can see from the screenshots that this leads to very poor throughput.


I have also reproduced this problem in HDL simulation with a root complex simulation model,
so I believe this is a limitation of PCIe.
I am currently digging into the specification to verify this.


My question for you is whether there is a way to get the i.MX6's PCIe and IPU modules to generate
PCIe read requests which are at least 1KB in size.   
I believe this would greatly help with our bandwidth problem.


Please feel free to ask me for any aditional details or clarifications about this problem,
so this problem can be resolved.


Kind regards,
Stjepan Henc