Interested Article - EPIC (архитектура микропроцессора)
- 2020-10-17
- 1
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. ( )
См. также
- Complex instruction set computer (CISC)
- Reduced instruction set computer (RISC)
- Very long instruction word (VLIW)
- Эльбрус — российский процессор
- IA-64
- Суперскалярность
Примечания
- Schlansker and Rau (PDF). HP Laboratories Palo Alto, HPL-1999-111 (February 2000). Дата обращения: 8 мая 2008. Архивировано из 27 апреля 2012 года.
- ↑ . HP Labs (June 2001). Дата обращения: 14 декабря 2007. Архивировано из 27 апреля 2012 года.
- 12 января 2012 года.
- De Gelas, Johan AnandTech (9 ноября 2005). Дата обращения: 8 мая 2008. Архивировано из 27 апреля 2012 года.
Ссылки
- Mark Smotherman (2002) « »
- 2020-10-17
- 1