# Architetture dei processori/Architettura Itanium 2

Storia · Set di istruzioni · Processore monolitico · Unità di decodifica · Unità predizione dei salti · Arithmetic Logic Unit · Floating Point Unit · Cache · Pipeline · Single Instruction Multiple Data · Memory Management Unit · Processore superscalare · Processore vettoriale · Very Long Instruction Word · Pentium 4 · Itanium 2 · Evoluzioni future ·
L'Itanium 2 è l'ultimo processore prodotto da Intel che si appoggia sull'architettura EPIC e ne eredita i relativi vantaggi e svantaggi. L'Itanium 2 in particolare usa il set di istruzione IA-64 e seguendo la tradizione Intel implementa internamente anche alcune soluzioni tipiche dei processori superscalari. In particolare l'Itanium 2 integra pipeline a 6 vie ad 8 stadi, un sistema di precaricamento dinamico, l'unità di predizione dei salti, un folto numero di registri, l'esecuzione predicativa, il caricamento speculativo e il software pipelining. Le unità funzionali dell'Itanium 2 sono specializzate, difatti il processore dispone di 11 unità funzionali, tre preposte alla gestione dei salti (B) 4 di caricamento dei dati (M), 2 di elaborazione sugli interi (I) e 2 in virgola mobile (F). È da segnalare che le unità M possono eseguire anche operazioni sugli interi e quindi il processore è in realtà in grado di eseguire fino a 6 operazioni sugli interi per ciclo di clock. Le istruzioni vengono caricate da una cache di primo livello specializzata per le istruzioni e vengono poste in un buffer in grado di gestire fino a 8 bundle. Dato che ogni bundle può accogliere fino a 3 istruzioni il buffer può accodare fino a 24 istruzioni contemporaneamente. Il processore assegna le istruzioni alle varie unità funzionali e processa due bundle per ciclo di clock processando fino a 6 istruzioni per ciclo di clock.
È da notare la semplicità del progetto rispetto a processori superscalari prodotti nello stesso periodo come il Pentium 4. Nell'Itanium 2 non esiste un buffer di riordino delle istruzioni dato che le istruzioni sono già state ordinate dal compilatore dei singoli bundle e la presenza del caricamento speculativo sopperisce alla mancanza del buffer con efficienza maggiore. Il processore non utilizza tecniche di ridenominazione dei registri dato che dispone di centinaia di registri gestibili direttamente (a differenza dei miseri 8 gestiti dall'architettura x86) e implementa una tecnica chiamata di stack rotante che permette di evitare la saturazione dei registri nel caso dell'utilizzo di programmi con molti cambi di contesto. Il processore non implementa complessi algoritmi di riordino delle istruzioni durante la fase di decodifica dato che i singoli bundle contengono istruzioni di controllo che dichiarano esplicitamente il parallelismo tra le istruzioni.
L'uso della branch prediction permette di precaricare dati e istruzioni in modo speculativo riducendo le cache miss.
Il processore dispone di tre tipi di cache:
* La cache L1 (on-chip) è divisa in 16 KB per le istruzioni e 16 KB per i dati, ognuna a 4 vie associative con linee a 32 byte;
* La cache L2 (on-chip) da 96 KB è a 6 vie associative con linee a 64 byte;
* La cache L3 (off-chip, ma comunque nello stesso package) da 4 MB è a 4 vie associative con linee a 64 byte.
È da notare che comunque la dimensione della cache varia a seconda del modello di Itanium 2. Il processore supporta una gestione degli indirizzi a 64 bit anche se in realtà vengono gestiti solamente 44 bit dato che comunque questi sono sufficienti a gestire 17 Terabyte di memoria. Nello schema a blocchi in alto si può notare l'unità IA-32 Decode and Control che serve per mantenere la compatibilità con le applicazioni X86 tramite conversione delle istruzioni x86 in istruzioni native. Questa unità non potendosi avvalere dei dati aggiuntivi forniti dal compilatore non è in grado di fornire buone prestazioni. L'emulazione risulta molto lenta e difatti sono stati sviluppati del programmi che convertono in tempo reale il codice x86 in codice nativo per l'Itanium 2 e che forniscono prestazioni decisamente migliori quindi nelle ultime versioni del processore Intel ha deciso di rimuovere l'unità appoggiandosi unicamente sui programmi di emulazione.

## Prestazioni

Le prestazioni di un processore dipendono sempre dai programmi utilizzati. Si sono effettuati dei confronti tra un processore Itanium 2 e un processore Pentium 4. Il Pentium 4 è un buon processore per effettuare il confronto con l'Itanium essendo anch'esso in grado di eseguire fino a 6 operazioni per ciclo di clock, è un processore diffuso e viene prodotto da Intel con processi produttivi simili a quelli utilizzati per l'Itanium 2. Eseguendo delle operazioni multimediali si è visto che mentre il Pentium 4 mediamente esegue 1.3 operazioni per ciclo di clock l'Itanium 2 ne esegue più di 3 con codice ottimizzato. Va detto che a parità di programma il codice per Itanium 2 contiene circa il 30% in più delle istruzioni dell'equivalente codice per Pentium 4 e che i processori Itanium 2 per via delle loro pipeline corte non riescono a raggiungere frequenze paragonabili a quelle raggiungibile dal Pentium 4 che con le sue lunghe pipeline a 31 stadi riesce a salire in frequenza facilmente. Comunque limiti fisici difficilmente superabili limitano la possibilità di crescere in frequenza, i processori Pentium 4 in teoria sarebbero dovuti arrivare a frequenze di 10 Gigahertz mentre alla prova dei fatti si sono fermati a 3.8 Gigahertz, quindi l'architettura dell'Itanium sembra vincente sul lungo periodo anche se la mancanza di compatibilità binaria con il passato è un grave limite di questa tipologia di processori e ne ipoteca il futuro utilizzo per i comuni PC.