В нынешнем году наконец-то появился первый микропроцессор с архитектурой IA-64, получивший известность под названием Itanium. Вопреки прогнозам некоторых специалистов, он сразу вышел в лидеры по производительности, по крайней мере, на задачах с плавающей запятой (тесты SPECfp2000). Это событие, бесспорно, во многом предопределяет развитие рынка универсальных высокопроизводительных микропроцессоров на ближайшие годы. В одной из статей я предположил, что данная архитектура может стать монополистом на соответствующем сегменте рынка [1]. Развитие ситуации за прошедшие с момента выхода этой публикации два года подтверждает данный прогноз.

В пользу IA-64 отказались от долгосрочной стратегии на развитие собственных процессоров RISC-архитектуры Hewlett-Packard (корпорация наряду с Intel явилась разработчиком Itanium и самой архитектуры IA-64), SGI, и, совсем недавно — Compaq. В течение нескольких лет разработки новых RISC-процессоров — соответственно PA-RISC, R1x000 и Alpha 21x64 — могут быть свернуты. Остаются лишь IBM c процессорами Power/PowerPC, а также Sun UltraSPARC.

По моему мнению, UltraSPARC не смогут конкурировать по производительности с микропроцессорами архитектуры IA-64 и будут сильно уступать им по масштабам выпуска. Последний фактор, в свою очередь, способен привести к относительно более высоким ценам на процессоры от Sun Microsystems.

IBM предложила «асимметричный» ответ: Power4. Подобно Alpha 21364, этот процессор вводит мультипроцессирование на уровень микросхемы; фактически Power4 является двухпроцессорной системой. Вопрос о том, способен ли такой подход стать долгосрочной альтернативой IA-64, остается весьма дискуссионным. Впрочем, можно предположить, что в стратегическом плане IBM в состоянии реализовать в будущем масштабные проекты, сопоставимые с IA-64.

В этих условиях, как мне представляется, могут появиться определенные шансы на союз отечественных разработчиков микропроцессора Elbrus E2K сходной с IA-64 архитектуры [2] с теми или иными западными фирмами.

С технической точки зрения лидерство IA-64 также выглядит естественным. Хотя производительность новых RISC-процессоров успешно продолжает расти, проблемы повышения КПД использования ресурсов суперскалярных процессоров становятся все более серьезными. На практике в последние годы появились две реальные альтернативы традиционной RISC-архитектуре: EPIC (явный параллелизм на уровне команд), тесно связанный с идеями VLIW [3], а также многопоточные архитектуры. Первая составляет одну из ключевых особенностей IA-64, а вторая пока реализуется только в разработках компании Tera Computer Systems [4]. Поэтому можно сказать, что на сегодня лишь идеи EPIC/VLIW нашли свое реальное воплощение — в Itanium.

Еще один введенный Intel термин, Itanium Processor Family (IPF), отвечает некоторому промежуточному положению в иерархии между микроархитектурой (конкретная аппаратная реализация архитектуры, в данном случае IA-64, в микропроцессоре) и архитектурой IA-64. К семейству IPF будет принадлежать не только уже появившийся Itanium, но и несколько последующих поколений микропроцессоров этой архитектуры, которые будут рассмотрены вкратце в конце данной статьи.

Разработчики Alpha из Compaq, как было недавно объявлено, присоединяются к работам над новыми поколениями микропроцессоров архитектуры IA-64. Судя по всему, при этом планируется внести весьма серьезные усовершенствования в микроархитектуру, так что представители Compaq даже говорят о новом процессорном семействе — IPF2. На настоящий же момент реальностью является только Itanium.

Одним из основных источников данных о микроархитектуре Itanium можно считать [5]. Характеристики Itanium с точки зрения программиста, пишущего на ассемблере с целью оптимизации программных кодов, рассмотрены в [6]. Следует отметить, что в архитектуре IA-64 появилось очень много особенностей, не имеющих аналогов в архитектуре традиционных RISC-процессоров. Предполагается, что некоторые базовые сведения об IA-64 читатель уже имеет.

Микроархитектура Itanium

