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