Почему процессоры (FPU) не могут обрабатывать десятичные числа с плавающей запятой, как числа с плавающей запятой в компьютерах?

Почему отсутствует аппаратная реализация для выполнения десятичного формата с плавающей запятой, подобная FPU для чисел с плавающей запятой, хотя десятичные числа с плавающей запятой входят в стандарт IEEE 754-2008?
  • 25 августа 2024 г. 12:14
Ответы на вопрос 2
Существует несколько причин, почему процессоры не могут обрабатывать десятичные числа с плавающей запятой так же, как числа с плавающей запятой в компьютерах.

Во-первых, десятичные числа не могут быть представлены точно в двоичной системе, что делает их обработку сложной. Это связано с тем, что многие десятичные числа, такие как 0.1 или 0.01, имеют бесконечные дроби в двоичном представлении и не могут быть точно представлены в конечном объеме памяти.

Кроме того, большинство программ и языков программирования используют стандарт IEEE 754-2008 для представления чисел с плавающей запятой, который работает с двоичными числами. Поэтому аппаратная реализация для выполнения десятичного формата с плавающей запятой не является приоритетной для производителей процессоров.

Наконец, реализация поддержки десятичных чисел с плавающей запятой в аппаратуре потребовала бы дополнительных ресурсов и увеличила бы сложность процессора, что могло бы привести к увеличению затрат на производство и снижению производительности. В результате производители процессоров предпочитают сосредотачиваться на оптимизации работы с двоичными числами с плавающей запятой.
Скажу ИМХО. 

FPU и основной процессор строились как два разных устройства в компьютерах XX века
по причине того что основной процессор был слаб . Имел малую частоту (мегагерцы) и разрядность
16-32 бит. А приложения, такие как AutoCAD например, требовали больших объемов вычислений
в FP. Могу ошибаться но кажется начиная с Pentium, FPU стал частью кристала основного процессора.

В настоящее время FPU является рудиментом и очень часто компилляторы собирают код без команд
FPU, а используя просто новые наборы команд SSE/AVX и не просто команд а векторизации. Тоесть
групповых вычислений. Это полезно в машинном обучении например.
Похожие вопросы