Floating Point¶
Peter Schmidt¶
https://www.spyr.ch/twiki/bin/view/MecrispCube/FloatingPointUnit
A very interesting article by Peter Schmidt, author of Mecrisp-Cube where he uses the FPU of the STM32F407 and does various comparisons with Fixed Point (s31.32) and benchmarks the time involved.
(excerpt from Peters article)
Floating-Point Unit
The STM32 ARM Cortex M4F MPUs (e.g. STM32WB, STM32F4, STM32L4) have a single precision floating-point unit. The STM32H7 MPUs have a double precision FPU (not supported yet).
Also from STM AN4044
Floating-point calculations require a lot of resources, as for any operation between two numbers. For example, we need to:
Align the two numbers (have them with the same exponent) Perform the operation Round out the result Code the resultOn an FPU-less processor, all these operations are done by software through the C compiler library (or Forth Words) and are not visible to the programmer; but the performances are very low. On a processor having an FPU, all of the operations are entirely done by hardware in a single cycle, for most of the instructions. The C (or Forth) compiler does not use its own floating-point library but directly generates FPU native instructions.
When implementing a mathematical algorithm on a microprocessor having an FPU, the programmer does not have to choose between performance and development time. The FPU brings reliability allowing to use directly any generated code through a high level tool, such as MATLAB or Scilab, with the highest level of performance.
Any integer with absolute value less than 2^24 can be exactly represented in the single-precision format, and any integer with absolute value less than 2^53 can be exactly represented in the double-precision format.
…
Conclusion
As long as you do only elementary arithmetic, fixed- and floating-point have comparable execution time (but division and multiplication is a magnitude slower). But for more elaborate calculation (trigonomteric, exponential functions) the execution time is for fixed-point at least two magnitudes slower.
If time is not an issue in either development or execution, you can easily do without the FPU.
See also