La Intel, per far fronte all’incessante richiesta di prestazioni, ha sviluppato una tecnologia: l’Hyper Threading. Quest’ultima implementa una tecnica nota con il termine di multithreading simultaneo. L’Hyper Threading fece la sua comparsa nei Pentium 4 con frequenze uguali o superiori ai 3,06 Ghz.
Prima di andare oltre, è necessario spiegare la differenza concettuale tra processo, thread e programmi.
Il software e il sistema operativo sono costituiti da un insieme di processi elaborati in modo sequenziale dal processore.
Un processo si avvale di registri, di variabili e di altre risorse. Composto da più cicli di istruzioni, la sua esecuzione è unica, nel senso che un microprocessore è in grado di eseguire, in un singolo istante, un solo processo per volta. In un arco temporale maggiore, la CPU passa da un processo all’altro dando l’illusione di una esecuzione parallela: infatti è chiamata pseudo-parallela.
I thread sono simili ai processi, ma a differenza di questi ultimi non sono tra loro indipendenti e condividono le stesse variabili globali. Essi cooperano per svolgere una determinata mansione all’interno di un stesso processo, il quale può essere composto da uno o più thread. Sono chiamati “processi leggeri” in quanto la differenza con i processi è minima.
Infine processi e thread costituiscono i programmi.
Se avessimo a disposizione più CPU si avrebbe la possibilità, in un sistema, di eseguire due o più processi contemporaneamente, generando un sistema multiprocessore.
La tecnologia del multithreading simultaneo realizza da una CPU due processori logici (virtuali), dividendo le risorse contenute in essa. Le risorse possono essere condivise in modo dinamico cioè assegnate ai processi in base alla loro necessità; oppure in modo statico, dove si assiste ad una netta divisione delle risorse.
Il multithreading simultaneo permette di eseguire più istruzioni in parallelo con il vantaggio di aumentare le performance del calcolatore.
Anche se non tutte le applicazioni sono in grado di utilizzare il multithreading simultaneo, quest’ultimo è comunque utile per il multitasking, una tecnica che permette di eseguire più programmi contemporaneamente. Supponiamo che la CPU debba eseguire due processi di due applicazioni differenti, che denominiamo processo A e B. In ogni lasso di tempo, parte delle risorse del processore sono assegnate ad A. Con il multithreading simultaneo il processore sarà suddiviso in due unità logiche. Le risorse non utilizzate da A confluiscono a B. Ne consegue che i processi A e B saranno eseguiti in parallelo.
Se implementiamo un sistema dual core o multi-processore e adottiamo la tecnologia SMT (Simultaneus Multi Threading) otteniamo due processori fisici e quattro logici. Ne consegue che quattro processi possono essere eseguiti contemporaneamente.
(L’immagine in evidenza del Pentium 4 è tratta da Wikipedia – https://it.wikipedia.org/wiki/Pentium_4).
Sommario, Bibliografia e Sitografia
Vincenzo Barile
segue…