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.

Overhead considerations in PCIe

Hi,

I want to calculate the theorical throughput in PCIe Memory transaction using CPU 32-bits, Gen2 and x2:

-- Memory Write:

So with 24B Overhead in TLP packet, 8 B of DLL packet what is the correct formula of efficiency ?

  1. Eff1= Data/(Data+24+8) => Eff1=4/(4+24+8)
  2.  Eff1= Data/(max_Data_payload+24+8) => Eff1=4/(128+24+8)


TLP:

In other hand, with tsc measure (MWr) I got about  1.1 Gbps, it seems about the correct range no??

-- Memory Read:

How can I evaluate the efficiency? Basically I have two packets transfers:

- Request TLP without data (MRd)

- Completion with Data (CplD)

Proposition: Eff3=Data/(Data+2*(24+8)), 2* Overhead because I have completion without data, correct ????

In other hand, with tsc measure (MRd) I got about 0.16 Gbps, it seems about the correct range no??

  • For Memory Write, No#1 seems to be correct for the efficiency calculation.

    For Memory Read, it is correct that we have two stages (MRd and CpID) for each read transaction.

    Regarding to the throughput number, if you only care about the PCIe link throughput, I suggest you use the delta calculation to see the real throughput you can achieve in your system, such as

    [(data size 2) -  (data size 1)] / [(time elapsed for data transfer 2) - (time elapsed for data transfer 1)] 

    It could eliminate the overhead which is constant in both transfers. The same mechanism should apply to EDMA transfer as well, which discussed in your other threads.

  • Steven,

    Says that i want to send a data payload size less than 128B (e.g 4B) , so the size of TLP packet sent will be:

    1. just 4B+overhead 

    2. always 128+overhead, so the rest=128-4 is completed with 0s or what???

  • Delared,

    It should be just 4B+overhead. The payload size will be whatever you push to the PCIe slave port in each burst if data size <=128B.

    The payload size will be 128B if the data size >128B, and the multiple packets will be used in this case with each has 128B payload size in maximum (the last one may have payload size <128B).