РОССИЯ 

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




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

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

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

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




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

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

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

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

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

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

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

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

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


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