Interested Article - EPIC (архитектура микропроцессора)

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

Истоки VLIW

В 1989 году исследователи компании Hewlett-Packard пришли к выводу, что количество инструкций , которые процессор архитектуры RISC способен выполнить за один такт , ограничено. Были начаты разработки новой архитектуры, основанной на архитектуре VLIW и названной EPIC . У процессоров архитектуры 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 (параллелизма инструкций):

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

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

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

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

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

См. также

Примечания

  1. Schlansker and Rau (PDF). HP Laboratories Palo Alto, HPL-1999-111 (February 2000). Дата обращения: 8 мая 2008. Архивировано из 27 апреля 2012 года.
  2. . HP Labs (June 2001). Дата обращения: 14 декабря 2007. Архивировано из 27 апреля 2012 года.
  3. 12 января 2012 года.
  4. De Gelas, Johan AnandTech (9 ноября 2005). Дата обращения: 8 мая 2008. Архивировано из 27 апреля 2012 года.

Ссылки

  • Mark Smotherman (2002) « »
Источник —

Same as EPIC (архитектура микропроцессора)