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.

[参考译文] TMS320C6678:SRIO 通过多核提交多个未决请求以进行过帐的写入操作

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/667261/tms320c6678-srio-submit-multiple-outstanding-requests-by-multicore-for-posted-write-operations

器件型号:TMS320C6678

我们的客户希望了解多内核如何提交多个未决的已过账写操作请求。 SRIO 硬件似乎不支持多内核使用八个 LSU 寄存器集提交多个未决请求。

用于 KeyStone 器件的串行 RapidIO (SRIO)用户指南(修订版 B)
http://www.ti.com/lit/ug/sprugw1b/sprugw1b.pdf

(第57页)

"有八个 LSU 寄存器组。 这样就可以为所有人提出八项未决请求
 需要响应的事务类型(即未过帐)。 对于多核器件、
 软件管理寄存器的使用。 共享配置总线(VBUSP
 接口)用于访问所有寄存器集。 单核器件可以利用全部八个 LSU
 块。"

2.3.2.2.1写入事务(第61页)

"对于不需要 RapidIO 响应数据包的已发布写入操作、内核
 可能会提交多个未决请求。 例如、单个内核可能有许多
 在给定外出资源的情况下、在任何给定时间缓冲的流式写入数据包。 在这里
 应用、一旦数据包被释放到影子寄存器中
 写入到共享 TX 缓冲池中。 如果请求已被流控
 外设将设置的完成代码状态寄存器和相应的中断位
 ICSR。 在中断服务之后、控制/命令寄存器可被释放
 例行程序完成。"

我们的客户经常看到、在多核通过为每个内核使用一个 LSU 寄存器集提交多个未完成的已发布写入操作请求后、输出端口会接收到一个数据包重试控制符号。

客户是否应更改当前多核提交多个未决的已过帐写操作请求的方法?

如果是、如何实现它?

此致、

