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]关于写入操作吞吐量的问题

Guru**** 2616675 points

Other Parts Discussed in Thread: 66AK2H12

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/577295/66ak2h12-srio-question-about-write-operatio-throughput

器件型号:66AK2H12

您好!

当我陷入困境时、此论坛始终能为我提供帮助、再次感谢。

我对 SRIO 中的写入操作吞吐量有一些疑问。  

我的环境如下:

 -定制板(DSP:66AK2H12、FPGA:Xilinx 顶点7)
 - PDK:v4.0.4
 - CCS:v7.0.1
 - SRIO:每通道5Gbps * 4通道(总共20Gbps)

当 DSP 发送具有256KB 有效载荷的写入操作数据包时、FPGA 可以接收该数据包。 因此、我可以测量它们之间的时间差。

根据这些数据、我计算性能、显示出不是最大吞吐量的几乎10Gbps。  

我发现降低其速度有几个因素、例如8b/10b 编码、SerDes 模块等。 但10Gbps 的吞吐量不合理。

我的问题是:

 测试方案是从 DSP 向 FPGA 发送256000字节,只有一个发送操作是 DSP 端(它齿400ns),SRIO IP 将其数据分开256字节
 即最大数据包有效载荷大小。 信号图如下所示:(由于我工作场所的安全策略、抱歉未上传图片)

           |--- |      |--- |     |----------------

           |               |      |             |     |

           |               |      |            |     |      …

_________________ |               |_________ |            |_____|                  三

           |               |       |

           |       第一      |  #2 |  

               (145ns)      (62ns)

