IA-64

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În calcul , IA-64 (Intel Architecture-64) este o arhitectură pe 64 de biți dezvoltată în timpul unei cooperări între Intel și Hewlett-Packard și implementată de procesoare precum Itanium și Itanium 2 . Scopul lui Itanium a fost introducerea unei arhitecturi „post- RISC ”, folosind EPIC . Pentru acest procesor pe 64 de biți, Microsoft și Intel au scris sistemul de operare Windows XP 64-bit Edition .

Arhitectură

EPIC

Într-un design tipic " out of order " (adesea cunoscut sub numele de out-of-order ), un decodor foarte complex examinează fiecare instrucțiune trimisă procesorului pe măsură ce traversează conducta și verifică care pot fi executate în paralel în unitățile de execuție - de exemplu. , o pereche de instrucțiuni precum A = B + C și D = F + G nu se afectează reciproc și, prin urmare, pot fi executate în paralel în două unități de execuție diferite. Capacitatea de a recunoaște paralelismul nivelului de instrucțiune în fluxul de instrucțiuni este esențială pentru o bună performanță într-un procesor modern.

Predicția când codul nu poate fi împărțit în acest mod este o sarcină foarte complexă. În multe cazuri, executarea unei instrucțiuni depinde de condiții logice dependente de alte instrucțiuni. De exemplu, luați în considerare o ușoară modificare a exemplului anterior: A = B + C; IF A==5 THEN D = F + G (care indică să adăugați B și C și să introduceți rezultatul în A, iar dacă A este egal cu cinci, atunci introduceți în D rezultatul sumei dintre F și G). În acest caz, rezultatul celui de-al doilea calcul este încă independent de prima, dar prima operație trebuie efectuată mai întâi pentru a ști dacă a doua trebuie efectuată sau nu.

În aceste cazuri, CPU „ghicește” de obicei dacă condiția logică este adevărată sau falsă. În aproximativ 90% din cazuri, codul care urmează unui IF este executat, ceea ce sugerează că a doua jumătate a comenzilor din exemplul nostru poate fi executată de o altă unitate de execuție. Dar prezicerea rezultatului greșit pentru condiția logică poate duce la scăderi semnificative ale performanței, datorită faptului că valoarea calculată de a doua unitate este greșită și CPU trebuie să aștepte pentru a putea calcula rezultatul instrucțiunii corecte. O mare parte din creșterea performanței procesorelor actuale se datorează logicii îmbunătățite de predicție, dar îmbunătățirile au încetinit în ultima perioadă. Predicția ramurilor de cod (numită predicție a ramurilor ) în procesatoarele actuale este corectă aproximativ 98% din timp.

Arhitectura IA-64, pe de altă parte, se bazează pe compilator pentru această sarcină. Chiar înainte ca programul să fie executat de CPU, compilatorul examinează codul și ia aceleași tipuri de decizii care altfel ar apărea atunci când rulează pe CPU în sine. Odată ce a decis ce instrucțiuni pot fi executate în paralel în mod eficient, le îmbină într-o instrucțiune mai mare și le scrie în această formă în program - de unde și numele de cuvânt de instrucțiune foarte lung (VLIW).

Atribuirea acestei sarcini compilatorului în locul procesorului are mai multe avantaje. În primul rând, compilatorul poate dura mult timp pentru a trece prin cod, o șansă pe care procesorul nu o are, deoarece trebuie să execute instrucțiuni cât mai repede posibil. Deci, deciziile compilatorului pot fi considerabil mai precise decât deciziile hardware. În al doilea rând, circuitele pentru predicția ramurilor sunt destul de complexe, iar descărcarea predicției către compilator reduce complexitatea procesorului: nu mai trebuie să examineze nimic, trebuie doar să rupă instrucțiunile și să le facă să se execute paralel cu unitățile. În al treilea rând, executarea predicției în compilator are un cost unic , spre deosebire de costul procesorului, care trebuie rulat de fiecare dată când programul este utilizat.

Dezavantajul este că comportamentul unui program în timpul execuției nu este întotdeauna evident în codul utilizat pentru a-l crea și poate varia considerabil în funcție de datele pe care le prelucrează de fapt. Logica de execuție ieșită din funcțiune a unui CPU poate lua decizii pe baza datelor care sunt de fapt procesate de program și pe care compilatorul le poate „ghici” doar. Aceasta înseamnă că este posibil ca predicțiile compilatorului să fie greșite mai des decât ar putea un circuit logic de complexitate comparabilă (sau chiar mai simplu) plasat pe CPU. Prin urmare, designul VLIW se bazează foarte mult pe performanța compilatorului, plătind simplificarea procesorului cu complexitatea crescută a software-ului.

Registrele

