FPU

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Floating Point Unit

Zu deutsch Gleitkommaeinheit. Diese ist Teil eines Prozessors, der spezielle Befehle für Berechnungen mit Gleitkommazahlen unterstützt. Diese Befehle beziehen sich meist auf den IEEE 754 Standard [1]

Durch eine solche Einheit werden die Operationen mit Gleitkommazahlen (in C die Datentypen float (single precision, 32bit), double (double precision, 64bit) und long double (extended precision, oftmals 80bit)) wesentlich schneller, weil in Hardware, durchgeführt. Ist keine FPU verfügbar müssen die Operationen durch die libc der Toolchain "zu Fuß" emuliert werden, was natürlich mehr Befehle und damit mehr Laufzeit bedeutet.

Einfachere Mikrocontroller, wie zum Beispiel der AVR, besitzen im Allgemeinen keine FPU, weshalb man, wenn es um Geschwindigkeit und Speicherverbrauch geht, auf Festkommaarithmetik setzen sollte. Damit kann man komplett auf Gleitkommazahlen und den damit verbundenen Overhead bei der Berechnung verzichten.

Neuere komplexere Prozessoren wie die ARM Cortex-Mikrocontroller können eine FPU eingebaut haben.

ARM-Cortex-M FPU
Cortex-M0 Nein
Cortex-M1 Nein
Cortex-M3 Nein
Cortex-M4 Optional (single precision)
Cortex-M7 Optional (single precision)

Die wesentlich leistungsfähigeren Application-Prozessoren von ARM, die Cortex-A, bieten im allgemeinen immer eine FPU, oftmals auch mit double precision.

  1. http://www.csee.umbc.edu/~tsimo1/CMSC455/IEEE-754-2008.pdf IEEE Standard for Floating-Point Arithmetic