📌 Кратко

FPU (Floating Point Unit) — модуль в составе CPU, предназначенный для выполнения операций с числами с плавающей точкой (IEEE 754).

🧠 Как работает

FPU обрабатывает данные в формате float и double, недоступные для стандартной ALU. Выполняет:

  • сложение, вычитание, умножение, деление
  • извлечение квадратного корня
  • сравнение и преобразование типов
  • округление и нормализацию

Работает параллельно с ALU через собственные исполнительные блоки и регистры. Некоторые архитектуры могут иметь несколько FPU на ядро или выделенный coprocessor.

⚙️ Где применяется

ОбластьПримеры
Scientific computingМатематическое моделирование, симуляции
Graphics3D-преобразования, шейдеры, OpenGL
Signal processingFFT, фильтрация, 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)