EPIC (arhitectura cu microprocesor)
Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de
versiunea revizuită la 23 decembrie 2016; verificările necesită
12 modificări .
EPIC ( în engleză explicitly parallel instruction computing - „ calculation with explicit parallelism of machine instructions ”) este o clasă de arhitecturi de microprocesoare cu paralelism explicit al instrucțiunilor. Termenul a fost introdus în 1997 de alianța HP și Intel [1] pentru viitoarea arhitectură Intel Itanium [2] . EPIC permite microprocesorului să execute instrucțiuni în paralel pe baza informațiilor de la compilator , mai degrabă decât să detecteze posibilitatea de funcționare în paralel a instrucțiunilor folosind circuite speciale în timpul rulării. În teorie, acest lucru ar putea face mai ușoară scalarea puterii de procesare a procesorului fără a crește viteza de ceas.
Originile VLIW
În 1989, cercetătorii Hewlett-Packard au ajuns la concluzia că numărul de instrucțiuni pe care un procesor RISC le poate executa într-un ciclu este limitat. Dezvoltarea unei noi arhitecturi bazată pe arhitectura VLIW și numită EPIC [2] a fost începută . Pentru procesoarele cu arhitectură VLIW , o instrucțiune (un cuvânt de instrucțiune) codifică mai multe operații; operaţiile sunt efectuate simultan de diferite unităţi de execuţie ale procesorului.
Obiectivele de dezvoltare EPIC:
- eliminarea programatorului de instrucțiuni din procesor ;
- o creștere a numărului de instrucțiuni pe care procesorul este capabil să le execute simultan ( English instruction level parallelism - instruction parallelism ).
Planificatorul de instrucțiuni este un dispozitiv cu o logică complexă care face parte din procesor și este conceput pentru a determina ordinea în care sunt executate instrucțiunile. Eliminarea programatorului de instrucțiuni a eliberat spațiu în interiorul procesorului pentru alte dispozitive (cum ar fi un ALU ). Funcțiile programatorului de instrucțiuni au fost atribuite compilatorului .
O creștere a gradului de paralelism al instrucțiunilor se realizează prin utilizarea capacității compilatorului de a căuta instrucțiuni independente.
Arhitecturile VLIW în forma lor originală au avut mai multe dezavantaje care au împiedicat adoptarea lor în masă:
- Seturile de instrucțiuni VLIW nu au fost compatibile între generațiile de procesoare (un program compilat pentru un procesor care conține mai multe unități de execuție (de exemplu, mai multe ALU ) nu a putut fi executat de un procesor care conține mai puține unități);
- întârzierile în încărcarea datelor din ierarhia memoriei ( cache-uri , DRAM ) nu au fost complet previzibile (din această cauză, implementarea programării statice a instrucțiunilor de încărcare și utilizare a datelor a devenit mai complicată).
Evoluția VLIW
Arhitectura EPIC are următoarele caracteristici pentru a aborda deficiențele VLIW:
- Fiecare grup de mai multe instrucțiuni se numește pachet . Fiecare pachet poate avea un bit de oprire, ceea ce indică faptul că următorul grup depinde de rezultatele acestuia. Un astfel de pic vă permite să creați generațiile viitoare de arhitectură cu capacitatea de a rula mai multe pachete în paralel. Informațiile de dependență sunt calculate de compilator, astfel încât hardware-ul nu trebuie să facă verificări suplimentare pentru independența operandului.
- Instrucțiunea de preluare preliminară a software -ului este utilizată pentru preluarea preliminară a datelor . Prepaging crește șansa ca până la executarea comenzii de încărcare, datele să fie deja în cache . De asemenea, în această instrucțiune pot exista instrucțiuni suplimentare pentru alegerea diferitelor niveluri de cache pentru date.
- Instrucțiunea de încărcare speculativă este utilizată pentru a încărca date înainte de a se ști dacă acestea vor fi utilizate ( ocolirea dependențelor de control ) sau modificate înainte de utilizare ( ocolirea dependențelor de date ).
- Verificarea instrucțiunilor de încărcare ajută instrucțiunile de încărcare speculative verificând dacă o instrucțiune de încărcare depinde de o scriere ulterioară. Dacă există o astfel de dependență, descărcarea speculativă trebuie repetată.
Arhitectura EPIC include, de asemenea, mai multe concepte ( grab-bag ) pentru a crește ILP (Instruction Parallelism):
- Predicția ramurilor este utilizată pentru a reduce frecvența ramurilor și pentru a crește execuția speculativă a instrucțiunilor. În acest din urmă caz, ramificarea condiționată este convertită la umplerea registrelor de predicate, apoi ambele ramuri sunt executate. Rezultatul ramurii care nu ar fi trebuit executat este anulat de valoarea registrului de predicate.
- Excepții amânate utilizând bitul Not a thing în registrele de uz general. Ele permit execuția speculativă să continue chiar și după excepții.
- Fișier de înregistrare extrem de mare pentru a evita nevoia de a redenumi registrele .
- Instrucțiunile de ramuri cu mai multe destinații îmbunătățesc predicția ramurilor prin combinarea mai multor ramuri alternative într-un singur pachet.
Arhitectura Itanium a adăugat, de asemenea, un fișier de registru rotativ [3] , care este necesar pentru a simplifica pipeliningul software al buclelor ( pipelining software ). Cu un astfel de fișier, nu este nevoie de derularea manuală a ciclurilor și redenumirea manuală a registrelor [4] .
Alte evoluții și cercetări
Au existat unele cercetări asupra arhitecturilor EPIC care nu au legătură cu dezvoltarea Itanium.
- Proiectul IMPACT de la Universitatea din Illinois din Urbana-Champaign, condus de Wen-mei Hwu , a influențat puternic cercetările ulterioare.
- Arhitectura PlayDoh de la HP-labs.
- Gelato Federation , o comunitate de dezvoltatori care dezvoltă compilatoare mai bune pentru Linux pe serverele Itanium. ( Gelato Federation )
Vezi și
Note
- ↑ Schlansker și Rau EPIC: An Architecture for Instruction-Level Parallel Processors (PDF) (link nu este disponibil) . HP Laboratories Palo Alto, HPL-1999-111 (februarie 2000). Consultat la 8 mai 2008. Arhivat din original pe 27 aprilie 2012. (nedefinit)
- ↑ 1 2 Inventarea lui Itanium: Cum au ajutat laboratoarele HP la crearea arhitecturii de cip de nouă generație (link mort) . HP Labs (iunie 2001). Consultat la 14 decembrie 2007. Arhivat din original pe 27 aprilie 2012. (nedefinit)
- ↑ Procesoare de server moderne. Partea 2. Intel Itanium, HP PA8700, Alpha Arhivat la 12 ianuarie 2012.
- ↑ De Gelas, Johan Itanium – Există lumină la capătul tunelului? (link indisponibil) . AnandTech (9 noiembrie 2005). Consultat la 8 mai 2008. Arhivat din original pe 27 aprilie 2012. (nedefinit)
Link -uri