请问2812执行一条16位加法指令要几个时钟周期?

请问2812执行一条16位加法指令要几个时钟周期?

此问题尚无答案
All Replies
  • 秀才40分

    用2812编写采样程序,在采样值排序平均时发现每条指令运行占用很长的时间。一个定点除法_iqdiv就用掉200多个指令周期,于是考虑可能是程序烧写在flash中导致的。然后写了烧写在ram里的测试程序,发现写在ram中运行速度依然很慢。

    代码段如下,纯粹为了验证程序执行时间。程序烧写到ram中进行在线调试。结果如图所示。没有运行中断服务程序,运行两个断点之间的程序要18个指令周期。请教一下是哪里出了问题?

    Uint16 THETA = 0xaa;
    Uint16 OMEGA = 0x55;

    THETA=THETA+OMEGA;
    THETA=THETA+OMEGA;
    THETA=THETA+OMEGA;
    THETA=THETA+OMEGA;
    THETA=THETA+OMEGA;
    THETA=THETA+OMEGA;

  • 榜眼19422分

    反汇编一下,看一下你这一条add被编译器解析成啥样了?

    Regards,

    Holly

  • 秀才40分

    谢谢!

    反汇编后是这样的,解析的确实是一条add指令。

    新的现象是:我单步运行c程序,每运行一个c语言16位加法用一个机器周期。但全速运行时,5个加法就用了18个指令周期。

    我又检查了程序确实没有中断服务函数,请问则可能是什么原因呢?

  • 榜眼19422分

    可能的原因是加法指令的执行和取指不是流水线结构的,又共用了寄存器。这样一条指令周期执行了加法,又要花一个指令周期取指令。累计起来就是双倍的时间了。

    Regards,

    Holly

  • 秀才20分

    您好 打扰一下 能问下这个时钟符号是怎么调出来的么

  • 探花12190分

    您好 打扰一下 能问��这个时钟符号是怎么调出来的么

    debug时,在待测时间代码开始与结束处设置断点,点击run > clock > enable停在第一个断点处,然后run > clock清下clock,再运行,CCS的右下角会显示CPU cycle。

  • 秀才20分

    谢谢 非常感谢!

  • 状元35236分

    这个应该是1个机器周期搞定一条加法

    很多人说通过clock统计的不准确

    TI的忠诚粉丝!