Тим Джексон - Intel: взгляд изнутри
"Когда проект близился к завершению и каждая из команд заверяла меня, что ошибок нет, я предлагал немедленно выплатить 100 дол. любому, кто обнаружит ошибку", — вспоминает он. К удивлению Дхама, некоторые откликнулись на его предложение, и ему пришлось выплатить несколько сотен долларов. Но выявление ошибки было прекрасной новостью.
"Это обходится гораздо дешевле, чем обнаружить ошибку позже или позволить покупателю найти ее вместо нас, — объяснял он слушателям бизнес-школы во время изучения этого случая вскоре после выпуска чипа, — В процессорах Pentium к потребителям не попало никаких ошибок".
К сожалению, Дхам ошибался. В мае 1994 года, по прошествии целого года после того, как первые образцы Pentium завершили двенадцатинедельное путешествие по цехам Intel, тесты на надежность, продолжавшиеся и после запуска нового чипа в производство, выявили проблему: Pentium давал неверные результаты при длинном делении. Из-за необходимости проверить три миллиона кремниевых транзисторов для обнаружения источника проблемы выяснение причины заняло еще несколько недель, т. е. Дхам смог доложить руководству Intel о результатах поисков ошибки только в конце июня или в начале июля. Его доклад стал печальным свидетельством того, что новый подход, состоявший в создании "команды интерфейсов", не оправдал возлагаемых на него надежд.
Метод, используемый в чипе Pentium для длинного деления, был описан двадцать пять лет назад в академическом журнале по вычислительной технике, издаваемом Институтом инженеров по электротехнике и радиоэлектронике. Чтобы получить результат деления числа х на число у, нужно взять первые четыре двоичные цифры числа у и первые семь двоичных цифр числа x и сделать предположение путем поиска приблизительного ответа в таблице умножения. Затем предполагаемое число умножить на у и посмотреть, насколько вы близки к точному ответу. Если разность равна нулю, это означает, что предположение оказалось точным; если нет, нужно разделить y для получения разности, сделав еще одно предположение по числам в таблице. Шаг за шагом, предположение будет все точнее, а разность — все меньше, пока, наконец, вы не получите ответ с точностью до пятнадцати знаков после запятой.
Для ускорения процесса деления справочная таблица была в кремнии заложена в сам чип. К сожалению, пять из 2048 чисел в таблице оказались неправильными. Ошибка была не слишком заметна, поскольку сам метод выполнения длинного деления подразумевал автоматическое исправление ошибки. Но очень малое число комбинаций двоичных чисел все же приводило к неправильному конечному результату.
Подсчитать, сколько комбинаций дадут неверный результат, было относительно просто. Инженеры, проводившие анализ для срочно созванной команды по оценке серьезности проблемы, ответили: приблизительно одно вычисление из девяти миллиардов. Сложнее было определить, какое значение будет иметь для пользователей получение неверных ответов в одном из девяти миллиардов длинных делений. Для большинства из них, кто не часто пользовался устройством с плавающей точкой, а если и пользовался, то не требовал точности до пятнадцати знаков, ответ был таков: практически никакого значения. При среднем уровне использования обладателем Pentium устройства с плавающей точкой, подсчитали инженеры Intel, неправильные ответы могли появляться примерно один раз в двадцать семь тысяч лет. Подавляющее большинство ПК, содержащих бракованные чипы Pentium, будут превращены в лом задолго до того, как это произойдет. Средний срок работы между сбоями для чипов памяти составлял около семисот лет, а у самого процессора Pentium этот срок равнялся примерно двумстам годам.
А как же те, кто хотел извлечь реальные преимущества из функций Pentium для вычислений с плавающей точкой? Среди них были графические дизайнеры и полиграфисты, использовавшие прикладные пакеты типа PhotoShop; для них эта ошибка могла выдать одну неправильную точку из сотен тысяч или даже миллионов. Результат был бы не хуже, чем при неправильно поставленной одной точке в фотографии или на странице текста. Даже если и появится точка на странице, большинство людей примут ее за пылинку на печатной плате и не станут обращать на нее внимания. Но графические дизайнеры были не единственными, кто интенсивно применял чип. Инженеры, экономисты и финансовые аналитики также использовали Pentium. Пятнадцать значимых цифр точности могли оказаться очень важными и привести к смещению чертежа новой ракеты на несколько миллиметров от положенного или к ошибке в несколько долларов при подсчете потока будущей наличности при миллиардных сделках. Кроме того, существовала и третья категория пользователей: теоретические математики и другие ученые, которые целыми днями эксплуатировали свои компьютеры, обеспеченные мощью Pentium, для вычислений. Для таких пользователей дефект мог ежедневно приводить к неправильным результатам.
На интенсивных пользователей приходилась крохотная доля от 2 млн. чипов Pentium, которые Intel надеялась продать к концу 1994 года: инженеров и аналитиков, которым нужно было много считать, насчитывалось не более нескольких сотен, а математиков — и всего-то несколько десятков. Однако цена устранения дефекта специально для них была бы очень высока. Только смена шаблонов для внесения правильных пяти чисел стоила бы десятки тысяч долларов. Затем потребуется дальнейшая работа — тысячи чипов, каждый стоимостью 900 дол., поскольку Intel всегда назначала очень высокие цены в начале жизненного цикла продукта, необходимо будет выбросить. А что делать с теми, которые уже отгружены? Завоевание господства Pentium проходило по плану: многие сотни тысяч новых чипов уже находились на рабочих столах пользователей или в розничной сети, и их возвращение окажется недопустимо дорогим. Каждую машину должен будет вскрыть опытный техник, чтобы извлечь старый чип и установить на его место новый. Было ясно, что Intel лишится миллионов долларов, а возможно, даже десятков миллионов, если решится сделать то, что она проделала с бракованными чипами 486, превратив их в брелоки.
Проще всего для компании было ничего не сообщать миру и внести ряд изменений в шаблоны для устранения дефекта. У Intel уже имелся стандартный "пошаговый" процесс, при котором новые разработки чипов проходили последовательные изменения и "сжатия" для устранения ошибок, уменьшения размеров чипа или снижения стоимости производства. Вычислительная ошибка могла быть легко устранена при следующем пошаговом процессе, и это дало бы возможность решить проблему ненавязчиво, не нанося никакого вреда имиджу нового чипа на рынке.
(adsbygoogle = window.adsbygoogle || []).push({});