Поскольку одна из главных задач IA-64 — увеличение числа одновременно выполняемых команд, анализ микроархитектуры целесообразно предварить ее краткой общей характеристикой, перечислив основные исполнительные ресурсы Itanium (рис. 1). Они включают 4 целочисленных АЛУ, 4 мультимедийных исполнительных устройства, 3 устройства обработки команд перехода, 2 устройства с плавающей запятой, работающих с данными расширенной точности, и 2 устройства с плавающей запятой одинарной точности. Кроме того, имеются 2 устройства загрузки регистров/записи в память.

Для обеспечения загрузки этих ресурсов Itanium в состоянии выдавать на выполнение до 6 команд за такт. Следует напомнить, что по 3 такие команды упаковываются в 128-разрядное командное слово, которое в Intel называют связкой (в этом, собственно, и проявляются элементы VLIW). В связке 5 разрядов отводится под поле шаблона, который указывает тип команды в каждом из трех «слотов» связки.

Поскольку разного типа команды для выполнения направляются в разные порты, это позволяет эффективно организовать параллельное выполнение команд. Подобный параллелизм, с учетом выдачи на выполнение до 6 команд за такт, охватывает не одну связку, а пару смежных связок [6].

Имеется четыре типа портов — M, I, B, F, которые отвечают соответственно операциям с памятью, целочисленным командам, командам перехода и операциям с плавающей запятой. В [5] приведены примеры выборок, обеспечивающих максимальную пропускную способность в 6 команд для двух типичных рабочих нагрузок — научно-технических задач (шаблон MFIMFI) и для Internet-приложений делового назначения (шаблон MIIMBB). В первом случае это обеспечивает выполнение 12 операций за такт (20 операций за такт при цифровой обработке изображений и работе с векторами с плавающей запятой с одинарной точностью), во втором — 8 параллельных операций за такт.

Кроме большого числа функциональных исполнительных устройств, важнейшей характеристикой Itanium является глубина конвейера (в данном случае — 10 стадий). Это несколько больше, чем в Alpha 21264 или отечественном проекте Elbrus E2K [2]. С другой стороны, это вдвое меньше, чем в использующем гиперконвейерную технологию процессоре Pentium 4 [7].

Хорошо известно, что увеличение числа стадий конвейера — «палка о двух концах». С одной стороны, оно позволяет достигать более высоких тактовых частот (Pentium 4 подобрался уже к 2 ГГц). С другой стороны, большое число стадий вызывает значительные накладные расходы в ситуациях, когда конвейер приходится перезаполнять. Является ли выбор числа стадий в Itanium золотой серединой, можно будет судить и на основании того, удастся ли в будущем увеличить тактовую частоту Itanium. На настоящий момент достигнута частота 800 МГц, что лишь немного уступает Alpha 21264. Однако увеличению тактовой частоты, как показывает практика, могут воспрепятствовать и другие факторы. Кроме того, в разработке находятся еще несколько новых микропроцессоров семейства IPF, первый из которых, McKinley, может сменить Itanium еще до того, как будет достигнута техническая возможность роста его тактовой частоты.

Обсудим иерархию кэш-памяти этих микропроцессоров, которая имеет три уровня. Сразу укажем, что кэш-память всех уровней не блокируется при возникновении ситуации непопадания в кэш. Двухпортовый кэш данных первого уровня имеет емкость 16 Кбайт и является 4-канальным наборно-ассоциативным с длиной строки 32 байта. Этот кэш является тегируемым, физически адресуемым. В нем используется алгоритм сквозной записи. Благодаря наличию двух портов он может выполнять одновременно 2 операции загрузки регистров/записи в память в любом сочетании.

При этом время выполнения команды загрузки (при попадании в кэш первого уровня) равно 2 тактам. Загрузка операндов с плавающей запятой всегда начинается с кэша второго уровня. Это связано с малой емкостью кэша данных первого уровня; подобный обход кэша первого уровня применялся и ранее, например, в SGI/MIPS R8000. Кэш команд первого уровня емкостью 16 Кбайт также является 4-канальным наборно-ассоциативным, и может доставлять одну строку (32 байта) за такт.

Двухпортовый кэш второго уровня емкостью 96 Кбайт содержит и команды, и данные. Он является 6-канальным наборно-ассоциативным, с длиной строки 64 байта. Как и кэш данных первого уровня L1, он может выполнять 2 операции с памятью за такт, но в нем используется уже алгоритм обратной записи.