该脉冲显示 FPGA 中的数据包接收信号。 1号脉冲正在处理 FPGA 中的数据包。 但有时间段(提到#2)、数据包不是从 DSP 发送的。
我假设数据包处理在 DSP 端发生(以256字节为单位进行单独处理、以数据包的形式附加标头格式等...)  

 是否有任何方法可以减少#2周期? 我`s 找到控制其字段的寄存器、但数据包生成发生在 SRIO IP 的 PHY 层、并且会自动生成。

2.我测量了两个写入操作吞吐量,NWRITE 和 SWRITE (流式写入)。 但它们之间没有区别。 请参阅 SRIO 白皮书、SWRITE 具有简短的标头格式、

和低开销、因此我想它会影响吞吐量。 但没有发生任何事情。  

 是否有任何结果可以比较具有相同大小的 NWRITE 和 SWRITE 格式之间的性能?

n`t 英语不好,我无法详细解释我的问题。 很抱歉。。。

再次感谢。

此致、

Chanseok

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Chanseok、

    我已将此事转发给设计专家。 他们的反馈应发布在此处。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1) 1) 您是否在 http://www.ti.com/lit/an/sprabk5b/sprabk5b.pdf 中看到了表18

    在您讨论的方案中、硬件可支持13.4Mbps。  SRIO 外设将尽可能快地突发数据包、几乎没有数据包间隙。  因此、我认为发生了两种情况中的任何一种、FPGA 接收数据包的速度不够快、并且发出物理层重试、或者您在 K2H 器件内部发生的具有存储器访问的资源争用。  针对这一情况的一个快速简单测试是禁用所有其他存储器访问并只执行 SRIO 流量 TX 操作。  那么、您获得了多少吞吐量?

    2) 2)在相同尺寸的情况下、SWRITE 和 NWRITE 在性能上几乎没有差异。

    此致、

    特拉维斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Travis:

    感谢您提供详细的回答。 我将处理该情形。

    n`t 你不介意,我还有一个问题。 实际上、我通过 DIO 套接字发送 SRIO 数据包。 在驱动程序代码中、我认为 DIO 和 PKTDMA (QMSS+CPPI)之间没有关系。

    我删除了该代码、它起作用。 这是否会影响禁用 PKTDMA 时 SRIO 的整体性能?

    (我n`t、当我尝试使用包含 SRIO 示例的 tput_benchmark 进行测试时、它不能与修改后的驱动程序配合使用。 但是、当我回滚驱动程序(原始驱动程序)时、它会起作用。 它们之间的唯一区别是 QMSS 初始化。 我修改的代码不包含 QMSS 初始化)  

    感谢你的帮助。

    此致、

    Chanseok

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [n`t 用户="Chanseok Kang)]如果您不介意,我还有一个问题。 实际上、我通过 DIO 套接字发送 SRIO 数据包。 在驱动程序代码中、我认为 DIO 和 PKTDMA (QMSS+CPPI)之间没有关系。

    正确!

    [引用用户="Chanseok Kang"]

    我删除了该代码、它起作用。 这是否会影响禁用 PKTDMA 时 SRIO 的整体性能?

    (我n`t、当我尝试使用包含 SRIO 示例的 tput_benchmark 进行测试时、它不能与修改后的驱动程序配合使用。 但是、当我回滚驱动程序(原始驱动程序)时、它会起作用。 它们之间的唯一区别是 QMSS 初始化。 我修改的代码不包含 QMSS 初始化)  

    [/报价]

    使用 DIO (LSU)模式时、不需要任何 PKTDMA 初始化。  我不确定代码中的什么会导致它无法正常工作、除非您未启用消息传送测试或在初始化中删除过多内容(例如可能与 SerDes 相关)、从而阻止了 DIO 工作。

    此致、

    特拉维斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Travis:

    `ve、我完成了测试、发现了原因是什么。

    实际上、我在 DDR 区域中分配了源缓冲器(将其定义为全局缓冲器、因此它 可能会分配到堆段中。)

    在我将位置从 DDR 更改为 L2SRAM 后、发布周期(问题中提到#2)减少25ns。 (64ns->25ns)

    在这种情况下、结果显示了最大吞吐量(13.1Gbps)。 结果如下:(DIO_NWRITE)

    字节 写入 API FPGA 接收 释放循环 总计(us) 吞吐量(Mbps)
    256 414ns 138ns - 1.214. 1686.985173
    512 412ns 137ns 25ns 1.37. 2989.781022
    1024 415ns 138ns 26ns 1.68 4876.190476
    2048 410ns 138ns 26ns 2.285. 7170.2407
    4096 410ns 138ns 25ns 3.49. 9389.111748
    8192 412ns 137ns 25ns 5.93 11051.60202
    16384 412ns 137ns 25ns 10.82. 12113.86322
    32768 - - - 20.522 12773.80372
    65536 - - - 40.07 13104.90664
    131072.

    但出现了另一个问题。 当我将128K 字节数据(在 L2SRAM 中) 从 DSP 发送到 FPGA 时、FPGA 不会接收某些数据(总时间以46us 结束...当我在 DDR 中进行测试时、会接收到所有数据)

    我`s 可能是 FPGA 的问题。 但是、当 FPGA 以相同的选项将批量数据发送到 DSP 时、DSP 也会丢失一些数据。

    这是一个问题。  当调用发送 API (SRIO_sockSend_DIO :在 LLD)时,数据将加载到 LSU 影子 寄存器中,并将其分隔256个字节,并对目标进行拍摄。

    我想 SRIO IP 具有内部缓冲器。  内部缓冲器是否有可能发生溢出? (我是说数据加载速度太快、无法存储在 LSU 寄存器中)或使用 SRAM 源缓冲器时的限制?

    感谢您一如既往的支持。

    此致、

    Chanseok。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="Chanseok Kang"]我猜 SRIO IP 具有内部缓冲区。  内部缓冲器是否有可能发生溢出? (我是说数据加载速度太快、无法存储在 LSU 寄存器中)或使用 SRAM 源缓冲区时的限制?[/quot]

    不可以、没有办法溢出缓冲区。  您从 LSU 获得了哪些完成代码?

    此致、

    特拉维斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Travis:

    感谢您的回复、
    我在无阻塞插座上进行了测试。 n`t 我没有检查完成代码(原因我猜完成代码用于阻塞套接字中的传输完成)。 在非阻塞套接字的情况下、何时可以检查完成代码? 在发送数据包后?
    无论如何、我将再次检查它。

    感谢你的帮助。

    此致、
    Chanseok
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我检查了完成代码、找到了它的值0xB (0b1011)。 然后、几个步骤后、它更改了0xA (0b1010)。
    请参阅数据表、这意味着 DMA 数据传输错误。 我n`t 找不到有关此 DMA 的任何信息。 我想它可能是 EDMA。 (在数据表和示例代码中没有有关配置 DMA 的说明)
    如何处理?

    此致、
    Chanseok。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    终于找到了原因。 实际上、一些模块被初始化、例如 UIA、NIMU、NDK。 禁用此选项后、该问题消失了。 其中一个模块可能需要一些资源或发生总线争用。
    非常感谢您的帮助。

    此致、
    Chanseok。