"Почти невозможная" задача

Рассмотрим Pentium Pro, первый процессор архитектуры P6, которая сейчас используется в Pentium II. Этот процессор для серверов и рабочих станций, представленный в конце 1995 года и теперь закончивший свой жизненный цикл, содержит 5,5 миллионов транзисторов. Если вы решите проверить каждое возможное состояние процессора, придется проверить 25 500 000 комбинаций. Получается число порядка 101 600 000, а ведь это только оценка требуемых объемов работ.

Кроме этого, процессор должен взаимодействовать с чипсетом (еще 2400 состояний), кэшем 2го уровня, подсистемой памяти, сотнями периферийных
устройств, сотнями тысяч программных пакетов и миллионами конкретных пользователей. "Соедините это вместе", - говорит Gerald Budelman (Джеральд Бадельман), главный менеджер Server Validation Engineering - отдела технологии проверки серверов, "и полная проверка оказывается почти невозможной задачей".

Рассмотрим только инструкцию ADD, одну из сотен используемых инструкций процессора Pentium Pro. ADD вычисляет сумму двух 32 битных чисел, одного из заданного регистра и другого из любой ячейки оперативной памяти. С 232 возможных значений для одного числа и таким же количеством для другого, возможны 264 различных комбинации данных. Кроме того, первое число может находиться в любом из восьми регистров, а второе число, если разрядность виртуального адресного пространства равна 48 бит, может находиться по любому из 248 возможных адресов памяти.

Это 251 различных комбинаций по размещению и 264 различных вычислений. Если бы у вас был миллион компьютеров, и каждый проверял бы миллион вычислений в секунду, проверка всех возможных состояний заняла бы 1015 лет. Всего лишь. "Между прочим", - говорит Budelman, "возраст Вселенной оценивается всего в 1012 лет".

Проверка процессора, его тестирование - это настоящее искусство, а не применение грубой силы. Невозможно проверить процессор, проверяя каждое возможную инструкцию. Хотя Intel никогда не сможет выпустить процессор, свободный от ошибок, вполне возможно (и практика это подтверждает), что после многомесячного непрерывного, специализированного и безумно дорогого тестирования на рынок попадет работоспособный и надежный продукт.

До и после кристалла

По словам Budelman, тестирование в Intel "начинается почти на следующий день после того, как у кого-то появилась идея нового микропроцессора, и продолжается не только во время подготовки к выходу, но и до самого конца жизненного цикла". Общий процесс тестирования разделен на две главные составляющие - до и после первого экземпляра кристалла. Предварительное тестирование, проходящее до того, как процессор воспроизводиться в кремнии, оперирует программными моделями, а иногда и аппаратными моделями, собранными из дискретных элементов. На втором этапе тестируются готовые кристаллы, работающие в обычных компьютерах или на специальных стендах.

На каждом этапе преследуется одна и та же цель - поиск и устранение ошибок. Процессор, готовый ли это кристалл или всего лишь модель, тестируют снова и снова практически круглосуточно. Любые потенциальные ошибки или недосмотры протоколируются в главной базе данных и однозначно подразделяются на четыре категории: ложная тревога (ошибка при тестировании), новые ошибки, ранее известные ошибки и не воспроизводимые ошибки (т.е. те, которые нельзя повторить).

Как только ошибка исправлена либо внесением изменений в модель процессора, либо производством нового кристалла, нужно провести тестирование снова, чтобы убедиться в отсутствии новых ошибок. Процесс тестирования, нахождения ошибок и дополнительного тестирования требует не только наличия быстро перестраиваемых тестов, но и быстро настраиваемой системы обработки огромных объемов данных, накапливаемых в результате этих тестов.