Arhitectura IA-64 include un set mare de registre: 128 de registre în virgulă mobilă de 82 de biți și 64 de biți pentru numere întregi. În plus față de acest număr mare, IA-64 adaugă un mecanism de fereastră a registrului controlat de Register Stack Engine . Acest sistem combinat cu predicția este foarte eficient în efectuarea automată a „derulării ciclurilor” (în jargonul de programare „derularea unei bucle” - derularea unei bucle - înseamnă explicitarea unui ciclu de instrucțiuni executate de mai multe ori prin enumerarea lor completă, care de obicei duce la îmbunătățirea performanței).

Set de instructiuni

Arhitectura IA-64 oferă instrucțiuni pentru operații pe date multimedia și pentru calcule în virgulă mobilă.

În timp ce o arhitectură tipică VLIW atribuie subinstrucțiuni din fiecare „instrucțiune mare” unei anumite unități de execuție specifice, Itanium acceptă diferite moduri de unire a instrucțiunilor, permițând un echilibru mai bun între modurile de execuție serie și paralel.

Funcționalitate pre-SO și funcționalitate sub-SO

De îndată ce este pornit, un procesor Itanium nu are unele caracteristici. Un „ strat de abstractizare a procesorului ” (PAL) este încorporat în BIOS și la momentul încărcării este încărcat în procesor pentru a oferi o interfață de nivel scăzut care abstracte anumite instrucțiuni și oferă un mecanism pentru actualizarea procesorului printr-o actualizare BIOS.

În timpul inițializării BIOS-ului, un alt strat de cod, Sistemul de abstractizare a stratului (SAL) este încărcat pentru a furniza API-uri standard necesare funcțiilor dependente de implementarea platformei.

Deasupra interfețelor PAL și SAL se află „ Extensible Firmware Interface ” (EFI), interfața pentru firmware extensibil. EFI nu face parte din arhitectura IA-64, dar, prin convenție, este necesară pentru toate sistemele IA-64. Este un API simplu pentru accesarea aspectelor logice ale sistemului (stocare, video, tastatură etc.) combinat cu un sistem de execuție ușor (similar cu DOS ) care permite executarea funcțiilor de administrare a sistemului, cum ar fi actualizarea BIOS-ului, configurarea dispozitivelor de stocare, configurarea unui încărcător de încărcare .

Odată ce sistemul de operare este pornit, unele caracteristici ale PAL, SAL și eFI rămân rezidente în memorie și pot fi utilizate de sistemul de operare pentru a efectua operațiuni de nivel scăzut și dependente de hardware.

Suport IA-32

Pentru a sprijini arhitectura IA-32 , Itanium poate intra într-un mod pe 32 de biți cu instrucțiuni speciale. Instrucțiunile IA-32 au fost implementate în unitățile funcționale ale Itanium. Cu toate acestea, din moment ce Itanium este conceput în primul rând pentru viteză pe instrucțiunile EPIC și datorită incapacității de a executa cod în modul out-of-order , codul IA-32 rulează cu penalizări de performanță foarte mari în comparație cu modul AI. -64 sau procesoare Pentium . De exemplu, unitățile de execuție Itanium nu setează mai multe accesuri de memorie nealiniate. Există, de asemenea, software gratuit de emulare IA-32 disponibil pentru sistemele de operare Microsoft Windows și Linux care au performanțe cu aproximativ 50% mai mari decât modul de emulare a procesorului. Emulatorul pentru Windows este disponibil de la Microsoft, emulatorul pentru Linux este disponibil de la unii revânzători Linux, cum ar fi Novell .

Având în vedere performanța superioară a emulatoarelor de software și chiar dacă hardware-ul necesar pentru a emula IA-32 este responsabil pentru mai puțin de 1% din tranzistoarele Itanium 2 , Intel a eliminat emularea IA-32 din a șasea generație de cipuri Itanium 2. cu nume de cod. Montecito [1] (în prezent suntem la a noua Tukwila )

Concurenți

În timp ce alte arhitecturi pe 64 de biți există de mult timp, cele mai multe ( Alpha , PA-RISC ) au dispărut de pe piață. Concurenții Itanium în cursa pentru piața serverelor și stațiilor de lucru par a fi AMD cu arhitectura AMD64 , IBM cu arhitectura POWER și Sun Microsystems cu UltraSparc . În timp ce Apple ar fi putut rivaliza cu Intel cu linia sa de produse Xserve bazată pe PowerPC de la IBM, astfel de perspective par imposibile după anunțul Apple de a trece la arhitectura Intel-IA-32.

Ca răspuns la reacția favorabilă a industriei la AMD64, următoarea versiune a Intel Xeon ( Nocona ) acceptă extensiile EM64T , care sunt în mare parte compatibile cu setul de instrucțiuni AMD64.

Elemente conexe

linkuri externe

  • Istoria IA-64 , la hpl.hp.com .
  • Ghid pentru IA-64 ( PDF ) [ link rupt ] , pe cern.ch.
  • IATO este un sistem care vă permite să analizați și să emulați setul de instrucțiuni IA64
Controlul autorității LCCN ( EN ) sh00000125
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT