Marco Russo

.NET, Business Intelligence e dintorni

Corsi

Miei blog in inglese

La complessità di Itanium 2

Il pomeriggio è trascorso in compagnia di un estroverso ingegnere/scienzato di Intel, molto distante dallo stereotipo di questo tipo di personaggi. A parte la nota di colore, la cosa che mi ha colpito di più è la complessità raggiunta da quest'architettura: avevo già letto un libro su Itanium, e la seconda versione migliora il funzionamento complessivo senza comunque cambiare l'architettura complessiva di EPIC, il set di istruzioni di questo microprocessore.
La complessità è data dal fatto che il processore è fortemente basato sulla parallelizzazione interna delle unità di esecuzione; per arrivare al limite, l'assembler espone in maniera molto diretta la possibilità di ottimizzare (o no) il codice in modo da favorire le pipeline di esecuzione e i vari livelli di cache interna (che sono 3).
Senza entrare in dettagli troppo tecnici, ottimizzare il codice per un'architettura così è un'operazione assolutamente complessa. Inoltre, poiché l'ottimizzazione assoluta è impossibile perché dipende dal contesto di esecuzione, appare chiaro che un'architettura basata su una compilazione dinamica (come il JIT di .NET) consente sulla carta di applicare algoritmi euristici di compiplazione che, basandosi sull'analisi delle statistiche (Itanium 2 offre più di 400 counter nativi del processore per analizzare cache miss, blocchi sulla pipeline, ecc.), ricompila il codice che dovesse manifestare particolari inefficienze.
Questo scenario è sicuramente stimolante ed è pura frontiera di ricerca (questa mattina uno speaker di Intel insisteva sul fatto che l'hardware è molto più avanti del software, nel senso che non ci sono software, probabilmente intesi come sistemi operativi, che sfruttano a dovere l'hardware); la domanda è: ne vale la pena? Il costo della ricerca di un'ottimizzazione migliore in fase di esecuzione non sarà maggiore del risparmio ottenibile? L'istinto potrebbe suggerire che non ne vale la pena... ma in questo campo di istintivo c'è sempre di meno, quindi staremo a vedere.
Comunque ci vorrà ancora qualche anno: per ora, le ottimizzazioni estreme si fanno ragionando sugli algoritmi e cambiandone l'implementazione, dopo aver fatto le opportune misure...