У этого термина существуют и другие значения, см.
EPIC.
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.
См. также
Примечания
- EPIC: An Architecture for Instruction-Level Parallel Processors (PDF). HP Laboratories Palo Alto, HPL-1999-111 (February 2000). Архивировано из первоисточника 27 апреля 2012. Проверено 8 мая 2008.
- ↑ Inventing Itanium: How HP Labs Helped Create the Next-Generation Chip Architecture. Архивировано из первоисточника 27 апреля 2012. Проверено 14 декабря 2007.
- Cовременные серверные процессоры. Часть 2. Intel Itanium, HP PA8700, Alpha
- 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»