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.

66AK2H12 SRIO packet priority

Hi,

My customer used SRIO in the following condition.

Table 2-4 SerDes Lane Configurations for Various Port Widths(SPRUGW1B)
    Configuration 4  Mode3 : x2 lane, x2 port

Q1.  Do the SWRITE, NWRITE and NWRITE_R packets handled correctly when port A and port B receive packets at the same time which containing same SRCID?
I am minding if port A or B returns the wrong response to the other, when both ports are recieved packet containing same SRCID.

Q2.  If multiple ports receive packets containing the same SRCID, dose the following constrain in SRIO UG consider
        the receiving ports? That means that SRIO peripheral handles these packets as "same SRCID transaction" or NOT.


Q3.  When each ports receive the different priority packet at same time:
 Q3-1.  Does high-priority packet be processed at first? If so, could you explain the scheduling scheme among multiple ports?
  Q3-2.  During processing the lower priority packet, when does the SRIO peripheral switch to the higher packet?

Best regards,
H.U

  • Hi,
    Ans1: The software decides to flush the transaction. It writes to the flush bit for the LSU. All transactions originating from the same SRCID that are present in the shadow registers for the specific LSU will be flushed. This can take more than one cycle to do the flush.
    Ans2:  same SRCID transaction
    Ans3:  If a read/write request comes in with a same SrcID, same DestID, and same or lower Priority as any pending transaction (pending completion status from DMA), then the MAU is stalled at this point to wait until those outstanding transactions (of same IDs, =< pri) are completed.
    Thanks,
  • Ganapathi
    Thanks for your answers.
    I am working with H.U.

    For Ans1:
    We think this is NOT the software matter. That means SRIO peripheral (hardware)
    totally handles all receiving packets. Our concern is `Are there any possibility
    that SRIO peripheral sends out a response to the wrong port if SRIO receives NWRITE_R
    or NREAD packets with same SRCID from multiple ports.`. How about this?

    For Ans3:
    We are little bit confused.
    Since other posts say `priority is not used` as follows, but your explanation says
    `priority is used on MAU`.
    Could you clarify this difference and give more detail explanation?

    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/280857
    "From the view point of the RX packets, no prioritization is considered by the physical layer buffers
    at the ports. Subsequently, the shared buffers use a round robin approach to pull data from all 4 ports."
    http://processors.wiki.ti.com/index.php/SRIO_Implementation_Facts
    "For the inbound packets the packet priority is not important. It processes the packets in the order it was received."

    Best regards, RY
  • Ganapathi,
    Sorry to trouble you.
    Could you give me a comment about this?
    Best regards, RY
  • Ganapathi,

    I am waiting for your comment.
    Please return it to me as soon as possible.
    Best regards, RY

  • Ganapathi-san,

    Happy new year!
    We need your comment. Please respond me.
    Best regards, RY
  • Hi RY,

    Happy New Year.

    Sorry for the delay.
    Ans2: I will check with my team and get back to you.
    Ans3: Please take a look at below thread
    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/439/p/254392/892973#892973

    Thanks,
  • Ganapathi-san,

    Thank you for your support.
    For Ans3: We have two questions.

    1) The post you mentioned says that SRIO peripheral schedules packets considering packet priority.
    However the Wiki, we mentioned previously, says that SRIO peripheral processes the packets in the order it was received.
    Which one is correct? The description in Wiki is incorrect?

    2) The post you mentioned says as follows:
    "If a read/write request comes in with a same SrcID, same DestID, and same or lower Priority as
    any pending transaction (pending completion status from DMA), then the MAU is stalled at this point to
    wait until those outstanding transactions (of same IDs, =< pri) are completed. "
    We would like to clarify this description.
    If SRIO peripheral receives posted-write type packets (SWRITE or NWRITE) continuously,
    with same SrcID/DestID/Priority, dose MAU stall until previous posted-write request reaches
    to final destination memory(such as DDR)? If yes, we think such mechanism impacts throughput negatively.

    Best regards, RY

  • Ganapathi-san,

    Could you give us additional comments?

    Best regards, RY

  • Some of those references, especially the wiki stuff, is referring to C64x. C66x was enhanced in many areas.

    Q1. Do the SWRITE, NWRITE and NWRITE_R packets handled correctly when port A and port B receive packets at the same time which containing same SRCID?
    I am minding if port A or B returns the wrong response to the other, when both ports are recieved packet containing same SRCID.


    ANSWER: For non-posted request packets, the corresponding outbound response packet will always be sent out on the same port the request came in on. The port is maintained and we simply swap the SRCID and DESTID of the request for the outbound response.

    Q2. If multiple ports receive packets containing the same SRCID, dose the following constrain in SRIO UG consider
    the receiving ports? That means that SRIO peripheral handles these packets as "same SRCID transaction" or NOT.

    ANSWER: The text you highlighted in RED is for the LSU, which is a logical layer transmitting block. It has nothing to do with RX ports. The LSU can send/track 16 outstanding packets at a time that are part of one transaction. For example, you program the LSU to send 4KB, it will blast out 16 256B packets as fast as it can, without waiting for any reponses. However, it will not move to the next LSU shadow register until all responses of the preceding transaction are recieved. If two separate LSUs try to reuse the same SRCID/DESTID pair, it will also wait until the first one is done.

    Q3. When each ports receive the different priority packet at same time:
     Q3-1. Does high-priority packet be processed at first? If so, could you explain the scheduling scheme among multiple ports?
    Q3-2. During processing the lower priority packet, when does the SRIO peripheral switch to the higher packet?

    ANSWER: In C66x devices, the physical layer RX ports attempt to pass their packets to the logical layer in the following manner.
    - there are RX buffer thresholds for each priority in both the physical layer and logical layer
    - each port will re-order packets and pass the highest priority packet to the logical layer. The thresholds determine if the highest priority packet for that port is able to be sent.
    - the physical layer RX state machine will round robin between ports, always attempting to send that port's highest priority packet to the logical layer. If it can't it moves on in the round robin.

    Also note that all packet handling is done at a packet boundary. It handles one packet then moves on in the state machine. Also note that once the packets are in the RX shared buffer, they are handed to the protocol blocks (i.e. MAU, LSU, RXU, TXU, etc) based on priority as well.

    Regards,
    Travis

  • 2) The post you mentioned says as follows:

    "If a read/write request comes in with a same SrcID, same DestID, and same or lower Priority as

    any pending transaction (pending completion status from DMA), then the MAU is stalled at this point to

    wait until those outstanding transactions (of same IDs, =< pri) are completed. "

    We would like to clarify this description.

    If SRIO peripheral receives posted-write type packets (SWRITE or NWRITE) continuously,

    with same SrcID/DestID/Priority, dose MAU stall until previous posted-write request reaches

    to final destination memory(such as DDR)? If yes, we think such mechanism impacts throughput negatively.

    ANSWER:  Correct, this is the functionality that was built in to the SRIO peripheral in order to maintain SRIO priority ordering on the chip.  What you have to remember is that the DMA bandwidth is very large, so the affects on the SRIO throughput are not huge.  If you take a look at the measured SRIO throughput performance in: http://www.ti.com/lit/an/sprabk5a/sprabk5a.pdf

    the number reflect the performance while using the same SRCID/DESTID on posted transactions.

    Regards,

    Travis

  • Travis-san,
    Thanks so much for your answer. RY