При попадании в кэш второго уровня время выполнения команды загрузки для целочисленных операндов равно 6 тактам, для операндов с плавающей запятой — 9 тактам. Безусловно, столь большая задержка при выполнении загрузки регистров с плавающей запятой может являться потенциальным недостатком Itanium. Однако при работе с векторами эффективная организация конвейеров и некоторые особенности архитектуры IA-64 позволяют скрыть эту задержку.

Внешний кэш третьего уровня имеет емкость 4 Мбайт и длину строки 64 байта. Он является 4-канальным наборно-ассоциативным и может работать на частоте ядра микропроцессора. Максимальная пропускная способность при передаче данных из кэша третьего уровня в кэш второго уровня — 13 Гбайт/с.

Кроме трехуровневого кэша, в микроархитектуре Itanium представлены буферы быстрой переадресации TLB. Буфер имеет два уровня: 32-строчный первого уровня (задержка при непопадании в него равна 10 тактам) и 96-строчный второго уровня (задержка при непопадании — 23 такта). Оба буфера являются полностью ассоциативными. При этом поддерживается широкий спектр возможных размеров страниц памяти (в байтах): 4/8/16/64/256 Кбайт, 1/4/16/64/256 Мбайт. Кроме того, предусмотрен однотактный TLB-буфер команд емкостью 64 строки, также являющийся полностью ассоциативным.

Важнейшая особенность основного конвейера Itanium - «расцепление» (decoupling) фронтальной части, осуществляемое благодаря наличию буфера расцепления, имеющего емкость в 8 связок. Расцепление позволяет фронтальной части конвейера работать «асинхронно» от остальной части конвейера (даже когда та находится в состоянии простоя), осуществляя спекулятивную выборку еще незатребованных команд. Это позволяет скрыть задержки кэша команд и задержки, связанные с предсказанием переходов. Такой подход способствует поддержанию высокого уровня распараллеливания выполнения команд.

Фронтальная часть конвейера

Осуществляемая фронтальной частью предварительная выборка команд, инициируемая соответствующими командами IA-64, выбирает коды из кэша второго уровня и помещает их в потоковый буфер, который можно считать частью кэша первого уровня. В результате работы фронтальной части команды оказываются в буфере расцепления.

Фронтальная часть конвейера использует также иерархическую систему предсказаний перехода. В случае неверного предсказания на перезаполнение конвейера потребуется 9 тактов, что резко ухудшает производительность. Для уменьшения вероятности неверного предсказания в процессе предсказания перехода в Itanium применяется до 4 «уровней подсказок».

Для предсказания переходов фронтальная часть использует целый ряд управляющих структур. Во-первых, это традиционные таблицы предсказания переходов, которых в Itanium имеется два типа — BPT (Branch Prediction Table) и МBPT (Multiway Branch Prediction Table).

Обе таблицы устроены по сути одинаково, являясь 4-канальными наборно-ассоциативными и работая аналогично кэш-памяти на основе адресов связок. В них применяется двухуровневый предиктор с 4-разрядным полем истории (счетчики последних переходов). ВРТ имеет емкость 512 строк для обычных переходов, а МВРТ — всего 64 строки, но для переходов с ветвлением на несколько ветвей. Строки МВРТ включают соответственно информацию о трех слотах переходов, а не об одном, как в ВРТ. Применение МВРТ целесообразно именно для EPIC-кодов с применением спекуляции и предикатов, что делает более часто употребляемыми переходы со многими ветвями. МВРТ используется для предсказания переходов в связках типа МВВ и ВВВ, а ВРТ — в связках MFB, MBB и MIB.

Кроме МВРТ/ВРТ для предсказания переходов используются: TAC (Target Address Cache, кэш адресов перехода, содержащий по одной строке на связку) емкостью 64 строки; TAR (Target Address Register — регистр адресов перехода,

содержащий по одной строке на пару связок) емкостью 4 строки; RSB (Return Stack Buffer — буфер адресов возврата, используемый для команд возврата) емкостью 8 строк. Кроме того, для переходов относительно счетчика команд IP имеется два блока корректоров адреса перехода BAC1 и BAC2.

Структура TAR имеет минимальную емкость, но при этом обеспечивает минимальные задержки для осуществляемых переходов. Это полностью ассоциативный буфер, содержимое которого устанавливается командой предсказания перехода brp с суффиксом imp (т.е. brp.imp). Команда brp на момент подготовки публикации [1] в составе архитектуры еще отсутствовала, поэтому ниже будет дана краткая дополнительная информация о ней. Если в TAR указан соответствующий признак попадания (hit), переход будет выполнен безотносительно к тому, что имеется в ВРТ/МВРТ. TAR содержит не только признак, но и адрес перехода.

