Gdy nie ma FPU. Liczby stałoprzecinkowe w praktyce konstruktora: formaty, pułapki, funkcje elementarne i pomiar

Gdy nie ma FPU. Liczby stałoprzecinkowe w praktyce konstruktora: formaty, pułapki, funkcje elementarne i pomiar

Jednostka zmiennoprzecinkowa (FPU, ang. Floating-Point Unit) jest dziś w mikrokontrolerach średniej klasy czymś zwyczajnym: Cortex-M4F, M7 czy M33 (w wersji z FPU) liczą na liczbach typu float prawie tak szybko jak na całkowitych. Mogłoby się wydawać, że arytmetyka stałoprzecinkowa – sztuka liczenia ułamków za pomocą liczb całkowitych – przeszła do historii razem z 8-bitowymi procesorami. Tak nie jest. Najtańsze mikrokontrolery nadal nie mają FPU, a niektóre nie mają nawet sprzętowego mnożenia. Wiele procesorów sygnałowych audio liczy wyłącznie w formatach stałoprzecinkowych. Nawet najnowsze akceleratory sprzętowe w mikrokontrolerach STM32 przyjmują dane tylko w takiej postaci. W artykule pokazujemy, kiedy liczby stałoprzecinkowe wciąż się opłacają, jak się nimi posługiwać bez przykrych niespodzianek, jakimi metodami liczyć sinus czy pierwiastek bez FPU oraz jak sprawdzić, czy wybrana metoda jest rzeczywiście szybsza.

Chcesz częściej widzieć nasze artykuły w Google? Dodaj Elektronika Praktyczna do ulubionych źródeł
Czy to jeszcze potrzebne? Bez FPU każde działanie na liczbie typu float wykonuje procedura biblioteczna, która rozkłada liczbę na znak, wykładnik i mantysę, liczy na liczbach całkowitych i składa wynik z powrotem. Jedno mnożenie zajmuje wtedy dziesiątki cykli zegara, a funkcje trygonometryczne – setki lub tysiące. Autor artykułu o szybkim sinusie dla mikrokontrolerów STM32, opublikowanego w serwisie Habr, zmierzył, że na Cortex-M4 (którego FPU liczy tylko w pojedynczej precyzji) biblioteczna funkcja sin podwójnej precyzji zajmuje ok. 2500 cykli na jedno wywołanie. W regulatorze, który ma wykonać obliczenia kilka tysięcy razy na sekundę, to za dużo. Jakimi zasobami arytmetycznymi dysponują popularne rodziny mikrokontrolerów, zestawia tabela 1. Arytmetyka stałoprzecinkowa pozostaje naturalnym wyborem w czterech sytuacjach. Pierwsza to najtańsze układy: Cortex-M0 i M0+, 8-bitowe AVR czy chiński CH32V003 z rdzeniem RISC-V w odmianie RV32EC, pozbawionej rozszerzenia M, czyli sprzętowego mnożenia. Druga to procesory sygnałowe audio – na przykład popularny ADAU1701...
Aby kontynuować czytanie wykup Prenumeratę
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik listopad 2026

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2026

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje październik 2026

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna listopad 2026

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich listopad 2026

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów