Explicitly Parallel Instruction Computing (EPIC)

Este asemanator cu VLIW. Este implementat in procesoarele Itanium si in DSP-uri. Diferenta majora dintre EPIC si VLIW este aceea ca versiunile de VLIW nu sunt compatibile cu versiunile mai vechi (in timp de versiunile de EPIC sunt). Aceasta problema exista deoarece versiunile diferite de VLIW au numar diferit de unitati de executie. Cum (spre deosebire de arhitecturile superscalare) setul de instructiuni VLIW este constient de numarul de unitati de executie, cand numarul lor variaza, apar probleme de compatibilitate.
Unele procesoare analizeaza codul in timpul executiei. Acest lucru presupune hardware aditional complex. Procesoarele EPIC deleaga aceasta sarcina compilatorului.

Avantaje:

  • Cost redus
  • Pentru ca nu exista constrangeri legate de timp si ca in cazul analizei din timpul executiei si sunt posibile analize mult mai complexe decat cele efectuate de hard.

Dezavantaje:

  • Compilatorul nu poate sa aiba toate informatiile despre parametrii de rulare pe care ii are hardul in timpul executiei. Astfel, deciziile luate de compilator la compile-time, desi sunt luate pe baza unor algoritmi mai complecsi, sunt mai putin informate(au la baza mai putina informatie).

EPIC presupune deci ca compilatorul precizeaza inca de la compilare ce intructiuni se vor executa in paralel. Pentru ca acest lucru sa poate fi exploatat la maxim, procesorul trebuie sa si poata executa in paralel multe instructiuni. De aceea, un procesor EPIC are multi registri, multe pipelineuri si cai de date largi.
Tot pentru a folosi la maxim paralelismul oferit de hardware, predictia salturilor este imbunatatita. In general, pentru o intructiune de salt, dupa anumite euristici, se presupune a fi adevarata una dintre cele doua directi de urmat, si se efectueaza in avans instructiunile de pe acea cale. Daca instructiunea chiar urmeaza acea cale, performanta procesorului nu are de suferit. Daca insa predictia saltului a fost gresita, exita o penalizare de timp (datorita golirii benzii de asamblare si a cache miss-urilor). Pentru a inlatura aceasta problema, procesoarele EPIC presupun a fi adevarate ambele cai ale saltului. Desi intr-adevar se fac operati inutile, datorita gradului inalt de paralelism al hardului aceasta nu e o problema. In schimb insa, se evita penalizarea datorata unei predictii gresite.

Unele implemetari de EPIC pot sa nu presupuna ca ambele directii ale saltului sunt corecte, ci sa procedeze ca si celelate procesoare, si sa aleaga numai una dintre ele. Algoritmul pe baza caruia se ia o astfel de decizie este insa mai informat. Astfel, compilatorul poate folosi informatii obtinute in urma efectuarii profilului codului pentru a prezice ce cale va fi urmata. Profilul codului presupune rularea codului pentru cazuri generale de rulare si efectuarea de statistici despre caile cele mai des urmate. Apoi compilatorul va introduce prezicerile (facute pe baza profilului) in codul compilat; iar procesorul va actiona pe baza lor.

asc/extra/epic.txt · Last modified: 2014/03/07 17:07 by emil.slusanschi
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0