Предсказание TAR может игнорироваться только предиктором циклов (т.е. когда счетчик цикла LC или ЕС указывает, что нужно выйти из цикла).

Кэш ТАС заполняется командами brp, командами br или аппаратурой предсказания переходов Itanium. Если в МВРТ/ВРТ имеется признак попадания, ТАС предоставляет соответствующий адрес перехода.

Таким образом, от МВРТ/ВРТ зависит, должен ли переход происходить, а адрес берется из ТАС. Если же переход отсутствует в МВРТ/ВРТ, но в ТАС есть признак попадания, переход будет осуществлен. ТАС содержит одну строку на связку, поэтому кроме адреса связки в нем указывается еще и номер слота в связке.

При предсказании перехода в конвейере возникают задержки, так как аппаратура предсказания вставляет в него так называемые «пузыри». Если переход происходит на основании данных TAR, задержки не будет, т.е. пузыри не вставляются вообще. В общем случае при предсказании перехода появляется более чем один пузырь.

Если переход происходит на основании данных ТАС, появляется 1-тактный пузырь. Если TAR и ТАС не задействуются, но переход осуществляется относительно IP, появляется 1-тактный пузырь, и адрес перехода будет рассчитывать ВАС. Переход при этом даст задержку в 2-3 такта в зависимости от номера слота связки, куда будет осуществлен переход.

Если данные о переходе в ВРТ/МВРТ отсутствуют, то может использоваться статическое предсказание, кодируемое в команде перехода; при этом появляется 2-тактный пузырь. Наконец, переход по команде возврата вызывает 1-тактный пузырь.

В Itanium можно использовать три вида «подсказок» о переходах: явно — командой brp; командой пересылки в регистр переходов и с помощью кодируемой в команде br подсказки [6].

Применение техники предсказания переходов в Itanium позволяет добиться как низких задержек, так и высокой точности предсказания переходов — свыше 90% [5].

Средняя часть конвейера

Средняя часть конвейера отвечает за эффективную доставку команд и операндов в функциональные исполнительные устройства. На этих стадиях 6 входящих команд распределяются между 9 портами выдачи, и осуществляется отображение виртуальных номеров регистров из программного кода в физические регистры. Эти 9 портов включают 2 порта для команд группы М, 2 для команд I, 2 для команд F и 3 для команд группы B.

Для того чтобы убедиться, что параллельно выдаваемые на выполнение команды независимы, аппаратура использует стоп-биты IA-64, явно кодируемые на ассемблере. По утверждению самих разработчиков [5], определение независимости команд в RISC-архитектуре является гораздо более трудоемким. Поле шаблона связки позволяет, наоборот, не выдавать на одновременное выполнение больше команд, чем имеется исполнительных ресурсов микропроцессоров. Благодаря применению шаблонов по сравнению с RISC-архитектурой удаляются соответствующие декодеры. Кроме того, применение шаблонов позволяет упростить аппаратуру распределяющего коммутатора, т.к. некоторые типы «маршрутизации» команд в принципе невозможны.

Использование в IA-64 стекирования регистров и вращения регистров требует наличия аппаратуры, отображающей виртуальные номера регистров в физические, что осуществляется на стадии REN. Для этого Itanium имеет набор сумматоров и мультиплексоров. Так, логика стекирования требует только одного 7-разрядного сумматора, а всего требуется 98 сумматоров и 42 мультиплексора, которые занимают площадь менее 0,25 кв. мм.

Для автоматического сохранения/восстановления регистров в памяти при «переполнении/переизбытке» стека работает аппаратура RSE (Register Stack Engine). Она просто приостанавливает выполнение команд, ждущих соответствующие регистры; перезаполнение конвейера при этом не требуется.

Архитектура IA-64 характеризуется очень большими емкостями файлов регистров. Файл регистров общего назначения GR в IA-64 имеет емкость 128 строк. В Itanium он имеет 8 портов чтения и 6 портов записи. Эти порты позволяют поддерживать одновременно 2 М-операции и 2 I-операции за такт. Файл регистров с плавающей запятой FR имеет ту же емкость и обеспечивает

