Пређи на садржај

EPIC

С Википедије, слободне енциклопедије

EPIC (енгл. Explicitly parallel instruction computing) је термин који је 1997. сковао Itanium[1] да би објаснио програмску парадигму коју су научници истраживали још од 1980.[2] Ова парадигма се још назива Независна архихектура. То је била основа за Интелов и HP-ов развој за Интелову Itanium архихектуру,[3] и касније је HP тврдио да је "EPIC" био само стари термин за Итанијум-ову архихектуру.[4] EPIC дозвољава микропеоцесорима да паралелно извршава софтверске инструкције користећи компилатор, пре него да користи комплекс кола на-чипу, да би контролисао паралелно извршење инструкција. Ово је требало да омогући једноставано скалирање перформанси без прибегавања вишим фреквенцијама такта.

Корење у VLIW

[уреди | уреди извор]

Године 1989, истраживачи у HP-у су признали да је рачунар са смањеним скупом инструкција, тј. да је RISC атхихектура достигла лимит у једној инструкцији по циклусу. Они су почели да истражују нову архитектуру, касније названу EPIC.[3] Основа за истраживање била је Јако дуга реч инструкције (VLIW), у којој су више операција кодиране у свакој инструкцији, а затим обрађене помоћу више извршних јединица.

Један од циљева EPIC-а био је да се премести комплексност распореда инструкција из CPU хардвера у софтверски компајлер, који може да ради статично са распоредом инструкција (уз помоћ трага повратних информација). Ово елиминише потребу за комплексним распоредом циклуса у процесору, који ослобађа простор и енергију за друге функције, укључујући и додатне ресурсе извршења. Подједнако важан циљ био је да се додатно искористи паралелизам на нивоу наредбе (ILP), користећи компајлер да пронађе и искористи додатне могућности за паралелну обраду.

VLIW (бар оригинална форма) има неколико недостатака који га спречавају да постане мејнстрим:

  • VLIW скупови инструкција нису уназад комшатибилни између имплементација. Када су шире импрементације (више јединица извршења) уграђене, скуп инструкција за шире машине није уназад компатибилан са старијим, ужим имплементацијама.
  • Учитвање одговора из меморијске хијерархије која обухвата кеш централне процесорске јединице и DRAM нема детерминистичко кашњење. То чини статички распоред учитавања инструкција помоћу компајлера веома компликованим.

EPIC архиектура је евоулирала од VLIW архихектуре, задржавајући многе концепте суперскаларне архихектуре.

Даљи корак после VLIW

[уреди | уреди извор]

EPIC архихектура додаје неколико особина како би избегла недостатке VLIW-а:

  • Свака група од више софтверских инструкција се зове сноп. Сваки од снопова има стоп бит наговештај, ако овај скуп операција зависи од каснијег снопа. Са овим могућностима, будућа имплементација може да се гради тако да издаје више пакета паралелно. Информације зависности се израчунава од стране компајлера, па хардвер не мора да изврши проверу зависности операнда.
  • Дохват софтверских инструкција се користи као тип prefetch (претходно денетих података - унапред) податка. Овај дохват повећава шансе за кеш погодак за учитавање, а може да укаже на степен потребног временског локалитета у различитим нивоима кеш меморије.
  • Спекулативна инструкција учитавања се користи за спекулативно учитавање података пре него што се зна да ли ће се оно користити (заобилажењем контроле зависности), или да ли ће она бити измењена пре него што се користи (заобилажењем зависности података).
  • Инструкција провере учитавања помаже спекулативна оптерећења тако што провери да ли спекулативно оптерећење зависи од каснијег складиштења, и на тај начин мора да се поново учита.

EPIC архихектура такође обухвата grab-bag од архитектонских концепата да повећа ILP:

  • Исказ гранања се користи да се смањи појављивање грана и да се повећа спекулативно извршавање инструкција. У овој функцији, услови грана се конвертују да прикажу регистре који се користе да убију резултате извршених инструкција од стране гране која није узета.
  • Одложени изузеци, користе not a thing бит у оквиру опште намене регистара, дозвољавајући спекулативно извршавање поред могућих изузетака.
  • Веома велики архитектонски фајл регистри избегавају потребу за преименовањем регистра.
  • Инструјције гранања које имају више путева побољшавају предвиђање гранања комбиновањем низа алтернативних грана у један сноп.

Itanium архихектура исто додаје преименовање регистра[4] и регистарски прозор, алатку корисну за софтверски пајплајн јер избегава потребе за мануелним одвијањем петље и преименовањем регистара.

Друга истраживања и развој

[уреди | уреди извор]

Било је и других истрага у EPIC архитектури које нису директно везане за развој Itanium-ске архитектуре.

  • Пројекат IMPACT на Illinois универзитету, који је предводио Wen-mei Hwu, био је извор многих утицајних истраживања на ову тему.
  • PlayDoh архихектура из HP-лабораторије је била још један велики истраживачки пројекат.
  • Gelato је развојна заједница отвореног изворног кода у којој академски и комерцијални истраживачи раде на развијању ефикаснијих компајлера за Линукс апликације које раде на Итаниумовим серверима.

Референце

[уреди | уреди извор]
  1. ^ Schlansker and Rau (2000). „EPIC: An Architecture for Instruction-Level Parallel Processors” (PDF). HP Laboratories Palo Alto, HPL-1999-111. Архивирано из оригинала (PDF) 12. 06. 2012. г. Приступљено 8. 5. 2008. 
  2. ^ US 4847755 
  3. ^ а б „Inventing Itanium: How HP Labs Helped Create the Next-Generation Chip Architecture”. HP Labs. 2001. Архивирано из оригинала 04. 03. 2012. г. Приступљено 14. 12. 2007. 
  4. ^ а б De Gelas, Johan (9. 11. 2005). „Itanium–Is there light at the end of the tunnel?”. AnandTech. Приступљено 8. 5. 2008. 

Спољашње везе

[уреди | уреди извор]