Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 单循环乘法和硬件除法是什么意思?_C_Embedded_Stm32 - Fatal编程技术网

C 单循环乘法和硬件除法是什么意思?

C 单循环乘法和硬件除法是什么意思?,c,embedded,stm32,C,Embedded,Stm32,我正在阅读一份数据表,阅读“单循环乘法和硬件除法”作为STM32规范的一部分,我不确定我是否理解这意味着什么。从我在网上读到的,乘法通常比除法更容易计算。这是否意味着STM可以在一个周期内计算乘法和除法 请协助。对于乘法器,这意味着只需一个时钟周期(对于100Mhz,为10纳秒)即可执行操作 然而,除法通常是以迭代的方式逐位执行的,应该研究特定的实现(核心指令集) 看一下,你会发现乘法实际上是单周期的,但是除法持续2-12个周期,在脚注中: 除法运算使用提前终止,以根据输入操作数中前导1和0的数

我正在阅读一份数据表,阅读“单循环乘法和硬件除法”作为STM32规范的一部分,我不确定我是否理解这意味着什么。从我在网上读到的,乘法通常比除法更容易计算。这是否意味着STM可以在一个周期内计算乘法和除法


请协助。

对于乘法器,这意味着只需一个时钟周期(对于100Mhz,为10纳秒)即可执行操作

然而,除法通常是以迭代的方式逐位执行的,应该研究特定的实现(核心指令集)

看一下,你会发现乘法实际上是单周期的,但是除法持续2-12个周期,在脚注中:

除法运算使用提前终止,以根据输入操作数中前导1和0的数量最小化所需的循环数

添加:


但是请注意,唯一的INTxINT乘法是单周期,而LONGxLONG最后3-5个周期(因为LONGxLONG mult可以作为INTxINT乘法和加法的组合执行)

二进制乘法只是移位和加法,传统上被分解为多个时钟周期,但是你可以通过消耗(相对)大量的逻辑将时钟周期减少到一个,如果你的指令集中有乘法运算,这就更正常了。在指令集中有除法运算并不常见,但如果你有除法运算,这通常是一个迭代过程,意味着需要多个步骤,意味着需要多个时钟。我假设有人可以用足够的逻辑和足够长的时钟来论证这一点,我会惊讶地看到stm32中有一个esp,我也惊讶地看到一个单循环多线程HAPS“聪明”的措辞:“单循环乘法和硬件除法”,实际上并不是说除法是单周期的-只是说它是在硬件中执行的。是的,如果F4是运算器正在考虑的MCU,那么硬件FPU也是如此
vmul.f32
为1个周期,而
vdiv.f32
为14个周期。感谢您的支持responses@panto111088如果这回答了你的问题,请接受它。