одновременную работу двух М-операций и двух команд FMAC («умножить-и-сложить»). Наконец, PRF — файл однобитных регистров-предикатов (их всего 64) имеет 15 портов чтения и 11 портов записи.

Стадии выполнения

Эффективность работы функциональных устройств увеличена за счет возможности прямой подачи результата выполнения на вход другой команды, минуя запись в регистры (техника «scoreboard»). Другая важнейшая особенность Itanium — неблокирующийся кэш. В результате конвейер встает только тогда и там, когда и где требуется реально отсутствующие данные, и возобновляет свою работу, как только они станут доступны [5].

«Целочисленное исполнительное ядро» имеет 4 порта — 2 порта памяти и 2 собственно целочисленных порта. Все 4 порта могут выдавать на выполнение арифметические команды, команды сдвига, логические команды, команды сравнения и большинство целочисленных мультимедийных портов SIMD.

М-порты могут также «выполнять» команды загрузки регистров/записи в память, а I-порты — более редкие целочисленные команды: проверку бит, поиск нулевого байта и некоторые виды сдвигов.

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

Поскольку предикаты генерируются исполнительным ядром микропроцессора, и могут использоваться почти сразу в последующих командах, требуется их по возможности быстрая доставка в аппаратуру, которая будет использовать их. Для повышения эффективности работы с предикатами в Itanium предусмотрена возможность их применения «на лету». Для этого кроме файла PRF используется файл спекулятивных предикатных регистров SPRF, и как только предикат рассчитан, его значение помещается в SPRF, откуда оно может сразу использоваться.

Обновление «архитектурного» файла PRF (чтение из которого происходит на более ранней стадии конвейера) осуществляется позднее [5].

Особый интерес представляет собой и аппаратная реализация в Itanium спекулятивного выполнения и обработки отложенных прерываний, что предусмотрено архитектурой IA-64 [5].

Плавающая запятая

Функциональные устройства с плавающей запятой (FPU) предполагают возможность работы с 82-разрядным представлением. Это обеспечивает, в частности, форматы чисел с плавающей запятой одинарной, двойной и расширенной точности. Некоторым базовым примитивом FPU можно считать команды FMAC, которые выполняются соответствующими FMAC-устройствами. Таких устройств в Itanium два, и каждая FMAC-команда за такт выполняет две операции с плавающей запятой двойной точности — умножение и сложение.

В результате Itamium имеет пиковую производительность в 4 операции с плавающей запятой за такт, или 3,2 GFLOPS при частоте 800 МГц. При работе с одинарной точностью Itanium может выполнить 8 операций за такт, используя SIMD-команды с плавающей запятой (для этого Itanium имеет 2 специальных дополнительных FMAC-устройства). Соответственно пиковая производительность Itanium на одинарной точности составляет уже 6,4 GFLOPS.

FMAC-устройства выполняют не только собственно команды FMAC, но и многие другие команды с плавающей запятой. Задержка при выполнении FMAC равна 5 тактам. Еще один конвейер с плавающей запятой выполняет команды сравнения FCMP, вычисления обратной величины, обратного квадратного корня и некоторые другие команды. Деление в Itanium реализуется программным путем с использованием команды обращения. Время выполнения FCMP равно 2 тактам.

Файл регистров FR имеет 8 портов чтения и 4 порта записи. Для увеличения эффективности работы он разделен на четные и нечетные банки [5]. Чтобы достигнуть пиковой производительности, два FMAC-устройства нужно снабжать шестью операндами за такт. Кэш второго уровня доставляет 4 операнда за такт, и еще 2 операнда нужно взять из файла FR.

FP-конвейер сцеплен с целочисленным. Это позволяет осуществлять пересылки между файлами FR и GR: поместить данные из первого во второй стоит 2 такта, а в обратном направлении — 9 тактов. Целочисленное умножение в Itanium отсутствует; его осуществляет аппаратура FMAC. Всего «цикл» — передача в файл FR, умножение и передача результата из FR в файл GR — требует 19 тактов.

Управление точностью и режимами округления в Itanium осуществляется через регистр состояния с плавающей запятой FPSR. Он используется и при выполнении спекулятивных вычислений.

Подсистема памяти

