Величайшая могила кремния и как десять миллиардов долларов сгорели в войне против x86

2026-09-16 11:21:31 Время чтения 5 мин 86

В июне 2001 года на обложках ведущих мировых технологических изданий красовался массивный процессорный картридж с зеркальной металлической крышкой. Корпорация Intel и компания Hewlett-Packard с помпой объявили о начале новой эры в вычислительной технике.

Миру представили Itanium, первый 64-битный процессор на принципиально новой архитектуре EPIC.

Инженерная элита двух гигантов уверенно заявляла, что старая архитектура x86, ведущая родословную от чипа 8086 конца семидесятых годов, отправляется на свалку истории.

Через пару лет серверные стойки корпораций, суперкомпьютеры научных институтов и даже домашние компьютеры обычных пользователей должны были перейти на Itanium. Архитекторам казалось, что они придумали идеальный процессор, который навсегда избавит кремний от компромиссов прошлого.

Спустя десять лет проект в индустрии в открытую называли Титаником, а суммарные потери технологических гигантов на разработку и попытки реанимации чипа превысили десять миллиардов долларов.

Это был самый масштабный, дорогой и поучительный провал в истории микроэлектроники.

Ниже - техническая хроника того, почему красивая математическая теория разбилась о физику кремния и как маленькая компания AMD в одиночку сломала планы монополиста одной простой инженерной идеей.

Враг по имени внеочередное исполнение

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

Классические процессоры архитектуры x86 были сложными, горячими и неповоротливыми.

Инструкции языка x86 имели переменную длину от одного до пятнадцати байт, что превращало декодирование команд в сущий ад. В 32-битном режиме у программистов было всего восемь регистров общего назначения, из-за чего процессору приходилось непрерывно сбрасывать промежуточные данные в стек оперативной памяти.

Чтобы заставить эту систему работать быстро, инженеры Intel начиная с ядра Pentium Pro городили колоссальные аппаратные надстройки.

Появилось динамическое внеочередное исполнение команд Out of Order, спекулятивные предсказатели переходов и сложные планировщики инструкций прямо на кристалле. Процессор внутри себя на лету переводил громоздкие команды x86 в маленькие внутренние микрооперации, тасовал их порядок, искал независимые вычисления и пытался загрузить все доступные конвейеры.

Кремний начал задыхаться.

До сорока процентов площади кристалла и колоссальная доля потребляемой энергии уходили не на математические расчеты, а на логику управления очередями и декодерами.

Инженеры Intel и HP посчитали, что подошли к физическому тупику.

Они решили, что процессор не должен тратить драгоценные транзисторы на попытки угадать, какие команды выполнять параллельно.

Всю эту работу должен делать компилятор перед запуском программы.

Архитектура EPIC и ставка на всемогущий софт

Идея архитектуры явно параллельных инструкций EPIC выглядела на бумаге триумфом чистого разума.

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

Каждая связка содержала ровно три инструкции и специальное шаблонное поле, прямо указывающее аппаратным исполнительным блокам, какие команды можно выполнять параллельно за один такт без каких-либо проверок.

Аппаратная часть процессора становилась предельно простой, быстрой и холодной. Ей больше не нужны были тяжелые планировщики очередей и сложные схемы предсказания переходов.

Процессор превращался в послушного исполнителя, который на максимальной частоте перемалывал готовые параллельные пачки команд.

Вторым революционным решением стала предикация.

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

В архитектуре Itanium инженеры внедрили шестьдесят четыре однобитных регистра предикатов.

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

Никаких сбросов конвейера, никакой потери тактов.

Это была идеальная машина, созданная для мира, которого не существовало.