Multithreading: maggior rendimento dei processori

I moderni programmi per computer e i giochi richiedono un hardware sempre più potente. La grafica è particolarmente sofisticata e dettagliata, la quantità di memoria richiesta è enorme, pertanto è importante che la velocità di core del processore sia elevata per poter lavorare con il computer desktop o portatile in modo fluido e veloce. Per raggiungere tali obbiettivi i produttori di hardware progettano e sviluppano costantemente nuove tecnologie e architetture per le loro CPU. Una di queste tecniche è il multithreading. Il processore riesce in tal modo a eseguire più thread (piccole unità di calcolo) più o meno simultaneamente. Come funziona tutto ciò?

Dominio
Registra il tuo dominio
  • Certificato SSL Wildcard incluso
  • Registrazione di dominio sicura
  • Indirizzo e-mail professionale da 2 GB

Che cos’è il multithreading?

Per aumentare la velocità del core del processore senza modificare la frequenza di clock, si fa in modo che la CPU possa eseguire più operazioni simultaneamente. Più precisamente, si eseguono più thread simultaneamente. Possiamo considerare un thread come una porzione di un processo. I programmi, infatti, possono essere suddivisi in processi e questi a loro volta in singoli thread. Ogni processo è composto da almeno un thread.

I processi normalmente vengono eseguiti in modo sequenziale, vale a dire un processo dopo l’altro. Ciò, tuttavia, non è ottimale, poiché in tal modo le operazioni di una certa durata bloccano l’hardware. Se un altro processo deve essere eseguito, infatti, dovrà attendere finché l’hardware sarà pronto. Nel caso del multithreading vengono, invece, eseguiti molti thread simultaneamente. Ciò è tuttavia vero solo relativamente. Un’effettiva simultaneità, infatti, può essere garantita solo raramente, ma è comunque perseguibile.

Anche con questa quasi simultaneità si riesce a ottenere un efficace incremento di rendimento; il sistema, inoltre, organizza e calcola i thread in modo così intelligente ed efficiente che gli utenti hanno effettivamente la percezione di un’esecuzione simultanea. Naturalmente questo tipo di simultaneità non può essere scambiato con le possibilità offerte dalla CPU multicore. Se il sistema è dotato di diversi microprocessori, saranno eseguiti anche diversi processi contemporaneamente.

Affinché il multithreading possa essere impiegato con la massima efficacia, il software deve essere predisposto per tale azione. Se gli sviluppatori non suddividono i loro programmi in diversi thread (o non ne hanno la possibilità), la tecnologia non potrà funzionare. I “gamer” appassionati di giochi, ad esempio, si sono spesso accorti che con un multithreading attivato si verifica piuttosto un calo delle prestazioni. I videogiochi al computer non hanno pertanto potenzialità sinergiche con questa tecnica. Il tentativo del sistema di eseguire più thread simultaneamente diventa in tal caso controproducente.

Obbiettivi del multithreading

Lo scopo principale del multithreading è quello di aumentare la velocità di calcolo di un computer e pertanto la sua efficienza operativa e il rendimento. Per ottenere ciò si cerca di ottimizzare l’utilizzo della CPU. Invece di mantenere in esecuzione un processo, anche quando esso attende ancora dei dati, nel caso del multithreading il sistema sceglie di dare rapidamente priorità all’operazione successiva. In questo modo non si creano code di attesa.

Il sistema, inoltre, reagisce allo stesso tempo più velocemente a modifiche delle priorità. Se utenti o applicazioni richiedono un’altra azione, con l’uso di gradi di priorità e thread brevi, il processore può così occuparsi velocemente dell’esecuzione di altre operazioni.

La tecnologia è ottimale anzitutto per velocizzare singole applicazioni composte di diversi processi e thread. Possono così essere eseguite in una certa misura parallelamente più operazioni dello stesso software. Ciò è ideale, ad esempio, quando si creano dei video: il rendering di una scena può essere effettuato in background, mentre l’utente si occupa nel frattempo dell’editing della scena successiva.

Con il multithreading i produttori di chip possono incrementare la velocità delle loro CPU senza dovere impiegare una maggiore quantità di energia. Mentre un’elevata frequenza di clock produce una maggiore quantità di calore, che implica ovviamente costi aggiuntivi, questo non succede con il multithreading.

Come funziona il multithreading?

Il multithreading rappresenta un lavoro ottimizzato tra hardware e software. Programmi e processi vengono scomposti in singoli thread e la CPU elabora queste piccole unità. Esiste una differenza, tuttavia, tra il multithreading tramite hardware e quello che impiega il software.

Multithreading tramite hardware

Nel caso del multithreading tramite hardware, i singoli programmi predispongono i loro processi scomponendoli e rendendoli disponibili in thread. Il sistema operativo gestisce quindi i thread e decide quando e quale “filo” deve essere inviato per primo alla CPU. Il processore esegue successivamente i thread in modo simultaneo o quasi simultaneo.

Nella pratica esistono diversi modi di esecuzione del multithreading tramite hardware.

Switch on Event Multithreading (SoEMT)

SoEMT lavora con due thread: uno di essi avviene in primo piano, l’altro in background. Il cambiamento di livello (si parla di cambiamento di contesto) avviene attraverso il realizzarsi di eventi. Un tale evento può essere ad esempio l’immissione di un’informazione da parte dell’utente oppure l’avviso che un thread è in attesa di dati e quindi la sua esecuzione non può proseguire. Il sistema commuta in tale caso velocemente nel secondo thread e sposta l’altro in background. Il thread precedente, ora in background, verrà dunque eseguito quando le necessarie informazioni saranno pervenute e disponibili. In conclusione, il sistema reagisce in tal modo rapidamente e crea una quasi simultaneità alternativa tra i thread attivi in primo piano e quelli in background.

