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

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

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

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

Наконец, реализация поддержки десятичных чисел с плавающей запятой в аппаратуре потребовала бы дополнительных ресурсов и увеличила бы сложность процессора, что могло бы привести к увеличению затрат на производство и снижению производительности. В результате производители процессоров предпочитают сосредотачиваться на оптимизации работы с двоичными числами с плавающей запятой.
Скажу ИМХО. <br/> <br/> <b>FPU и основной процессор</b> строились как два разных устройства в компьютерах XX века <br/> по причине того что <b>основной процессор был слаб</b> . Имел малую частоту (мегагерцы) и разрядность <br/> 16-32 бит. А  приложения, такие как AutoCAD например, требовали больших объемов вычислений <br/> в FP.  Могу ошибаться но кажется начиная с Pentium, FPU стал частью кристала основного процессора. <br/> <br/> В настоящее время FPU является рудиментом и очень часто компилляторы собирают код без команд <br/> FPU, а используя просто новые наборы команд SSE/AVX и не просто команд а векторизации.  Тоесть <br/> групповых вычислений. Это полезно в машинном обучении например.
Похожие вопросы