Компания Intel начала выпуск программных патчей, позволяющих обойти недавно обнаруженную ошибку в процессорах Skylake. В официальном сообщении особо подчёркивают, что при выполнении большинства пользовательских задач дефект схемотехники обычно никак не проявляется. Однако во время научных расчётов и стресс-тестов вероятность сбоя возрастает.
Изначально ошибка была обнаружена на процессоре Core i7-6700K с включённой опцией Hyper-Threading участником проекта GIMPS при поиске простых чисел Мерсенна. Вскоре с ней столкнулись и в других проектах распределённых вычислений. По наблюдениям пользователей, ошибка происходит на некоторых процессорах Skylake, если в вычислениях используется значение экспоненты равное 14 942 209, но вряд ли это единственное условие.
В блоге Intel обсуждают наличие производственного дефекта у процессоров Skylake, но не сообщают новых подробностей. Это уже стало традицией – писать туманные комментарии в Intel errata, даже не указывая программу, в которой впервые была обнаружена проблема. Более того, по мере выхода новых продуктов детали о найденных ошибках в прежних постепенно исчезают из общедоступной части сайта.
Во время рождественских каникул ошибка обсуждалась на форумах Hardwareluxx.de и Mersenne.org. В дискуссии приняли участие и авторы программы Prime95. Она использует алгоритм поиска простых чисел и уже более двадцати лет применяется для стресс-тестирования стабильности компьютеров – как в разгоне, так и на штатных частотах.
Найденный в Skylake дефект выражается в том, что при выполнении сложных вычислений процессоры Intel Core i7-6700K могут зависнуть или вызвать непредсказуемое поведение системы. Windows при этом обычно выпадает в «синий экран», а у Linux паникует ядро. Проблема возникает даже в том случае, если соблюдается оптимальный температурный режим и обеспечивается стабильное питание. Похоже, с проблемой выгибания тонкой подложки процессоров Skylake под давлением тяжёлых кулеров этот баг также не связан.
Это не первый случай странного поведения новых процессоров Skylake. В отдельном треде обсуждается другая ошибка – зависание через несколько минут после переключения процессора в состояние простоя.
Наиболее простой способ выяснить наличие дефекта у конкретного процессора – запустить фирменную программу Intel Processor Diagnostic Tool, бесплатную утилиту Prime95 с разными настройками или проверить корректность выполнения заданий в разных проектах BOINC. Опытные пользователи рекомендуют чередовать циклы полной загрузки с длительными паузами и оставлять стресс-тест на всю ночь.
Потенциально ошибка затрагивает всё шестое поколение архитектуры Core, но на практике воспроизвести её удаётся редко. В одних случаях зависание происходит в первые минуты стресс-теста, а в других – через несколько часов, или же не происходит вовсе. Конфигурации компьютера, версия BIOS/UEFI и операционной системы значения не имеют.
Из-за плавающего характера ошибки, массово отзывать процессоры Skylake производитель пока не намерен. Вместо применявшейся ранее процедуры бесплатной замены дефектных чипов, Intel попытается решить проблему на программном уровне. Уже сейчас некоторым производителям материнских плат через партнёрские каналы отправлены рекомендации по обновлению микрокода. Вероятно, соответствующие патчи появятся также для операционных систем.
Как и у любой крупной компании, в истории Intel подобные проблемы уже бывали не раз. Когда Intel только начала развивать архитектуру P5, первые процессоры содержали досадную аппаратную ошибку. Она получила название F00F bug – по обозначению первых двух байт четырёхбайтной последовательности, обработка которой приводила к зависанию. Для Pentium (включая версии с поддержкой MMX) были выпущены программные патчи, а на уровне железа проблема была решена лишь с выходом Pentium Pro.
В 1994 владельцы новых Pentium столкнулись с другим багом. Использование команды FDIV приводило к неправильному делению чисел, записанных в формате с плавающей запятой. Ошибка наиболее часто отмечалась при работе с таблицами Microsoft Excel, что заставило преждевременно поседеть не одного экономиста. Тогда дефектные серии отозвали, выполнив бесплатную замену всем подавшим заявление.
Более свежий пример из Intel errata касается четвёртого поколения архитектуры Core. Одним из долгожданных нововведений в Haswell была поддержка транзакционной памяти. На аппаратном уровне она реализована в виде нового набора инструкций – TSX (Transactional Synchronization eXtensions). Однако в процессорах Haswell, Haswell-E/EP и даже Broadwell-Y она была реализована с ошибкой. Отзывать их не стали. Intel просто рекомендовала при возникновении проблем отключить поддержку TSX в BIOS.
С точки зрения рационализации затрат такой подход можно понять. Поддержка транзакционной памяти разрабатывалась в первую очередь для ускорения работы серверов с базами данных. Домашний пользователь вряд ли заметит – включена у него функция TSX или нет. С другой стороны, пользователей активно стимулировали к апгрейду. Солидные суммы были вложены в рекламу новых возможностей Haswell, а в итоге оказалось, что воспользоваться некоторыми из них не удастся.
Политика Intel и других разработчиков меняется по двум основным причинам: экономическим и техническим. С точки зрения экономики всё просто: сейчас репутационные потери от дефектов оцениваются ниже, чем затраты на отзыв огромной партии чипов. Пока на рынке есть сильный конкурент, программные патчи выглядят рискованной полумерой. Недовольные клиенты могут перейти на конкурирующие решения. Если же реальной альтернативы нет, то разработчик сохранит объёмы продаж при любом сценарии.
На техническом уровне прогноз менее утешительный. Если раньше аппаратные ошибки в микросхемах были единичными и находились раз в несколько лет, то сейчас их выявляют в каждом новом поколении. Современные процессоры содержат несколько ядер, многоканальный контроллер памяти и видеоядро. Они поддерживают многопоточность, разделяемую память, средства виртуализации и множество новых инструкций. Одновременно им приходится нести тяжёлый груз старых инструкций из-за требований совместимости.
В сложившихся условиях производства выпуск тщательно протестированных продуктов стал на порядок сложнее и уже перестал быть приоритетной задачей. Разработчикам важнее соблюдать сроки и объёмы поставок, а первые пользователи новых продуктов давно стали бесплатными бета-тестерами.