Более 30 лет назад компания Intel представила первые Pentium, которые на многие годы стали самой известной торговой маркой на процессорном рынке. Но не все в новом поколении CPU было гладко. Из-за внутреннего дефекта иногда в Pentium могла возникать ошибка FDIV (Floating Point Division), что влияло на точность деления чисел в формате с плавающей запятой. Инженер и бывший программист Google Кен Ширрифф (Ken Shirriff), который сейчас занимается историей вычислительной техники и реверс-инжинирингом, поделился результатами своего исследования старого процессора. Он сумел точно определить причину дефекта и неправильные транзисторы, которые приводили к ошибке.
Процессор Intel Pentium на архитектуре P5 изготавливался по техпроцессу 800 нм и его кристалл состоит из 3,1 миллиона транзисторов. С помощью микроскопа можно рассмотреть транзисторные сетки и блоки операций.
Математическая ошибка связана с ошибками в программируемой логической матрице PLA. В Pentium для работы с числами FP был реализован специальный блок SRT со специальной таблицей из 2048 ячеек со значениями «-2», «-1», «0», «1» и «2» в 112 строках. И при детальном изучении таблицы под микроскопом удалось выявить, что в пяти ячейках отсутствуют нужные транзисторы, из-за чего вместо значения «0» по умолчанию они получили значение «2». И столь небольшой дефект приводил в итоге к возможной ошибке всей всего математического блока, что влияло на точность результатов при делении. Математики точно выявили ошибку в алгоритме вычислений еще в 1995 году, но теперь Ширрифф смог точно идентифицировать дефектное место в кремнии.
Первоначально ошибку FDIV выявил профессор математики Томас Найсли (Thomas R. Nicely), но в Intel считали эту ошибку несущественной и крайне редкой — якобы вероятность ее возникновения один раз в 27 тысяч лет. Но специалисты IBM смогли доказать, что такая ошибка может происходить раз в 24 дня. В итоге производитель решил отозвать бракованную серию процессоров, что стоило компании убытков в 475 миллионов долларов.
Источник:
Tom's Hardware