Daisuke

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    团队将收到通知。 他们将直接在此处发布反馈。

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

    我将对此进行研究。

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

    Yordan-San 和 Tsvetolin-San、

    感谢你的答复。

    我们的客户在 已发布的写操作中测量了 C6678侧的内部中断时序和目标器件侧的中断时序、该写操作通过为每个内核设置一个 LSU 寄存器来提交多个未决请求。

    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/664134/2452847#2452847

    终端客户已经使用了使用多个 C6678的1、000多个客户产品系统。 此外、使用多个 K2H 和 C6678的新产品系统 已经过测试。 因此、他们非常关心 SRIO 的当前使用是否正确。

    此致、

    Daisuke

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

    Yordan-San、您好!

    您对此问题是否有任何更新?

    我们客户的当前方法如下:

    -为每个内核使用一个 LSU 寄存器集

    -四个内核向一个目标设备提交多个未完成的 NWRITE 请求(FType=5、tType=4)。

    结果如下:

    -输出端口接收数据包重试控制符号

    - C6678端的内部中断在请求操作完成后不到20uec 后发生。

    -请求操作完成后、目标器件端的中断在大约400 μ s 后发生。

    -所有数据包均到达目标设备端,传输操作完成。

    所有数据包都到达目标器件、但这非常耗时。

    是否允许多核通过使用个 LSU 寄存器集提交多个未决的已发布写入操作请求?

    此致、

    Daisuke

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

    Yordan-San、您好!

    [引用用户="Daisuke Maeda"]
    是否允许多核通过使用个 LSU 寄存器集提交多个未决的已发布写入操作请求?
    [/报价]

    多内核是否应通过仅共享一个 LSU 寄存器集来提交多个未决的已发布写入操作请求?

    请尽快给我一个答案。 如果您能及时回复、我们将不胜感激。 很抱歉让你花了宝贵的时间。

    此致、

    Daisuke

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

    >是否允许多内核通过使用多个 LSU 寄存器集提交多个未决的已发布写入操作请求?
    正如您在第57页上所说的、"单核器件可以利用全部八个 LSU 块。" 因此、使用多个 LSU 寄存器组应该没有问题。

    >多内核是否应通过仅共享一个 LSU 寄存器集来提交多个未决的已发布写入操作请求?
    您可能需要为每个内核设置一个 LSU 寄存器。
    从第67页开始、"但是、如果多个内核使用 LSU、即使只完成了单个内核、LSU 也会中断所有内核。 因此、区分每个内核的中断与 LSU 非常重要。 由于 EDMA 专用于 LSU、因此还需要每个 LSU 的信息。"

    我们客户的当前方法:
    -为每个内核使用一个 LSU 寄存器集
    如建议的那样。

    如何将16个影子寄存器用于 LSU0-3、它是4-4-4? 什么是目标器件、它也是 C6678或 FPGA?

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

    您好、Garrett - San、

    感谢你的答复。

    [引用用户="Garrett Ding"]
    >是否允许多内核通过使用多个 LSU 寄存器集提交多个未决的已发布写入操作请求?
    正如您在第57页上所说的、"单核器件可以利用全部八个 LSU 块。" 因此、使用多个 LSU 寄存器组应该没有问题。
    [/报价]

    请您再看一下我的第一篇帖子吗?

    《SRIO 用户指南》介绍了:

     有八个 LSU 寄存器集。 这允许对所有需要响应的事务类型(即非过帐)有八个未决请求

     -对于不需要 RapidIO 响应数据包的已发布写入操作内核可能会提交多个未完成的请求。
      例如、给定外出资源的情况下、单个内核可能在任何给定时间缓冲许多流式写入数据包。

    但是、SRIO 用户指南未提及以下内容:

     - 8个 LSU 寄存器集允许8个未完成的对已发布的写入操作的请求,这些请求不需要响应

     -对于不需要响应的已发布写入操作多个内核可能会提交多个未完成的请求。
      例如、给定外出资源的情况下、多个内核中的每个内核都可能在任何给定时间缓冲许多流式写入数据包。

    是否真正允许多个内核通过使用多个 LSU 寄存器集提交多个未决的已发布写入操作请求?

    [引用用户="Garrett Ding"]
    >多内核是否应通过仅共享一个 LSU 寄存器集来提交多个未决的已发布写入操作请求?
    您可能需要为每个内核设置一个 LSU 寄存器。
    从第67页开始、"但是、如果多个内核使用 LSU、即使只完成了单个内核、LSU 也会中断所有内核。 因此、区分每个内核的中断与 LSU 非常重要。 由于 EDMA 专用于 LSU、因此还需要每个 LSU 的信息。"
    [/报价]

    不、我是说为多个内核设置一个 LSU 寄存器。

    如果不允许我们客户的当前方法、则可以将其更改为多个内核共享单个 LSU 寄存器集以进行过帐写入操作。

    [引用用户="Garrett Ding"]
    如何将16个影子寄存器用于 LSU0-3、它是4-4-4? 什么是目标器件、它也是 C6678或 FPGA?
    [/报价]

    影子寄存器组合为:

     LSU0/LSU4 9.
     LSU1/LSU5 3.
     LSU2/LSU6 2.
     LSU3/LSU7 2.

    目标器件是 FPGA。 它通过开关进行连接。

    此致、

    Daisuke

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

    您好、Daisuke、

    我与 Travis 讨论了该主题、一些反馈:

    --------

    您如何准确测量延迟(400us)?  是每个数据包还是整个多数据包传输?  您何时启动/停止计时器?

    我们认为1个 LSU 与4个 LSU 之间的关系并不重要,具体取决于您对 LSU 的测量方式。  外设将尽快发送数据包。  如果使用1 LSU、则一切都是顺序的;如果使用4 LSU、则数据包与循环调度程序交错。  您正在获得数据包重试控制符号这一事实意味着 FPGA 入站处理程序无法跟上这一速度。  您可以通过减小每个 LSU 编程的事务大小来摆脱重试、即、不是每个 LSU 编程发送1KB、而是发送带有4个 LSU 编程的256B。

    对于 NWRIDE (因为没有响应)、内核可启动的多数据包事务数量不受限制、这是影子寄存器允许的、并且不应对使用的 LSU 数量进行任何限制。  如果每个 LSU 的优先级没有不同,则使用多个带有一个内核的 LSU 会变得更加困难,因为您无法保证按顺序排列。  此外、内核必须能够处理和区分多个 LSU 完成代码/错误处理等

    --------

    此致、

    Garrett