WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

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

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

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

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

Стремление производителя утаить проблему и реакция на её обнаружение вызвали недовольство потребителей и обширную критику в СМИ, в том числе жесткий репортаж CNN. В результате компания изменила позицию и объявила, что будет свободно обменивать дефектные процессоры всем желающим. Энди Гроув принес публичные извинения. История стоила Intel более половины прибыли за последний квартал 1994 г. — $475 млн[3].

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

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

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. Проверено 10 марта 2009. Архивировано 15 марта 2012 года.
  2. FDIV Replacement Program: Description of the Flaw. Intel (9 июля 2004). Проверено 19 декабря 2006.
  3. Тим Джексон, 2013, с. 10.

Литература

  • Тим Джексон. Inside Intel. История корпорации, совершившей технологическую революцию XX века = Inside Intel. The unauthorized history of the world’s most successful chip company. М.: Альпина Паблишер, 2013. — 328 с. ISBN 978-5-9614-1956-6.

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии