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

2.7.1. Инструкции перехода

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

2.7.2. Циклы и программная конвейерная обработка

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

  • Развертка не может полностью эксплуатировать возможности параллелизма.

  • Развертка приспособлена для статически заданного количества итерационных циклов

  • Развертка может увеличивать размер кода.

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

  • Инструкций циклического перехода.

  • Прикладных регистров LCиEC.

  • Ротации регистров и предикации стадий циклов.

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

Дополнительно, для программной конвейерной обработки цикла типа whileи счетного цикла, для простых счетных циклов архитектура обеспечивает специфическую поддержку с помощью инструкцииbr.cloop. Инструкцияbr.cloopиспользует для определения условия выхода, 64-битный прикладной регистр счетчика цикла (LoopCounter–LC) вместо квалифицирующего предиката.

Полное обсуждение поддержки программной конвейерной обработки см. в главе 5 «Программная конвейерная обработка и поддержка циклов».

2.7.3. Ротация регистров

Ротация регистров позволяет объединить реализацию программной конвейерной обработки с предикацией. Ротируемые регистры ротируются на одну регистровую позицию каждый раз, когда выполняется специальный циклический переход. Таким образом, содержимое регистра Х окажется в регистре Х+1, а значение ротируемого регистра с наивысшим номером окажется в регистре r32. Размер ротируемой области основных регистров может быть любым кратным 8 и выбирается с помощью поля в инструкцииalloc. Предикатные регистры и регистры с плавающей точкой могут также ротироваться, но количество ротируемых регистров не программируемо: предикатные регистры ротируются отp16доp63, а регистры с плавающей точкой ротируются отf32доf127.

2.8. Итоги

Архитектура Itaniumобеспечивает особенности, которые уменьшают эффекты традиционных микроархитектурных барьеров производительности, с помощью:

  • Улучшенного ILPс большим количеством регистров и программного планирования групп и связок инструкций.

  • Лучшей обработки переходов, с помощью предикатов.

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

  • Модернизированной обработки цикла, с помощью аппаратной поддержки программной конвейерной обработки циклов.

  • Поддержка для сокрытия времени ожидания памяти, путем использования спекулятивности.