📌 Кратко
FPU (Floating Point Unit) — модуль в составе CPU, предназначенный для выполнения операций с числами с плавающей точкой (IEEE 754).
🧠 Как работает
FPU обрабатывает данные в формате float и double, недоступные для стандартной ALU. Выполняет:
- сложение, вычитание, умножение, деление
- извлечение квадратного корня
- сравнение и преобразование типов
- округление и нормализацию
Работает параллельно с ALU через собственные исполнительные блоки и регистры. Некоторые архитектуры могут иметь несколько FPU на ядро или выделенный coprocessor.
⚙️ Где применяется
Область | Примеры |
---|---|
Scientific computing | Математическое моделирование, симуляции |
Graphics | 3D-преобразования, шейдеры, OpenGL |
Signal processing | FFT, фильтрация, DSP |
Machine learning | Операции с float32/float64 |
Games | Физика, анимация, расчёт столкновений |
💻 Пример кода
#include <math.h>
double compute(double x) {
return sqrt(x * x + 1.0); // вычисляется через FPU
}
📐 Внутреннее устройство (упрощённо)
+-------------------------------+
| Floating Point Unit |
+-------------------------------+
| FPU Registers (XMM, YMM) |
| Arithmetic Core (FADD, FMUL)|
| Normalizer / Rounding Unit |
| Exception & Flag Logic |
+-------------------------------+
↓
Результат → [[Registers]] / [[Cache]]
✅ Преимущества
-
Высокая точность и скорость операций с real-числами
-
Аппаратная реализация — быстрее программных библиотек
-
Параллелизм исполнения с ALU
❌ Недостатки
-
Большая площадь кристалла и энергопотребление
-
Не всегда присутствует в простых Microcontrollers
-
Ошибки округления и переполнения (особенно в double → float)