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.

PCIe EDMA reading average throughput.

Hello all,

I want to use project "pcieboot_interrupt" from
mcsdk_2_01_02_06\tools\boot_loader\examples\pcie\
for writing packages into DSP and reading packages from DSP with the average throughput
about 330MB/Sek. But the function mdelay(1000) dramatically decreases the average
throughput for DMA reading.

Please answer on the following question: What code necessary to place into this example
instead of mdelay(1000) to keep the average throughput about 330MB/Sek for DMA reading?

I used:
Code Composer Studio 5.2.1.00018
mcsdk_2_01_02_06
MDSEVM6678L/MDXEVMPCI board
OS - Debian7, Ubuntu10.04

Best regards,

  • Hello,
    Thank you for the post. What is the measured read throughput and data burst size used for DMA?
    Use data burst size 124 bytes for better performance. Thank you.
  • Hello,

    Throughput for DMA reading calculated without mdelay(1000) will be = 4MB/diff = 342MB/Sek; diff=0.011676 Sek

    Average throughput for DMA reading used within the cycle necessary calculate with mdelay(1000) = 1 Sek. So it will be = 4MB/(1.0+0.011676 ) = 3.95MB/Sek

    Please correct me if I am not right.

    Regards,

    Viktor.
  • Hi,

    Your understanding is not correct.

    The mdelay(1000) does not effect the throughput results, the delay is used for interrupt handling. Transfer start & end times are get before and after the writeDMA function call, these timer values are used to calculate the throughput. For more information refer pciedemo.c file.

    Thanks,
  • Hi,

    Thank you for your quick answer.

    > the delay is used for interrupt handling
    I wrote about the case when mdelay(1000) will be within a cycle.
    I.e. reading and writing operations will be within a cycle.

    Should I make the concrete example?

    Regards,

    Viktor.

  • If you add the delay after the transaction means, it will not affect the throughput.

    What is the intention for reduce the throughput?

    Thanks,
  • In reply to  Ganapathi

    OK.

    For any case I have looked into Wikipedia

    Throughput is the rate of successful message delivery over a communication channel.

    Throughput is usually measured in bit per second and sometimes in data packets per second or data packets per time slot.

    To avoid terminological discussion I will write about

    Average data reading rate using DMA.   It equal = Total reading data/Total time.

    Total time includes the delay time, becase we can not  use receiving data before this delay.

    So average rate within the cycle have to take into account the delay time.

    Now my question is: which checkup can be used instead of mdelay(1000) to reduce this delay time and therefore to increase the Average data reading rate.

    Thank you.

    Regards,

    Viktor.