EPIC
Ця стаття не містить посилань на джерела. Ви можете допомогти поліпшити цю статтю, додавши посилання на надійні (авторитетні) джерела. Матеріал без джерел може бути піддано сумніву та вилучено. (серпень 2019) |
EPIC (англ. explicitly parallel instruction computing) — мікропроцесорна архітектура з явним паралелізмом команд. Термін введений в 1997 році альянсом HP і Intel для архітектури Intel Itanium. EPIC дозволяє мікропроцесору виконувати інструкції паралельно, спираючись на роботу компілятора, а не виявляючи можливість паралельної роботи інструкцій за допомогою спеціальних схем. У теорії, це могло спростити масштабування обчислювальної потужності процесора без збільшення тактової частоти.
Витоки в VLIW
У 1989 дослідники компанії HP дійшли висновку, що RISC архітектури мають явну межу інструкцій, виконуваних за такт. Були розпочаті розробки нової архітектури, пізніше названої 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 (паралелізму інструкцій,англ. Instruction-level parallelism):
- Передбачення розгалужень використовується, щоб знизити частоту переходів і для збільшення спекулятивності виконання інструкцій. В останньому випадку, умовне розгалуження перетворюється в заповнення предикатних регістрів, потім виконуються обидві гілки. Результат тієї гілки, яка не повинна була виконуватися, скасовується за значенням предикатного регістру.
- Відкладені виняткові ситуації, що використовують біт Not a thing в регістрах загального призначення. Вони дозволяють продовжувати спекулятивне виконання навіть після виняткових ситуацій.
- Вкрай великий регістровий файл, щоб уникнути необхідності в перейменуванні регістрів.
В архітектурі Itanium також був доданий обертовий регістровий файл, необхідний для спрощення програмної конвейєризації циклів (software pipelining). За наявності такого файлу зникає необхідність в ручній розкрутці циклів і ручного перейменування регістрів.
Інші розробки і дослідження
Існувала деяка кількість досліджень архітектур EPIC, не пов'язаних з розробками по Itanium.
- Проект IMPACT в університеті Іллінойсу в Urbana-Champaign під керівництвом Wen-mei Hwu сильно вплинув на пізніші дослідження.
- Архітектура PlayDoh від HP-labs.
- Федерація Gelato, співтовариство розробників з розробки більш ефективних компіляторів для Linux на серверах Itanium.
Див. також
- п
- о
- р
- ASIP
- CISC
- EDGE
- EPIC
- MISC
- URISC
- RISC
- VLIW
- NISC
- ZISC
- TRIPS[en]
- Порівняння
- Конвеєр команд
- Bubble
- Operand forwarding[en]
- Позачергове виконання
- Спекулятивне виконання
- Модуль передбачення переходів
- Memory dependence prediction[en]
- Конфлікти в конвеєрі
- Процесор цифрових сигналів (DSP)
- GPGPU
- Мікроконтролер
- Фізичний процесор
- Система на кристалі (SoC)
- Секційний процесор
- Barrel processor
- Cellular[en]
- Блок генерації адреси (AGU)
- Арифметико-логічний пристрій (ALU)
- Barrel shifter
- Функціональний блок (EU)
- Математичний співпроцесор (FPU)
- Back-side bus
- (Мультиплексор)
- Регістри
- Модуль керування пам'яттю (MMU)
- Буфер асоціативної трансляції (TLB)
- Кеш
- Регістровий файл
- Мікрокод
- Пристрій керування
- Тактова частота
- APM
- ACPI
- Динамічна зміна частоти[en]
- Динамічна зміна напруги[en]
- Clock gating
![]() | Ця стаття є заготовкою. Ви можете допомогти проєкту, доробивши її. Це повідомлення варто замінити точнішим. |