“Switch on Event Multithreading” è anche denominato “Coarse-grained multithreading“. Si considera ciò come una tecnica a “grana grossa”, poiché essa è adatta piuttosto per tempi d’attesa più lunghi. Mentre altre tecniche presentano tempi di reazione molto più brevi, SoEMT mostra il suo punto di forza nell’esecuzione di grandi blocchi di thread.

Time-Slice Multithreading

Nel caso della tecnica SoEMT, essa attiva il cambiamento tra thread in funzione di un evento, il Time-Slicing invece agisce con intervalli temporali predefiniti. Anche se il thread non è ancora concluso, il processore ne considera un altro e cambia solo nel successivo intervallo, retrocedendo, cioè commutando verso il primo per proseguire la sua esecuzione. Ciascun avanzamento dell’esecuzione di un thread viene salvato nella memoria RAM.

L’obbiettivo consiste nello scegliere la lunghezza d’intervallo più adatta. Se l’intervallo di tempo è troppo breve, i processi non possono proseguire adeguatamente nella loro esecuzione. Nel caso di lunghi intervalli, invece, si perde la quasi simultaneità alternativa. Per l’utente, l’impressione è che in effetti i processi siano eseguiti in successione e non parallelamente.

Simultaneous Multithreading (SMT)

La tecnica di multithreading SMT fornisce una vera simultaneità di esecuzione. Nelle cosiddette pipeline i thread attendono che sia eseguito il calcolo. Il processore lavora in modo parallelo diverse pipeline. Invece di commutare tra l’esecuzione di due thread, cambiando continuamente dall’uno all’atro, parti dei processi vengono effettivamente eseguite simultaneamente. Un singolo processore, quindi, agisce come più processori (logici). Nella pratica, la tecnica SMT è connessa con la tecnologia multicore: in tal modo un sistema con processore a due core può comportarsi come se avesse otto core.

Fatto

Il produttore di CPU Intel ha ottenuto molto successo con la tecnologia Hyper-Threading (HTT). Anche la ditta concorrente AMD produce una tecnologia simile. In entrambi i casi si tratta di SMT.

mSZpDF-zUoI.jpg Per visualizzare questo video, sono necessari i cookie di terze parti. Puoi accedere e modificare le impostazioni dei cookie qui.

Multithreading tramite software

Il multithreading tramite software avviene esclusivamente attraverso l’applicazione che controlla la suddivisione dei processi in thread. Il sistema operativo e il processore ricevono solo i singoli “fili”. La struttura hardware si comporta quindi passivamente ed elabora semplicemente i thread singolarmente quando essi giungono. Il sistema stabilisce per ciascun thread un livello di priorità. I livelli più elevati sono eseguiti più velocemente. Nel frattempo, con questa tecnica possono essere immessi per l’esecuzione i nuovi processi che devono essere completati rapidamente. Per i processi che richiedono tempi maggiori, viene predisposto un solo thread e i thread successivi vengono disposti in stato di attesa.

Fatto

Il multithreading tramite software è ottimale anzitutto nel caso di sistemi con processori single core. Poiché i computer moderni, nel frattempo, sono stati però dotati come minimo con CPU Dual-Core, questo tipo di multithreading diviene meno importante.

Multithreading e multitasking: le differenze

Le tecnologie multithreading e multitasking a prima vista sembrano simili, esse tuttavia si basano su due diversi concetti. Il multitasking si basa essenzialmente sull’esecuzione parallela di diversi programmi. La CPU esegue una commutazione in tale caso cambiando tra i singoli task. Le applicazioni, tuttavia, non sono eseguite simultaneamente (né contemporaneamente, né in modo quasi simultaneo). Di norma, il sistema operativo si attiva organizzando l’esecuzione dei diversi task e invia i processi in attesa alla CPU. L’effetto che l’utente percepisce è quello di un’esecuzione parallela di programmi, in realtà avviene sempre una commutazione tra essi.

Consiglio

Aprendo il task manager, vedrete quali processi sono attivi ed eseguiti parallelamente dal sistema. Anche aprendo il task manager del Mac, potrete osservare come sono organizzate i diversi task.

Nel caso del multithreading si tende a ottenere un alto livello di simultaneità. La tecnica, tuttavia, cerca in primo luogo di incrementare la velocità dei singoli programmi. Mentre con il multitasking vari programmi possono essere eseguiti in modo parallelo, nel caso del multithreading i singoli thread provengono dallo stesso programma. L’elaborazione simultanea di queste porzioni di processo permette una maggiore velocità di esecuzione del software.

In sintesi

Il multithreading è una possibilità di aumentare il rendimento dei processori in modo intelligente e conveniente anche per quanto riguarda i costi. Ciò avviene però, solo se il software è predisposto per questo. Chi vuole ottenere un maggior rendimento dal proprio computer senza dover impiegare il multithreading dispone quindi di altre possibilità. Se viene usato l’overclocking della CPU, è necessario tuttavia stare attenti alla sua temperatura, altrimenti potrebbe succedere che in alcuni casi e alcune circostanze il sistema possa bloccarsi.

Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top