gpt4 book ai didi

c++ - 没有ALU的ARM需要多少运算量

转载 作者:行者123 更新时间:2023-11-30 17:29:46 25 4
gpt4 key购买 nike

我在 ARM Cortex M3 上遇到问题具有一些需要乘法和除法自然数的功能。问题是:是否可以在128位数字之间进行计算?我需要知道有多少汇编操作需要软件模拟多个两个32位数字并除以两个32位数字,然后我将计算我的计算所消耗的时间。我坚持进行一些计算,我需要帮助,因为也许我必须将我的 uC 更改为带有硬件 ALU 的 Cortex M4。

你能帮我解决这个问题吗?

给定简单的 C 代码:

uint32_t var1 = 12304;
uint32_t var2 = 1892637198;
uint64_t result = var1*var2;

和 objdump 汇编器:

   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+?+?)。

最佳答案

ARM Instructions

此页包含 ARM M 系列处理器每条指令的所有周期计数。如果您有汇编代码(听起来像您所做的那样?),那么应该很容易将所有周期相加,乘以 1/clock_freq 并得到不同场景所花费的总时间。

关于c++ - 没有ALU的ARM需要多少运算量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25515325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com