Архитектура EPIC на примере Intel Itanium 2




Общая информация

Архитектура EPIC позволяет программно производить достаточно серьезные оптимизации, при этом задействуя и ILP на аппаратном уровне, за счет чего существенно растет эффективность работы системы в целом. Сам подход EPIC (Explicitly Parallel Instruction Computing) сочетает в себе сильные стороны, как RISC, так и VLIW. Главное преимущество подхода состоит в том, чтобы максимально быстро загружать работой несколько исполняющих устройств. О схемах конвейеров Itanium и Itanium 2 можно почитать тут.

John Crawford перечислил следующие особенности архитектуры EPIC:

  • Большое количество регистров.
  • Масштабируемость архитектуры до большого количества функциональных устройств. Это свойство представители фирм Intel и HP называют "наследственно масштабируемый набор команд" (inherently scaleable instruction set)
  • Явный параллелизм в машинном коде. Поиск зависимостей между командами производит не процессор, а компилятор.
  • Предикация (Predication). Команды из разных ветвей услового оператора снабжаются предикатными полями (полями условий) и запускаются параллельно.
  • Загрузка по предположению (Speculative loading). Данные из медленной основной памяти загружаются заранее.

Главный принцип EPIC - прежде всего, дать возможность программисту или компилятору явно указать на внутренний параллелелизм в программе прямо в последовательности инструкций, во вторую же очередь, все же позволить аппаратуре выявлять распараллеливаемые участки. Таким образом, ставка делается на программиста и компилятор, появляется возможность не уделять столь большое внимание логике проверки зависимостей и выявлениям внеочередных выполнений инструкций. Появляющееся же за этот счет место на чипе может быть использовано для увеличения числа ФУ и регистров, что дает возможность еще больше увеличить возможности параллельного выполнения кода.




Реализация в Itanium 2

Конвейер в Itanium 2 состоит из 8 этапов, способен за один такт обрабатывать до 6 инструкций и реализует концепцию EPIC.

В конвейере используются следующие устройства:

  • 6 целочисленных АЛУ
  • 6 мультимедийных АЛУ
  • 2 вещественные арифметические устройства увеличенной точности
  • 2 дополнительных вещественных арифметических устройств обычной точности
  • 2 устройства чтения
  • 2 устройства записи
  • 3 устройства ветвления

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

В итоге, каждая из инструкций при разборе связки направляется на соответствующий ее типу конвейер:

  • (A) целочисленное АЛУ
  • (B) Не-АЛУ целочисленное
  • (M) памяти
  • (F) вещественные
  • (B) Ветвления
  • (L) специальные

Рост числа исполняющих устройств в Itanium 2 увеличивает возможности по распределению инструкций компилятором втрое по сравнению с Itanium.

Разберем два примера таких связок инструкций:

Для промышленного и коммерческого кода шаблонная комбинация MII/MBB предоставляет шесть инструкций или восемь параллельных операций за такт (два записи/чтения, две целочисленные операции АЛУ, две постинкрементые АЛУ операции и две инструкции ветвления). Альтернативно, комбинация MIB/MIB представляет то же сочетание инструкций, но с одним предположенным ветвлением и одной операцией ветвления.

Для научных расчетов использование шаблона MFI в каждой связке позволяет производить 12 параллельных операций за такт (загрузка 4 вещественных операндов двойной точности в регистры, выполнение четырех операций с вещественными числами двойной точности, две целочисленные АЛУ операции и две постинкрементые АЛУ операции). Для расчетов, где не требуется двойная точность, архитектура SIMD позволяет выполнить вдвое большее число операций с плавающей точкой, а именно произвести 20 операций за такт.


© Лаборатория Параллельных информационных технологий НИВЦ МГУ
Rambler's Top100