Архитектура EPIC на примере Intel Itanium 2
- Общая информация
- Реализация в 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 операций за такт.
© Лаборатория Параллельных
информационных технологий НИВЦ МГУ