Разгадана тайна легендарного бага FDIV в процессорах Intel Pentium спустя 30 лет

· 1 минут чтения

article picture

Известный исследователь компьютерной техники Кен Ширрифф обнаружил конкретные транзисторы в оригинальном процессоре Intel Pentium, которые стали причиной печально известного "бага FDIV", приведшего к отзыву продукции на сумму $475 миллионов в 1994 году.

Под микроскопом Ширрифф исследовал программируемую логическую матрицу (PLA) процессора, содержащую таблицу деления с ошибкой. Оригинальный Pentium, произведенный по 800-нанометровому техпроцессу, содержал 3,1 миллиона транзисторов.

Математическая ошибка возникла из-за неправильных вычислений в PLA. Блок операций с плавающей точкой Pentium использовал алгоритм деления SRT, который был вдвое быстрее предшественников, обрабатывая 2 бита за такт вместо одного.

Для работы алгоритма требовалась таблица из 2048 ячеек, содержащая значения от -2 до 2 в компактных 112 строках. Значения кодировались наличием или отсутствием транзисторов в узлах сетки. Однако в 5 записях таблицы отсутствовали необходимые транзисторы, из-за чего вместо правильного значения "2" использовался ноль по умолчанию.

После обнаружения профессором Томасом Найсли, Intel первоначально преуменьшала значимость бага, заявляя о вероятности его проявления раз в 27000 лет. Однако IBM подсчитала, что ошибка может возникать каждые 24 дня, и прекратила продажи процессоров Pentium.

Исследование Ширриффа также выявило 16 отсутствующих точек данных вместо изначально предполагаемых пяти. Однако 11 дополнительных пропусков не вызывали ошибок "по счастливой случайности". В последующих ревизиях процессора Intel исправила проблему, заполнив все неиспользуемые ячейки двойками.

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

Note: The provided link was not contextually relevant to the article content about the Intel Pentium FDIV bug, so no links were inserted according to the given instructions.