2.11.4. Архитектура Intel 64
Компания предпочла, если можно так выразиться, совершить бархатную революцию.
Продолжая развивать свою линейку 32-бит процессоров, она начала параллельно выводить на
рынок 64-бит семейство. В отличие от этого, переход с 16 на 32 бит был сделан абсолютно
дискретно - 80386 полностью заменил собой 80286, волевым решением.
Процессор разрабатывался с нуля, причем параллельно сразу в двух версиях: инженерами Intel
и Hewlett-Packard. Впрочем, в основе обоих чипов лежали, естественно, одни и те же идеи,
поскольку создавались они все же совместно и должны были оба стать родоначальниками одного
и того же семейства. Цементирующими факторами были:
единая идеология, пришедшая на смену CISC - EPIC (Explicitly Parallel Instruction Computing
- вычисления с явными параллельными инструкциями);
новая архитектура IA-64, включающая в себя набор инструкций, описание регистров и
остальные элементы архитектуры. Впрочем, архитектура как раз - вещь изменчивая,
достаточно вспомнить, как отличаются между собой такие CISC процессоры, как 8086 и
80486, оба созданные на базе х86.
Точно так же с Merced и McKinley, Itanium и Itanium 2 - оба построены на основе одной
идеологии, но на разных вариантах архитектуры. В свое время та же история, в общем -то, была с
Pentium и Pentium Pro. Впрочем, общие черты были у тех, есть и у этих, - за это "отвечает" EPIC.
В первую очередь речь идет о полноценной масштабной суперскалярности, то есть
способности выполнять одновременно несколько инструкций - для чего процессор содержит
несколько исполнительных модулей - для операций с целыми числами, с числами с плавающей
запятой и т.д.
В отличие от Pentium и его последователей, разбирающихся в коде самостоятельно, EPIC-
процессоры преимущественно полагаются на компилятор, который должен сам проанализировать
код на предмет нахождения оптимальных мест для распараллеливания его выполнения и
снабдить процессор этой информацией - поэтому и "explicitly". Процессор не должен сам пытаться
понять, что можно исполнять параллельно, а что нет, и т.д. - все это ему уже заранее объяснит
компилятор. Плюс мощные механизмы по предсказанию переходов, предварительному
выполнению кусков кода, предварительной загрузке данных и т.п. - загрузка исполнительных
блоков должна быть распределена максимально равномерно.
Кардинально решен вопрос с регистрами, количество которых увеличено в несколько раз. У
Itanium оно составляет: 128 регистров общего назначения, 128 - для хранения чисел с плавающей
запятой, 8 регистров переходов и 64, - отвечающих за работу механизмов предсказания. Такого
количества регистров, да еще реально 64-битных, хватит для хранения любых требуемых чисел
для любого разумного количества исполнительных модулей. Таких модулей у Itanium, первого
представителя семейства: два целочисленных, два для операций с памятью (итого - 4 ALU-
инструкции за такт) и четыре - для операций с плавающей точкой. Физическая память адресуется
44-бит числами, что ограничивает ее объем "всего лишь" 17.6 Терабайтами, блоки для операций с
плавающей точкой работают с числами в 82-бит представлении.
От идеи реализовать 32-бит х86 ядро в аппаратном виде Intel отказалась, сочтя это слишком
неэффективным использованием площади кристалла, так что для того чтобы получить
возможность исполнения Itanium старого х86 кода, пришлось создать систему трансляции, которая
«на лету» преобразует х86 код в IA-64. Очевидно, что при прочих равных условиях
производительность подобного решения будет ниже, чем у чистого х86, работающего на той же
частоте. Не следует ожидать от Itanium скоростного исполнения х86 программ - поддержка этой
архитектуры относится скорее к издержкам переходного периода. Это семейство для решения 32-
бит задач не приспособлено, вряд ли следует использовать Itanium для подобных целей.
Вдобавок, сам по себе Itanium был в значительной степени пилотным проектом, как и Pentium
Pro, так что процессор вообще стоит рассматривать больше как демонстрацию возможностей
архитектуры, чем реальный коммерческий продукт. Характерный штрих - чипсет для Itanium,
460GX, поддерживает в качестве памяти всего лишь РС100 SDRAM, это кое-что говорит о
скорости, с которой способен обрабатывать данные процессор. С другой стороны, в какой-то мере
не слишком быстрый интерфейс с оперативной памятью компенсируется очень большим кэш - 2
или 4 Мбайт L3, работающем на полной частоте процессора (733 или 800 МГц), с пропускной
способностью до 12.8 Гбайт/с.
Еще одной задачей Itanium было решить вопрос с компиляторами - ведь EPIC-процессоры, как
уже упоминалось, очень сильно от них зависят. В отличие от компиляторов для х86 процессоров,
которые на производительность процессоров почти не влияли, здесь компиляторы являются