Скачиваний:
54
Добавлен:
16.04.2013
Размер:
67.07 Кб
Скачать

2. Введение в программирование для архитектуры IntelItanium

2.1. Обзор

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

Архитектура Itaniumвключает полный набор инструкций с новыми свойствами, предназначенными для:

  • Увеличения уровня параллелизма инструкций (instructionlevelparallelism–ILP).

  • Лучшее сокрытие управления памятью

  • Улучшенная обработка переходов и управление ресурсами перехода.

  • Уменьшение издержек на вызов процедуры.

Также архитектура допускает высокоэффективное выполнение с плавающей точкой и обеспечивает прямую поддержку для приложений мультимедиа.

Полное описание синтаксиса и семантики инструкций Itaniumможно найти в первой части тома 3 «Описание набора инструкцийIntelItanium». Хотя эта глава обеспечивает представление высокого уровня для программирования прикладного уровня, она воспринимает предшествующий опыт программирования на языке ассемблера как нечто дружественное к архитектуре приложенийItanium. Оптимизация исследуется в других главах этого руководства.

2.2. Регистры

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

Имеется 128, 64-битных регистров общего назначения(r0-r127), которые используются для хранения значений для целочисленных и мультимедиа вычислений. Каждый из 128 регистров имеет один дополнительный битNaT(NotaThing), который используется для указания является ли верным значение содержащееся в регистре. В результате выполнения спекулятивныхItaniumинструкций, регистровый битNaTможет быть установлен в 1. Регистрr0является только читаемым и содержит значение ноль. Попытка записи в регистрr0вызовет ошибку.

Имеется 128, 82-битных регистров с плавающей точкой(f0-f127), которые используются для вычислений с плавающей точкой. Первые два регистраf0иf1являются только читаемыми и читаются, соответственно, как +0.0 и +1.0. Инструкции, читающиеf0илиf1, вызовут ошибку.

Имеется 64 однобитных предикатных регистра(p0-p63), которые управляют условиями выполнения инструкций и условными переходами. Первый регистр –р0является только читаемым и всегда читается как истина (1). Результаты инструкции. Которая записываетр0– аннулируются.

Имеется 8, 64-битных регистров переходов(b0-b7), которые используются для формирования адресов переходов при косвенных переходах.

Предусмотрено размещение до 128 прикладных регистров(ar0-ar127), которые поддерживают произвольные функции. Многие из этих регистров являются зарезервированными для будущего использования. Некоторые прикладные регистры имеют дополнительные имена (алиасы). Например,ar66является счетчиком эпилогов (EpilogueCounter) и называетсяar.ec.

Указатель инструкций– это 64-битный регистр, который указывает на текущую выполняемую связку инструкций.