- Итак, в суперскалярных процессорах функции распараллеливания лежат на аппаратуре, в VLIW-процессорах – на компиляторе.
- Исторически первые суперскалярные процессоры - советские Эльбрусы. Поддержка суперскалярности: Pentium, AMD, архитектура x86 и др.
- VLIW-процессоры появились в конце 80х. Элементы архитектуры содержались в серии PA-RISC. Пример классического VLIW-процессора: Itanium (долго был самым мощным процессором в мире).
- Плюсы VLIW
- (1) Компилятор является более «умной» системой, чем аппаратура, способной хранить больше контекстной информации и значит принимать более верные решения об оптимизации.
- (2) Подход VLIW сильно упрощает архитектуру процессора. Поскольку отсутствуют большие и сложные узлы, снижается энергопотребление.
- Минусы VLIW
- Невысокая плотность кода, большое количество пустых инструкций для простаивающих устройств. Коды для VLIW-процессоров гораздо длиннее, чем аналогичные коды для традиционных архитектур
- Приходится полагаться на оптимизацию компилятора, который может содержать ошибки. Разработка эффективного компилятора для VLIW – сложнейшая задача.
- EPIC (Explicitly Parallel Instruction Computing: Микропроцессор Intel Itanium, имея суперскалярную архитектуру, кроме традиционной, содержит 64-битную систему команд «с явным параллелизмом», которая позволяет использовать VLIW-ядро непосредственно.
Параллелизм на уровне потоков (1) - Распараллеливание на уровне потоков TLP (в отличие от ILP) управляется программно.
- Виртуальная многопоточность создается в результате выделения в одном физическом процессоре двух или более логических. Классический пример – технология Hyper-Threading (НТ) компании Intel.
- Зачем:
- (1) В современных конвейеризованных процессорах, если при запросе к памяти слово отсутствует в кэшах 1го или 2го уровней – на его загрузку уходит время, в течение которого конвейер простаивает. Выход – организация внутрипроцессорной многопоточности
- (2) В течение такта, как правило, не все исполнительные модули процессора задействованы, поэтому их можно загрузить параллельным потоком. Понятно, что вдвое производительность не увеличится, т.к. параллельные потоки используют общие память, кэш и др., плюс потери из-за синхронизации и распараллеливания инструкции. По имеющимся данным, рост производительности 35-50%
- Таким образом, многопоточность позволяет маскировать простои. Если поток 1 блокирован, загрузка аппаратуры обеспечивается потоком 2.
- Минус TLP – возникновение конфликта при обращении из разных потоков к одному адресу памяти или когда одному потоку требуются результаты выполнения другого. Это приводит к росту количества тактов, необходимых для выполнения инструкций многоядерность
Do'stlaringiz bilan baham: |