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.

[参考译文] TMS320F280039C:浮点

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1378489/tms320f280039c-floating-point

器件型号:TMS320F280039C

工具与软件:

尊敬的专家:

我的客户目前正在将浮点变量用于同一电机的位置估算器、这比使用 Q 格式的定点变量长大约10-20%、浮点计算时间是否已被加速?

FPU 已开启。

此致

Anka Zhang

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

    Anka、

    您能提供一些详细信息吗?  

    谢谢!

    SIRA

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

    尊敬的 Sira:

    我的客户希望在其项目中使用浮点、但他们发现它比基于280039C 的修复点(FPU 开启时)慢得多。

    我使用 CCS 的时钟逐步对其代码进行计时、结果如下:

    int a;int b;  

    a+b.          : 9个周期

    a*b>>11.      : 9个周期

    a*b+a.        :10个周期

    a+b*b>>11:20   周期

    a=b          :1个 周期

    float32 c;float32 d;

    c=d              :8cycles

    C-d.               :11个周期

    c*d               :11个周期

    c*d+c.             :23个周期

    c*d+c+d.           :24个周期

    他们的项目即将批量生产、但代码无法满足他们的要求。

    他们如何加快代码速度?

    此致

    Anka

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

    Anka、

    一些评论和建议:

    1. C28x 上的 int 是16位、因此在定点情况下执行16位运算。 可以参考 spru430f、Add、MPY 是单周期说明

    2.在浮点情况下、运算是32位的、以及 ADD、MPY 等。是2p 指令、即存在流水线冲突时为2个周期、没有冲突时为1个周期。 请参阅 spruhs1c。 具体而言、来看看第1.4.7节、它为简单的加法和乘法用例(如示例)展示了没有流水线优化和具有流水线优化的浮点代码。

    3.是否已启用优化?

    4.  由于流水线效果和潜在的编译器优化,为小操作获取准确的时钟周期数(如在您的示例中)将是一个挑战。 在这种情况下、CCS 时钟为您提供的数字可能不准确。 最好分析大型代码块。 与您的情况一样、整个示例、而不是单个元素。 您还应该查看生成的汇编代码、以查看其是否全部匹配。

    我的整体意见是、对于简单运算、您可能会看到定点相对于浮点的优势、但当您往实际系统示例中看时、C28x 上有限数量的定点寄存器会很快成为限制、浮点性能将优于定点性能。

    谢谢!

    SIRA