EPIC (архитектура микропроцессора) | это... Что такое EPIC (архитектура микропроцессора)? (original) (raw)
У этого термина существуют и другие значения, см. 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.
См. также
- Complex instruction set computer (CISC)
- Reduced instruction set computer (RISC)
- Very long instruction word (VLIW)
- Эльбрус — российский процессор
- IA-64
Примечания
- ↑ Schlansker and Rau EPIC: An Architecture for Instruction-Level Parallel Processors (PDF). HP Laboratories Palo Alto, HPL-1999-111 (February 2000). Архивировано из первоисточника 27 апреля 2012. Проверено 8 мая 2008.
- ↑ 1 2 Inventing Itanium: How HP Labs Helped Create the Next-Generation Chip Architecture. HP Labs (June 2001). Архивировано из первоисточника 27 апреля 2012. Проверено 14 декабря 2007.
- ↑ Cовременные серверные процессоры. Часть 2. Intel Itanium, HP PA8700, Alpha
- ↑ De Gelas, Johan Itanium–Is there light at the end of the tunnel?. AnandTech (November 9, 2005). Архивировано из первоисточника 27 апреля 2012. Проверено 8 мая 2008.
Ссылки
- Historical background for EPIC
- Mark Smotherman (2002) «Understanding EPIC Architectures and Implementations»
Технологии цифровых процессоров | |
---|---|
Архитектура | CISC · EDGE · EPIC · MISC · URISC · RISC · VLIW · ZISC · Фон Неймана · Гарвардская 8 бит · 16 бит · 32 бит · 64 бит · 128 бит |
Параллелизм | Pipeline Конвейер · In-Order & Out-of-Order execution · Переименование регистров · Speculative execution Уровни Бит · Инструкций · Суперскалярность · Данных · Задач Потоки Многопоточность · Simultaneous multithreading · Hyperthreading · Superthreading · Аппаратная виртуализация Классификация Флинна SISD · SIMD · MISD · MIMD |
Реализации | DSP · GPU · SoC · PPU · Векторный процессор · Математический сопроцессор • Микропроцессор · Микроконтроллер |
Компоненты | Barrel shifter · FPU · BSB · MMU · TLB · Регистровый файл · control unit · АЛУ • Демультиплексор · Мультиплексор · Микрокод · Тактовая частота • Корпус • Регистры • Кэш (Кэш процессора) |
Управление питанием | APM · ACPI · Clock gating · Динамическое изменение частоты • Динамическое изменение напряжения |