Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MProc / M9 / Оптимизация часть 2..doc
Скачиваний:
40
Добавлен:
16.04.2013
Размер:
67 Кб
Скачать

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

2.1. Обзор

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

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

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

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

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

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

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

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

2.2. Регистры

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

Имеется 128, 64-битных регистров общего назначения (r0-r127), которые используются для хранения значений для целочисленных и мультимедиа вычислений. Каждый из 128 регистров имеет один дополнительный бит NaT (Not a Thing), который используется для указания является ли верным значение содержащееся в регистре. В результате выполнения спекулятивных 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 является счетчиком эпилогов (Epilogue Counter) и называется ar.ec.

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