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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.8. Итоги

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

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

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

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

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

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