MCU FPU

大多数MCU都没有FPU 硬件浮点单元。如果用float double运算,编译器会调用软件库函数来模拟浮点加减乘除。需要分解成一系列整数操作,移位,比较,循环,效率非常低。可能要几十到上百条指令。

定点运算用的就是普通的整数运算单元。MCU内核天然支持整数加减乘除移位,一条指令就可以完成。

CPU如何进行浮点运算

IEEE754标准。浮点数分为 符号位,指数,尾数部分。没有FPU的MCU运算过程

1
2
3
4
5
取出指数和尾数。
对齐指数(移位操作)。
尾数执行整数加减/乘除。
结果归一化(调整指数和尾数)。
处理溢出/舍入/NaN/无穷大等特殊情况。