Il funzionamento dell'Hyper Threading si basa su un principio abbastanza semplice: che, in ogni istante solo una parte delle risorse (unità di esecuzione) di una CPU fisica è utilizzata per l'esecuzione di un programma (o di un thread del programma). Con la nuova tecnologia di Intel le risorse latenti (unità in idle state) vengono coinvolte in un altro processo di un altra applicazione, il tutto in parallelo.
FIGURA 4.
(Colore bianco = unità non operative; Colore rosso = primo processo; Colore giallo = secondo processo).
Guardando la figura 4 potete capire che durante l'esecuzione di un processo (processore singolo senza l'implementazione della tecnologia Hyper-Threading), solo il 35% delle unità di esecuzione sono utilizzate dalla CPU (unità rappresentate nella figura con il colore rosso). Nel caso in cui, il processore utilizzi la tecnologia Hyper-Threading, le unità di esecuzione "libere" sono occupate da un secondo processo (rappresentato con il colore giallo), con un ottimizzazione di circa il +30%.
Cosa accade se il nostro sistema è composto da più processori fisici?
O meglio, la domanda potrebbe essere così riformulata: se fossimo in presenza di due processori fisici Intel Xeon (come nel successivo esempio di test) come avverrebbe l'utilizzo delle risorse di esecuzione?
Analizziamo il caso di un architettura superscalare dual-processor proposto dalla figura 5, e il caso mostrato dalla figura, di un architettura analoga, ma con in più la presenza della tecnologia Hyper-Threading. Come potete osservare nella prima figura, il processore 1 si occupa dell'esecuzione di un thread (di colore rosso), mentre il processore 2 stà eseguendo un altro thread (di colore giallo). In questa situazione la quantità massima di risorse disponibili per l'esecuzione dei processi è uguale a 6 per ogni ciclo di clock ( 3 per ogni processore). Purtroppo, i due processori fisici non raggiungeranno mai, o solo in pochi casi, il picco massimo di risorse in esecuzione.
FIGURA 5.
La figura 6, dimostra come una CPU fisica possa elaborare contemporaneamente due processi (rosso, e giallo) con l'adozione della tecnologia Hyper-Threading, mentre l'altra CPU esegue parallelamente altri due processi (verde, e blu). Potete notare che vi è una differenza sostanziale nell'occupazione dell'unità di esecuzione disponibili (tra modalità H.T e non H.T.), e che il sistema raggiunge più volte il picco massimo di occupazione delle risorse disponibili. Tutto ciò è possibile grazie all'adozione di due CPU logiche per ogni CPU fisica: praticamente ogni CPU fisica viene divisa in due unità virtuali. Nell'esempio descritto dalla figura, una cpu logica si occupa di elaborare il primo processo, la seconda cpu logica esegue il secondo processo. Contemporaneamente, la seconda CPU fisica viene divisa in due CPU logiche in grado di gestire il terzo e il quarto processo.
FIGURA 6.
Così, un processore fisico Intel diventa due CPU logiche (due stati architetturali), in grado di condividere alcune risorse fisiche di una cpu fisica (cache, registri ecc), e in grado di elaborare le istruzioni in parallelo. La condivisione delle risorse può essere di tipo dinamico, o di tipo statico: nel primo caso, la ripartizione può avvenire in base alla necessità, mentre nel secondo caso, si assiste ad una netta divisione delle risorse.
FIGURA 7.
Menu Sezione/Pagina Precedente/Pagina Successiva/Torna alla Homepage
Sito:megaoverclock.supereva.it