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.

DSPC 8681 PCIe speed

Hello,

I want to benchmark the data read/write speed from my Linux host PC to the DDR3 memory on the DSPC 8681 card via the PCIe connection.

I modified the ipc example provided to simply read or write large blocks of data in a loop, and timed the total transfer time on the Linux PC side.

I get quite poor performance compared to what the theoretical PCIe x2 speed should be.  For writes to the DSP card I get 100 MBps and reads

are 1 MBps.

From what I understand, inbound transfers via the PCIe peripheral do not require EDMA intervention.

Does anyone have any experience with data rates for this card via the PCIe connection?

Thank you,

Sharmila

  • Sharmila,

    CPU initiated transfers are very slow and EDMA is necessary for throughput. You should be able to see 5-600 Mbytes/sec in either direction.

    You can download the Desktop Linux SDK package from http://software-dl.ti.com/sdoemb/sdoemb_public_sw/desktop_linux_sdk/latest/index_FDS.html

    There is an EDMA example that transfers data to/from DSP. Please follow steps listed in the Getting Started Guide.

    Regards,

    Vivek

  • Vivek,

    Thank you for your response.  I am actually initiating the transfer from my Linux host PC to the DSP.  From what I understand, this is considered an "inbound" transfer to the DSP and as such does not require EDMA.  Here is my reference :

    "PCIe Use Cases for KeyStone Devices Application Report", SPRABK8, Section 1.3 :

    "Inbound transfer means the external device initiates the transactions to write to or read from the local device.

    The PCIe module has a master port to transfer the data to or from the device memory; no CPU or EDMA is needed for inbound transfer in the local device."

    Have you used the DSPC 8681 card and seen the 5-600 MBps rates with either type of transfer ?

    Thank you,

    Sharmila

  • Sharmila,

    We extensively use DSPC8681 and 8682 cards for Video applications, running multi channel, multi device codecs (JPEG2000, AVC etc). We have actually profiled and seen 5-600 MBps throughput per device. Once the BAR windows are programmed, X86 memory is visible in the DSP. Please note that the X86 memory has to be contiguously allocated (CMEM and cannot be malloc'd). Physically contiguous memory is needed for EDMA to work. We could use either X86 DMA or DSP's EDMA to do the transfer and we use DSP's EDMA engine to do the transfer. (Either DSP or X86 CPU initiated transfers are very slow). X86 can program the DSP's EDMA engine without DSP intervention over PCIe.

    Please see the out of box example in the link I provided earlier. You have ready-made APIs available to do transfers. You can also browse through the development guide.

    Regards,

    Vivek

  • Vivek,

    Your suggestion worked well.  Thank you.

    Sharmila

  • Hi Vivek,

    in KeyStone devices, the maximum PCIe data payload size is limited to 256 bytes for inbound transactions.

    For outbound transfers, the Keystone PCIe peripheral is able to transfer packets of up to 128 bytes.

    Is DSPC-8681 maximum PCIe data payload size also limited to 256/128 bytes for Inbound/Outbound transactions?

    As far as I knew, DSPC-8681 has PLX PEX8624 PCie Switch which supports maximum payload size 2048 bytes.

    Regards.

    YC

  • YC,

    I'm not sure if I understand your question. Are you talking about the EDMA burst size (DBS)? 

    Regards,

    Vivek

  • Hi Vivek

    Please see the original thread:

    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/316263/1100206.aspx#1100206

     "Throughput Performance Guide for C66x KeyStone Devices"(SPRABK5A1) 12.1.2 Packet Size Considerations

    For outbound transfers, the Keystone PCIe peripheral is able to transfer packets of up to 128 bytes, how about DSPC-8681?

     

    Regards.

    YC