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.

[参考译文] CCS/TMS320C6678:C66x DSP 浮点除法计算的硬件设置

Guru**** 2538950 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/820622/ccs-tms320c6678-hardware-setting-for-c66x-dsp-float-point-division-calculation

器件型号:TMS320C6678

工具/软件:Code Composer Studio

各位专家、您好!

我正在从事 C66x DSP 双类型除法、一个操作花费了我很多(几乎250个周期)。 我想是否有任何硬件芯片配置(寄存器或某些电缆连接配置)可以将周期减少到合理的数量。  

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

    您好!

    旧的智慧不是分割,加上,再乘:)我首先要检查,除法是否绝对必要。 也许您用一组固定的分母进行除法、那么您可能可以预先计算其反向变体并将除法替换为乘法、即、而不是 Ni/Di 首先计算(1/Di)的一组、然后继续使用 Ni*(1/Di)。

    如果这不是一种情况、您必须除以所有事先未知的分母、首先检查您是否真的需要双精度、如果是单个后缀、则继续执行浮点数。

    无论上述决定如何、接下来的工作就是获取 www.ti.com/.../sprabg7.pdf。 特别要注意第3.1.5条使用分部指令。 有一个使用_rcpsp()内在函数指令的示例,它在1 (字面上-一)个周期中计算1/x,并提供确切的指数,但只提供8位的尾数。 接下来、您可以应用牛顿迭代、仅在第二次迭代之后、即可获得浮点的完全精度。 如果您绝对需要使用 double 变量,请考虑_rcpdp()内在函数,它对 double 变量执行相同的操作。 在初始近似后、需要3牛顿的迭代才能获得双精度的最大值。  

    这些技术在 O3下的管道非常好、您应该会看到相当大的增益。 但是、这主要发生在循环中。 有时、它会返回以计算循环中的所有必要商、可能会牺牲一些存储器来存储这些商、然后继续执行算法的其余部分。

    希望这对您有所帮助。

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

    O3已应用。 "-fp_mode=relaxed"仅适用于大型循环代码。

    因此、请您回答、因为它不存在任何特殊的 DSP 寄存器或硬件配置来加速整个应用的双倍分频? 我的选择是优化代码。  

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

    您好!

    据我所知,没有更好的方法。 除了已经提到的_rcsp()/_rcpdp()指令之外,没有本机除法加速。