# Hyper-Threading

Hyper-Threading è il nome commerciale dato da Intel alla sua prima implementazione della tecnologia Simultaneous Multi-Threading, utilizzata per migliorare le prestazioni dei propri processori.
Essa viene utilizzata attivamente dalla società a partire dal 2003.

## Obiettivi di Hyper-Threading

La tecnologia Hyper-Threading è stata una delle più pubblicizzate da parte di Intel nel corso degli anni in quanto l'idea alla base era quella di migliorare le prestazioni dei processori sfruttando alcune tecniche di calcolo parallelo grazie alla duplicazione di alcune unità interne dei chip.
La tecnologia Hyper-Threading è stata presentata da Intel in un momento in cui i processori dual core non potevano ancora venire prodotti a prezzi ragionevoli in ragione sia dell'avanzamento tecnologico, sia del processo produttivo che nel 2003 era ancora quello a 130 nm, che non permetteva "fisicamente" la presenza di 2 core all'interno di un unico package.
Essa venne introdotta inizialmente nel settore server con gli Xeon e gli Itanium 2, ovvero in un settore che già allora prevedeva applicazioni pensate secondo criteri di "parallelizzazione" del codice. Nel 2003 Intel aveva anche raggiunto i 3 GHz per i processori Pentium 4 destinati al settore desktop, e ormai l'aumento di frequenza cominciava a diventare sempre più difficoltoso da operare; al fine di migliorare ulteriormente le prestazioni dei propri processori desktop senza per questo dover aumentare la frequenza e il consumo massimo, decise di promuovere l'adozione della tecnologia Hyper-Threading anche in questo settore e il primo processore desktop ad esserne dotato fu il Pentium 4 Northwood a 3,06 GHz con bus a 533 MHz. Successivamente, venne implementata in tutti i successivi modelli di Pentium 4, compresi quelli basati sui core successivi a Northwood, vale a dire Prescott e Cedar Mill, e nelle prime CPU dual core Pentium Extreme Edition; anzi, in questo caso, la presenza della tecnologia Hyper-Threading era la sola caratteristica che differenziava tali processori dagli altri processori dual core, Pentium D, che ne erano sprovvisti.
Secondo le dichiarazioni iniziali di Intel, questa tecnologia avrebbe dovuto garantire un miglioramento delle prestazioni del 24% a prescindere dalla velocità di clock, ma i fatti dimostrarono in seguito che seppure esistesse effettivamente un certo miglioramento nelle prestazioni, questo aumento era inferiore rispetto a quanto auspicato e, soprattutto, limitato ad una ristretta cerchia di applicazioni, soprattutto legate al mondo grafico, in grado di sfruttarne le potenzialità. Sul campo delle pure prestazioni, i software di grafica evoluta come Photoshop o 3D Studio Max traevano vantaggi nell'ordine del 10%.

## Principi di funzionamento

L'idea alla base della tecnologia Hyper-Threading era quella di duplicare alcune unità di elaborazione all'interno dei microprocessori al fine di poter eseguire simultaneamente alcune operazioni, grazie a tecniche di multithreading.
Si trattava di un tentativo di creare un processore di transizione tra i tradizionali single core e i successivi dual core, non inserendo 2 interi core all'interno di un unico package, ma duplicando solo alcune aree "sensibili" del singolo core.
Grazie all'Hyper-Threading un singolo core era comunque in grado di gestire più thread in contemporanea, quando le istruzioni di un thread rimanevano bloccate nella pipeline il processore procedeva ad elaborare un secondo thread al fine di mantenere le unità di elaborazione sempre attive. I singoli thread possono infatti venire bloccati nella loro esecuzione da molteplici fattori, quali ad esempio problemi di recupero dei dati da elaborare (per esempio un cache miss) o per problemi di dipendenza dai dati che si trovano in elaborazione presso altre istruzioni in esecuzione.

### Principali differenze tra "Hyper-Threading" e "processore dual core"

La replicazione solo di alcune unità di elaborazione non poteva ovviamente competere, come prestazioni, con un processore dual core vero e proprio, dove cioè l'intero core veniva duplicato. A fronte però di un aumento di prestazioni più contenuto, Intel dichiarò che l'integrazione della tecnologia Hyper-Threading comportava un aumento dell'area della CPU del 5% a fronte di un aumento di prestazioni che avrebbe potuto sfiorare anche il 30%, sebbene si trattasse in realtà di un valore quasi irraggiungibile. In ogni caso, un aumento tanto modesto della superficie del processore consentiva di contenere i costi di produzione e quindi il rapporto costi/benefici era a favore dei modelli integranti tale tecnologia rispetto a quelli precedenti.

### Hyper-Threading dal punto di vista del sistema operativo

Dal punto di vista del sistema operativo, un processore single core dotato di tecnologia Hyper-Threading era indistinguibile da un normale processore dual core. Infatti Intel aveva sviluppato questa nuova soluzione in modo che il sistema operativo "vedesse" comunque la presenza di 2 core di elaborazione. Questi core non erano in effetti 2 core "fisici" come nei processori dual core, ma erano 2 core "logici", vale a dire che un'applicazione non doveva essere pensata espressamente per la tecnologia Hyper-Threading; se essa era in grado di sfruttare 2 core di elaborazione, era anche in grado di sfruttare le potenzialità della nuova tecnologia. Il BIOS della scheda madre, che doveva a sua volta supportare la nuova tecnologia, faceva "credere" al sistema operativo e alle applicazioni di trovarsi di fronte ad un vero e proprio sistema biprocessore.

## L'abbandono della tecnologia nei principali settori di mercato

Con l'avvento, a partire dalla metà del 2006, dei nuovi processori dual core basati sull'architettura "Core", i Core 2 Duo Conroe, come successori del Pentium D Presler, Intel decise di abbandonare l'implementazione di questa tecnologia in quanto essa era poco efficace quando abbinata a processori dual core con pipeline corte come i Core 2 Duo.
Agli inizi del 2008 è arrivato sul mercato anche il nuovo processore Atom nelle due versioni Silverthorne e Diamondville destinate rispettivamente agli UMPC e ai sistemi di fascia molto economica. Questa architettura è pensata espressamente per il contenimento massimo dei consumi, con inevitabili ripercussioni anche sulle prestazioni che ovviamente non possono essere paragonate a quelle delle CPU pensate per gli altri settori di mercato ma sufficienti per i dispositivi per i quali è stata concepita. Al fine di non penalizzare troppo le applicazioni in grado di sfruttare il multi-threading, Intel ha deciso di integrare anche in questi prodotti la tecnologia Hyper-Threading che ha quindi ritrovato un proprio ruolo all'interno del mercato.
Comunque Intel, già al momento del lancio dell'architettura "Core", non parlò mai di abbandono definitivo e quindi è apparso subito plausibile un ritorno, sebbene in versione rivisitata, di questa tecnologia anche in prodotti destinati alle fasce principali del mercato. A questo proposito, alla fine del 2008 arrivarono i primi processori appartenenti alla nuova architettura Nehalem, successiva alla "Core", che porteranno con loro una tecnologia analoga chiamata Simultaneous Multi-Threading. Al momento dell'annuncio da parte di Intel di re-inserire una tecnologia, sebbene si tratti di una sua evoluzione, che non ha mai goduto di particolare successo presso i clienti, sono emersi alcuni interrogativi sulle motivazioni di questa scelta.