Когда началась программа разработки процессора Pentium, Intel понимала, что сложность чипа и размер работающей над ним команды создают большой риск внесения ошибок. В старые добрые времена, когда действовал закон "один человек, один чип, один год", люди делали множество ошибок в разработках процессоров, но поскольку проекты были относительно небольшими, один или самое большее несколько инженеров могли держать разработку под постоянным контролем. Но в случае с Pentium, состоящим из трех миллионов транзисторов, это, естественно, было невозможно: существовала опасность, что две части схемы чипа, каждая из которых корректно работала сама по себе, при совместной работе могли давать сбой.
Это уже стало немалой проблемой для 486-го. Проведенный впоследствии анализ показал, что большая часть ошибок чипа возникала в интерфейсах между функциональными блоками процессора, а не в самих блоках. Одна из таких ошибок, обнаруженная пользователем уже после того, как 486-й был запущен в производство, оказалась настолько серьезной, что компания вынуждена была сделать из пятидесяти тысяч чипов сувенирные брелоки. Поэтому, с типичной для Intel основательностью, Вин Дхам, "царь" проекта Pentium, назначил группу, которая не отвечала ни за какой конкретный блок, а только следила за интерфейсами. Дхам также опробовал новый метод, позволявший в последнюю минуту засечь ошибки в разработке.
"Когда проект близился к завершению и каждая из команд заверяла меня, что ошибок нет, я предлагал немедленно выплатить 100 дол. любому, кто обнаружит ошибку", — вспоминает он. К удивлению Дхама, некоторые откликнулись на его предложение, и ему пришлось выплатить несколько сотен долларов. Но выявление ошибки было прекрасной новостью.
"Это обходится гораздо дешевле, чем обнаружить ошибку позже или позволить покупателю найти ее вместо нас, — объяснял он слушателям бизнес-школы во время изучения этого случая вскоре после выпуска чипа, — В процессорах Pentium к потребителям не попало никаких ошибок".
К сожалению, Дхам ошибался. В мае 1994 года, по прошествии целого года после того, как первые образцы Pentium завершили двенадцатинедельное путешествие по цехам Intel, тесты на надежность, продолжавшиеся и после запуска нового чипа в производство, выявили проблему: Pentium давал неверные результаты при длинном делении. Из-за необходимости проверить три миллиона кремниевых транзисторов для обнаружения источника проблемы выяснение причины заняло еще несколько недель, т. е. Дхам смог доложить руководству Intel о результатах поисков ошибки только в конце июня или в начале июля. Его доклад стал печальным свидетельством того, что новый подход, состоявший в создании "команды интерфейсов", не оправдал возлагаемых на него надежд.
Метод, используемый в чипе Pentium для длинного деления, был описан двадцать пять лет назад в академическом журнале по вычислительной технике, издаваемом Институтом инженеров по электротехнике и радиоэлектронике. Чтобы получить результат деления числа х на число у, нужно взять первые четыре двоичные цифры числа у и первые семь двоичных цифр числа x и сделать предположение путем поиска приблизительного ответа в таблице умножения. Затем предполагаемое число умножить на у и посмотреть, насколько вы близки к точному ответу. Если разность равна нулю, это означает, что предположение оказалось точным; если нет, нужно разделить y для получения разности, сделав еще одно предположение по числам в таблице. Шаг за шагом, предположение будет все точнее, а разность — все меньше, пока, наконец, вы не получите ответ с точностью до пятнадцати знаков после запятой.
Для ускорения процесса деления справочная таблица была в кремнии заложена в сам чип. К сожалению, пять из 2048 чисел в таблице оказались неправильными. Ошибка была не слишком заметна, поскольку сам метод выполнения длинного деления подразумевал автоматическое исправление ошибки. Но очень малое число комбинаций двоичных чисел все же приводило к неправильному конечному результату.
Подсчитать, сколько комбинаций дадут неверный результат, было относительно просто. Инженеры, проводившие анализ для срочно созванной команды по оценке серьезности проблемы, ответили: приблизительно одно вычисление из девяти миллиардов. Сложнее было определить, какое значение будет иметь для пользователей получение неверных ответов в одном из девяти миллиардов длинных делений. Для большинства из них, кто не часто пользовался устройством с плавающей точкой, а если и пользовался, то не требовал точности до пятнадцати знаков, ответ был таков: практически никакого значения. При среднем уровне использования обладателем Pentium устройства с плавающей точкой, подсчитали инженеры Intel, неправильные ответы могли появляться примерно один раз в двадцать семь тысяч лет. Подавляющее большинство ПК, содержащих бракованные чипы Pentium, будут превращены в лом задолго до того, как это произойдет. Средний срок работы между сбоями для чипов памяти составлял около семисот лет, а у самого процессора Pentium этот срок равнялся примерно двумстам годам.