Ошибка Pentium FDIV

Ошибка Pentium FDIV

Ошибка Pentium FDIV — это ошибка в модуле операций с плавающей запятой в оригинальных процессорах Pentium, выпускавшихся фирмой Intel в 1994 году. Ошибка выражалась в том, что при проведении деления над числами с плавающей запятой при помощи команды процессора FDIV в некоторых случаях результат мог быть некорректным.

Данная ошибка была впервые обнаружена и опубликована профессором Линчбургского колледжа Томасом Найсли в октябре 1994 года[1].

Согласно заявлению Intel причиной проблемы послужили неточности в таблице поиска, используемой при проведении операции деления[2].

Воспроизведение ошибки

Воспроизвести ошибку можно самостоятельно в приложениях, которые используют математический сопроцессор при работе с числами с плавающей запятой.

4195835.0/3145727.0 = 1.333 820 449 136 241 002 (Правильное значение)

4195835.0/3145727.0 = 1.333 739 068 902 037 589 (Ошибочное значение, возвращаемое процессором, содержащим дефект)

Более наглядный способ воспроизведения:

4195835*3145727/3145727 = 4195835 (При умножении и делении на одно и то же число получаем исходное число)

4195835*3145727/3145727 = 4195579 (Ошибочное значение, возвращаемое процессором, содержащим дефект)

Методы защиты

  • В компиляторе Delphi предусмотрена опция Pentium Safe FDIV, заставляющая компилятор вместо использования ассемблерной команды FDIV в коде программы, применять вызов специальной процедуры, которая при первом вызове производит проверку наличия ошибки, и в зависимости от результата при этом и последующих вызовах, либо выполняет простой FDIV, либо производит коррекцию результата.
  • В компиляторе Visual Basic предусмотрена проверка наличия данной ошибки, которая включена по умолчанию. Однако она отключается специальной опцией компилятора — Remove Safe Pentium™ FDIV Checks. В случае её включения, компилятор не генерирует дополнительный код, и в некоторых случаях скорость вычислений возрастает.

Ссылки

  1. "Pentium FDIV flaw FAQ. Professor Thomas Nicely. Архивировано из первоисточника 15 марта 2012.
  2. FDIV Replacement Program: Description of the Flaw. Intel (9 июля 2004). Проверено 19 декабря 2006.

Wikimedia Foundation. 2010.

Поможем решить контрольную работу

Полезное


Смотреть что такое "Ошибка Pentium FDIV" в других словарях:

  • F0 0F C7 C8 — F0 0F C7 C8  последовательность байтов, формирующих недействительную машинную команду процессоров семейства x86. В процессорах Pentium MMX и Pentium OverDrive, вследствие аппаратной недоработки, команда, будучи выполненной на любом уровне… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»