La
nuova famiglia di processori a 64 bit di Intel è basata su una
architettura fortemente innovativa, che intende risolvere radicalmente
le limitazioni delle attuali architetture. Per ottenere dalla
nuova architettura le massime prestazioni e allo stesso tempo
riservarle ampi margini di crescita e miglioramento, Intel ha
deciso di abbandonare la compatibilità binaria diretta con i
processori x86 a 32 bit, in favore di un progetto completamente
nuovo. In questa rivoluzione non poteva non essere coinvolto
anche il software, infatti il successo di questa nuova architettura
non potrà prescindere da sistemi operativi e strumenti di sviluppo
appositamente progettati. Comunque le applicazioni a 32 bit
x86 potranno ancora girare, anche se a prestazioni degradate,
sulle nuove piattaforme IA-64.
Sottolineiamo subito che quando parleremo
di IA-64 ci riferiremo all'architettura dei nuovi processori
Intel e non direttamenti ad essi. L'architettura annovera l'ISA
(Istruction Set Architecture) e tutte le nuove strategie in
esso presenti ed atte ad ottenere le massime prestazioni possibili
e il superamento dei limiti dei precedenti processori Cisc -
Risc. (per avere maggiori informazioni sui paradigmi Cisc e
Risc leggete questo nostro articolo).
Infatti l'architettura IA-64 si ispira ad un nuovo paradigma
di elaborazione: EPIC (Explicitly Parallel Istruction Computing).
Itanium rappresenta invece il dispositivo fisico e quindi
l'implementazione finale dell'architettura IA-64.
Perché una nuova architettura ?
Attualmente gli incrementi di prestazioni
delle CPU sono dovuti in massima parte al miglioramento del
processo tecnologico del silicio, che ha portato e ancora porterà
frequenze di lavoro sempre maggiori e integrazione di unità
di calcolo sempre più potenti e parallele. Tuttavia le limitazioni
intrinseche delle attuali architetture rendono sempre più difficile
e oneroso ogni nuovo miglioramento. Intel si è resa conto
che per ottenere miglioramenti più cospicui era necessario sviluppare
una architettura completamente diversa, progettata in modo da
tenere conto dei vantaggi e degli svantaggi delle varie famiglie
di processori esistenti (CISC,
RISC, VLIW).
La
figura di merito con cui si è soliti misurare la potenza di
un microprocessore è il numero di istruzioni che esegue in un
secondo. In prima approssimazione questa figura di merito è
direttamente proporzionale alla frequenza di clock del processore.
Per aumentare la frequenza massima applicabile sono state ideate
strutture di esecuzione a pipeline, che eseguono più
istruzioni un pezzo alla volta, come in una catena di montaggio
(vedi figura). Con l'aumento delle istruzioni al secondo è sorto
il problema di fornire queste istruzioni alle unità di esecuzione,
dato che le memorie esterne non erano abbastanza veloci da sostenere
il flusso richiesto dal processore. A tal fine è stata introdotta
la memoria cache, una memoria locale, di dimensioni ridotte,
ma molto veloce, in cui sono conservate le istruzioni più recentemente
richieste, in modo che siano rapidamente disponibili per l'esecuzione.
Quando la tecnologia di integrazione lo ha reso disponibile,
per aumentare il fattore di proporzionalità diretta con la frequenza,
sono state introdotte più unità di calcolo capaci di eseguire
le istruzioni in parallelo.
A questo punto l'architettura ha cominciato a mostrare
i suoi limiti. Per esempio più unità di esecuzione parallele
possono in teoria permettere l'esecuzione delle istruzioni in
parallelo, però per il processore è difficile stabilire se una
certa sequenza di istruzioni può essere parallelizzata. A volte
non è possibile, a volte è possibile ma non c'è modo di capirlo,
a volte basterebbe cambiare leggermente l'ordine delle istruzioni
per renderlo possibile. Per esempio nei processori a 32 bit
della famiglia P6 (Pentium Pro, PII e PIII), è presenta una
logica di controllo che, quando può, riordina le istruzioni
per poter meglio parallelizzarle (out of order execution).
Si tratta sicuramente di un miglioramento, ma sempre poco rispetto
a quanto sarebbe possibile ottenere. Da queste considerazioni
è nata l'archiettura EPIC (Explicitly Parallel Instruction
Computing) di Intel. L'approccio è stato quello di stabilire
prima di quali risorse interne aveva bisogno il processore per
eliminare gli svantaggi delle architetture esistenti pur avendone
i vantaggi, e poi di sviluppare un set di istruzioni capace
di controllare e sfruttare a pieno queste risorse.
Un nuovo set di istruzioni
Come è stato accennato sopra e come vedremo
meglio più avanti, i limiti dei processori a 32 bit risiedono
principalmente nel loro attuale set di istruzioni, ideato per
essere eseguito su processori molto meno complessi di quelli
attuali. È stato possibile adattare il vecchio set di istruzioni
a sofisticate strutture come le pipeline e le unità di calcolo
parallelo dei processori attuali, demandando la gestione di
queste risorse a controllori integrati nel processore stesso,
senza necessità di modifica del codice. Questo approccio ha
fatto la fortuna di Intel, perché è riuscita a garantire la
compatibilità binaria degli eseguibili nelle varie generazioni
di processori.
La gestione trasparente delle risorse interne al processore
è sicuramente molto comoda, ma è ben lontana dall'essere la
migliore soluzione. I controllori interni occupano molto spazio
sul silicio, rendono il progetto estremamente complesso e non
riescono ad essere molto efficienti. Per ottenere le migliori
prestazioni talvolta si procede ad ottimizzare il codice per
una particolare famiglia di processori a 32 bit, ma più di tanto
non si può fare e comunque a volte si compromette la compatibilità
binaria verso il passato.
L'architettura IA-64 mette a disposizione un insieme
di risorse hardware estremamente sofisticate, in grado di risolvere
buona parte delle limitazioni degli attuali processori. Per
ottenere questo salto di prestazioni senza precedenti, c'è però
bisogno di un nuovo set di istruzioni in grado di controllare
direttamente le risorse interne. Sono quindi attesi nuovi sistemi
operativi e nuovi compilatori, compatibili con il nuovo set
di istruzioni e capaci di utilizzarlo al meglio.
Gli aspetti nei quali gli attuali microprocessori mostrano
degli evidenti limiti, che l'architettura IA-64 intende superare,
sono i seguenti:
· Parallelismo delle istruzioni
· Impredicibilità dei salti
· Latenza e dipendenze di memoria
· Limitate risorse interne
· Chiamata a subroutine
· Implementazione dei cicli.