Что лучше?

В большинстве языков программирования арифметика с фиксированной запятой не реализована ввиду ее главного недостатка — узкого диапазона значений. При работе с таким форматом существует угроза переполнения целочисленной части и потери точности в дробной. Для сравнения, если требуется обеспечить точность в три знака после запятой, то 4-байтовая переменная с фиксированной запятой обеспечивает диапазон всего в 6 порядков, а та же переменная, но в формате с плавающей запятой, — 70 порядков. При этом нужно понимать, что используя фиксированную запятую вместо плавающей, можно значительно ускорить работу некоторых алгоритмов.

Специализированные процессоры для обработки цифровых сигналов обычно включают в себя модуль FPU (с англ. Floating-point Unit), имеющий специальные инструкции для работы с вещественными числами (загрузка, выгрузка в и из регистров, математические операции). Однако такой модуль в микроконтроллерах общего назначения, как правило, отсутствует. Производительная линейка Cortex-M4/M7 (STM32F4/STM32F7) от компании ST Microelectronics включает в себя их поддержку.

Помимо программных ошибок, ошибки могут быть допущены на уровне железа. В процессорах Pentium компании Intel, представленных в 1994 году, модуль FPU работал некорректно и в некоторых случаях выдавал неправильное значение при использовании инструкции FDIV. После скандала компании пришлось отозвать партию, что стоило порядка 475 млн. долларов.

По этой причине операций с вещественными числами стараются избегать, заменяя их на поиск по таблице (англ. lookup table) с заранее рассчитанными значениями. Мы рассмотрим такой способ позже.

В вычислительной технике одной из основных единиц измерения быстродействия является FLOPS (от англ. floating-point operations per second), т.е. количество операций с плавающей запятой в секунду. Другие меры производительности — MIPS (от англ. millions instructions per second, не путать с названием архитектуры) и DMIPS.


Изменено:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.