This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6678 low PCIe throughput

I am trying to  measure the PCIe throughput of C6678 system. I have connected the C6678 EVM to a PC with the PC acting as RC and C6678 as EP.

Only IBL is running on C6678. And PC side has mapped one BAR to the DDR on C6678 and is pushing data into it. The maximum throughput i am getting is only 250MBs

which is very less compared to the fact that the link is 2x and gen2.

Can somebody help me out?

  • Just to add to what i had posted previously. I am using the "pciedemo" sample driver obtained with mcsdk on the PC side. Instead of sending the Hello world data , i am sending some 14MB of data to the BAR which is mapped to DDR of C6678.  When i measure the thoughput, i am getting a very low throughput of 250MBps.

  • With Gen 2 (5 Mbits/sec) of 2x, maybe you are expecting 10 Mbits/sec (or 8 Mbits/sec after 8b/10b coding), but are seeing only 2 Mbits/sec (250 MBytes/sec).

    If your RC is writing from a software loop instead of DMA, then it's likely that each 32-bit write (or 64-bit write if your machine is 64-bit) is in its own PCIe packet.

    Each PCIE Write packet contains overhead, such as 12 byte header (or 16 bytes for 64-bit addressing), framing bits, and maybe CRC. Maybe that would explain it.

    To get the full 8Mbits/sec, it is necessary to uses a large data payload (to dilute the packet overhead). In some architectures, that only happens for DMA transfers.