Momotik.ru

Народный проект

Метки: Epic explosion, epic fail.

EPIC (англ. explicitly parallel instruction computing) — микропроцессорная архитектура с явным параллелизмом команд. Термин введён в 1997 году альянсом HP и Intel[1] для разрабатываемой архитектуры Intel Itanium.[2] EPIC позволяет микропроцессору выполнять инструкции параллельно, опираясь на работу компилятора, а не выявляя возможность параллельной работы инструкций при помощи специальных схем. В теории, это могло упростить масштабирование вычислительной мощности процессора без увеличения тактовой частоты.

Содержание

Истоки в VLIW

В 1989 исследователи компании HP пришли к выводу, что RISC архитектуры имеют явный предел инструкций, выполняемых за такт. Были начаты разработки новой архитектуры, позже названой EPIC.[2] Исследования основывались на архитектурах VLIW, в которых каждое командное слово содержит несколько операций, выполняемых на нескольких исполнительных устройствах.

Одной из целей EPIC был перенос сложной логики планирования инструкций из микропроцессора в компилятор, который бы планировал инструкции статически. Это позволило бы убрать планировщик инструкций из процессора, освободив место и мощность для других элементов, например, дополнительных АЛУ. Другой целью было увеличить степень параллелизма инструкций (instruction level parallelism) за счет больших возможностей компилятора по поиску независимых команд.

VLIW в своей изначальной форме имело несколько недостатков, препятствующих массовому внедрению:

  • Наборы инструкций VLIW не являются обратно совместимыми между различными поколениями процессоров. Если в более новом процессоре будет использоваться больше исполнительных устройств (например, АЛУ), то программы для нового процессора нельзя исполнить на старом, более узком процессоре (с меньшим количеством устройств).
  • Задержки загрузки данных из иерархии памяти (кэшей, DRAM) не являются полностью предсказуемыми. Из-за этого статическое планирование инструкций загрузки и использования данных становятся крайне сложными.

Эволюция VLIW

Архитектура EPIC имеет следующие особенности для устранения недостатков VLIW:

  • Каждая группа из нескольких инструкций называется бандлом (bundle). Каждый бандл может иметь стоповый бит, обозначающий, что следующая группа зависит от результатов работы данной. Такой бит позволяет создавать будущие поколения архитектуры с возможностью параллельного запуска нескольких бандлов. Информация о зависимостях вычисляется компилятором, и поэтому аппаратуре не придется проводить дополнительную проверку независимости операндов.
  • Для предподкачки данных используется инструкция программной подкачки (software prefetch). Предподкачка увеличивает вероятность того, что к моменту исполнения команды загрузки, данные уже будут в кеше. Также, в этой инструкции могут быть дополнительные указания для выбора различных уровней кеша для данных.
  • Инструкция спекулятивной загрузки используется для загрузки данных до того, как станет известно, будут ли они использованы (bypassing control dependencies), или будут они изменены перед использованием (bypassing data dependencies).
  • Инструкции проверки загрузки (check load instruction) помогает инструкциям спекулятивной загрузки при помощи проверок, зависела ли инструкция загрузки от последующей записи. В случае наличия подобной зависимости, спекулятивная загрузка должна быть повторена.

Архитектура EPIC также включает в себя несколько концепций (grab-bag) для увеличения ILP (параллелизма инструкций):

  • Предсказание ветвлений используется, чтобы снизить частоту переходов и для увеличения спекулятивности исполнения инструкций. В последнем случае, условное ветвление преобразуется в заполнение предикатных регистров, затем выполняются обе ветви. Результат той ветви, которая не должна была выполняться, отменяется по значению предикатного регистра.
  • Отложенные исключительные ситуации, использующие бит Not a thing в регистрах общего назначения. Они позволяют продолжать спекулятивное исполнение даже после исключительных ситуаций.
  • Крайне большой регистровый файл, чтобы избежать необходимости в переименовании регистров.

В архитектуре Itanium также был добавлен вращающийся регистровый файл[3], необходимый для упрощения программной конвейеризации циклов (software pipelining). При наличии такого файла исчезает необходимость в ручной раскрутке циклов и ручного переименования регистров.[4]

Иные разработки и исследования

Существовало некоторое количество исследований архитектур EPIC, не связанных с разработками по Itanium.

  • Проект IMPACT в университете Иллинойса в Urbana-Champaign под руководством Wen-mei Hwu сильно повлиял на более поздние исследования.
  • Архитектура PlayDoh от HP-labs.
  • Федерация Gelato, сообщество разработчиков по разработке более эффективных компиляторов для Linux на серверах Itanium.

См. также

Примечания

  1. EPIC: An Architecture for Instruction-Level Parallel Processors (PDF). HP Laboratories Palo Alto, HPL-1999-111 (February 2000). Архивировано из первоисточника 27 апреля 2012. Проверено 8 мая 2008.
  2. ↑ Inventing Itanium: How HP Labs Helped Create the Next-Generation Chip Architecture. Архивировано из первоисточника 27 апреля 2012. Проверено 14 декабря 2007.
  3. Cовременные серверные процессоры. Часть 2. Intel Itanium, HP PA8700, Alpha
  4. Itanium–Is there light at the end of the tunnel?. Архивировано из первоисточника 27 апреля 2012. Проверено 8 мая 2008.

Ссылки

  • Historical background for EPIC
  • Mark Smotherman (2002) «Understanding EPIC Architectures and Implementations»

Tags: Epic explosion, epic fail.