首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >没有ALU的手臂操作要多少钱

没有ALU的手臂操作要多少钱
EN

Stack Overflow用户
提问于 2014-08-26 21:20:33
回答 2查看 387关注 0票数 0

我在ARM Cortex M3上遇到了一个问题,它的一些功能要求对自然数进行乘法和除法。关键是:如果可以在128位数之间进行计算?我需要知道有多少装配操作需要软件模拟多个两个32位数字和除以两个32位数,然后我将计算我计算的时间消耗。我一直在计算,我需要帮助,因为也许我必须用硬件ALU将我的uC转换为皮质M4。

你能帮我做这个吗?

给定简单的C代码:

代码语言:javascript
运行
复制
uint32_t var1 = 12304;
uint32_t var2 = 1892637198;
uint64_t result = var1*var2;

和objdump汇编程序:

代码语言:javascript
运行
复制
   0:   b480            push    {r7}
   2:   b085            sub     sp, #20
   4:   af00            add     r7, sp, #0
        uint32_t var1 = 12304;
   6:   f243 0310       movw    r3, #12304      ; 0x3010
   a:   60fb            str     r3, [r7, #12]
        uint32_t var2 = 1892637198;
   c:   f645 230e       movw    r3, #23054      ; 0x5a0e
  10:   f2c7 03cf       movt    r3, #28879      ; 0x70cf
  14:   60bb            str     r3, [r7, #8]

        uint64_t result = var1*var2;
  16:   68fb            ldr     r3, [r7, #12]
  18:   68ba            ldr     r2, [r7, #8]
  1a:   fb02 f103       mul.w   r1, r2, r3
  1e:   460a            mov     r2, r1
  20:   f04f 0300       mov.w   r3, #0
  24:   e9c7 2300       strd    r2, r3, [r7]

因此,如果我计算,例如多重乘法,我可以得到整个指令(因为将值加载到寄存器中,所以每个负载加上3条指令)或仅乘以(在本例中为6条指令)。

因为将格式化为(x^5+x)的两个128位变量乘以x是32位变量,所以给我(a+b)(c+d) ab+ad+bc+bd 4乘法(或3通过算法)。因此,如果我应该计算4*(3+3+6)或4*(6+?+?)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-26 21:29:32

ARM指令

此页面包含ARM M系列处理器的每条指令的所有循环计数.如果您有程序集代码(听起来是这样的吗?)然后,可以很容易地将所有的周期加起来,乘以1/clock_freq,得到用于不同场景的总时间。

票数 1
EN

Stack Overflow用户

发布于 2014-08-29 09:52:28

另一种解决方案是使用cycle来测量周期计数。

参见此臂链

编辑:,您可以将计数器设置为最大值,并在计数器值达到0时强制重新加载其计数器值。

//配置系统

代码语言:javascript
运行
复制
 \*STRVR = 0xFFFFFF;  // max count     \*STCVR = 0;         // force a re-load of the counter value register     \*STCSR = 5;         // enable FCLK count without interrupt

您可以在函数前后读取STCVR,这是一个下行寄存器,然后删除开销周期(读取STCVR寄存器)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25515325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档