Реализация требований по поддержанию когерентности кэша в микроархитектуре Itanium начинается с кэша второго уровня, который использует известный протокол MESI. Этот же протокол применяется в кэше третьего уровня. Интересной особенностью Itanium, обеспечивающей более эффективную работу с протоколом MESI (т.е. уменьшение задержек при работе с ним) является возможность закодировать т.н. BIAS-подсказку о намерении изменить соответствующую строку кэша и препятствовать соответствующему распределению данных в кэш [5].

Системная шина Itanium позволяет соединить до 4 микропроцессоров между собой без дополнительных мостов. Она имеет ширину 64 разрядов плюс 8 разрядов для кодов ECC. Тактовая частота шины равна 133 МГц, но возможны 2 передачи за такт [8]. Это обеспечивает пропускную способность 2,1 Гбайт/с (до 266 млн. передач/с).

Для наиболее современных из высокопроизводительных микропроцессоров такая пропускная способность не является очень уж высоким показателем, особенно, если учесть последние достижения в технологии оперативной памяти и потенциально повышенные требования к пропускной способности в связи с высоким уровнем распараллеливания операций в Itanium. Достаточно сказать, что пропускная способность системной шины Pentium 4 составляет 3,2 Гбайт/с (Pentium 4 имеет гораздо более высокие частоты). Можно предположить, однако, что при нынешних тактовых частотах Itanium эта величина хорошо согласована с его производительностью.

Адресная шина шириной в 44 разряда отделена от шины данных, что для процессора подобного уровня является естественным.

В 4-процессорной системе протокол системной шины допускает одновременно до 56 незавершенных транзакций, в том числе 32 запроса на чтение. В Itanium реализовано специальное усовершенствование алгоритма MESI за счет так называемого механизма откладывания, благодаря которому более эффективно реализуются внеочередные передачи данных и внеочередное завершение транзакций за счет уменьшения нагрузки на адресную шину [5]. Эти свойства, по мнению разработчиков, способны обеспечить хорошую масштабируемость многопроцессорных систем на базе Itanium.

Перспективы развития IPF

Сегодня Intel предлагает Itanium с тактовыми частотами 733 и 800 МГц и кэшем третьего уровня емкостью 2 или 4 Мбайт, использующим технологию SRAM. При производстве Itanium применяется 0,18-микронная КМОП-технология; он упаковывается в картридж, который содержит процессор и кэш третьего уровня (всего 320 млн. транзисторов, но собственно процессор содержит только 25 млн. транзисторов).

В качестве поддерживающего Itanium набора микросхем сегодня может применяться Intel 460GX (работает с оперативной памятью SDRAM в компьютерах, содержащих до 4 процессоров) или NEC Azusa.

Cудя по некоторым высказываниям, существенно более эффективной реализацией IA-64, чем Itanium, будет следующий микропроцессор, McKinley. В нем будет использована новая микроархитектура при типоразмере транзисторов 0,18 или 0,15 мк.

По технологии 0,13 мк планируется выпустить два последующих микропроцессора с архитектурой IA-64: Madison и Deerfield. Последний будет на 30-40% дешевле, но его уровень производительности, хотя и будет уступать Madison, но все равно будет весьма высок — по крайней мере, выше, чем у Itanium. Затем планируется переход к технологии 0,1 мк. Появление представителей семейства IPF2 с возможным использованием многопоточной архитектуры следует ожидать не раньше 2004 года.

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

Литература

[1] М. Кузьминский, Краткий обзор IA-64. «Открытые системы», 1999, № 9-10

[2] М. Кузьминский, Отечественные микропроцессоры Elbrus E2K. «Открытые системы», 1999, № 5-6

[3] М.С. Шланскер, Б.Р. Рау, Явный параллелизм на уровне команд. «Открытые системы», 1999, № 11-12

[4] М. Кузьминский. Tera Computer, «Сomputerworld Россия», 1997, № 37

[5] H. Sharangpani, K. Arora, Itanium Processor Microarchitecture. IEEE Micro, Sept.-Oct. 2000

[6] Itanium Processor Microarchitecture Reference for Software Optimization. Intel, March 2000

[7] М. Кузьминский, Дорога к высоким тактовым частотам. «Открытые системы», 2001, № 2

[8] W.A. Samaras, N. Cherukuri, S. Venkataraman, The IA-64 Itanium Processor Cartridge, IEEE Micro, Jan.-Feb. 2001