Hyper Threading Technology
Di
Muddolon Laura
introduzione
Database sempre più complessi, videogiochi
caratterizzati da animazioni realistiche, motori
di ricerca capaci di connettere migliaia di siti
internet, e streaming media eseguiti in tempo
reale, esigono un gran quantitativo di risorse
hardware. Intel, per far fronte a richieste
hardware così esose, ha sviluppato e
proposto una nuova tecnologia: l' Hyper
Threading.
Cos’ è L’Hyper Threading technology?


Pur continuando ad utilizzare l’ attuale
architettura Netburst ,tipica dei processori
Pentium 4 a 32 bit, l’ Hyper Threading
Technology abilita in un solo processore fisico
l’esecuzione di due flussi di codice (detti
THREADS)in simultanea esttamente nella
stessa modalità di esecuzione di un sistema
dual processor (due CPU fisiche):
In questo modo due applicazoni in esecuzione
simultanea vengono gestite in REALE
MULTITASKING
Ma partiamo dalla differenza tra
processi thread e programmi:



I programmi sono costituiti da processi;
I processi sono indipendenti tra loro e e
posseggono dei registri e delle variabili
proprie;
I “threads” sono “processi leggeri che
hanno la caratteristica di condividere le
stesse variabili globali per l’ esecuzione
di una ben determinata mansione;
E inolte...


Un processo può essere composto da
un solo thread o da più threads;
Più threads in un processo possono
essere utilizzati per condividere lo
stesso job e cooperano per un qualche
tipo di attività , mentre processi diversi
sono fondamentalmente scorrelati.
Thread
I thread sono sono processi con con uno
stato molto ridotto (quindi “leggeri”)che
condividono lo spazio di indirizzamento e
tutto ciò che vi è associato, come i descrittori
dei file, le variabili di ambiente e i timer. Ogni
thread ha però il suo program counter, i suoi
registri e la sua stack.Quando un thread si
blocca gli altri thread dello stesso processo
sono comunque in grado di continuare l’
esecuzione.
la seguente figura illustra la
differenza tra thread processo e
programma
Vediemo cosa succede all’ interno della CPU:
CICLO FETCH-DECODE-EXECUTE
Generalmente un
microprocessore
calcola un’ istruzione
alla volta, attuando
una procedura a
passi chiamata ciclo
FETCH-DECODEEXECUTE
Passo 1.
Carica un'istruzione dalla memoria, e assegnala al
registro delle istruzioni (IR).
Passo 2.
Cambia il registro speciale "program counter" con
l'indirizzo della prossima istruzione.
Passo 3.
Determina il tipo di istruzione appena caricata nel registro
delle istruzioni (IR).
Passo 4.
L'istruzione utilizza una parola in memoria? In tal caso
determina il suo indirizzo.
Passo 5.
Se necessario, carica la parola residente in memoria in un
registro della cpu.
Passo 6.
Esegui l'istruzione.
Passo 7.
Torna all'inizio, al 1 passo, ed esegui la prossima
istruzione.
Più cicli di istruzioni compongono un processo, e
quest'ultimo non può essere eseguito nello
stesso istante di un altro processo. E'
fondamentale capire che l'esecuzione di un
processo è unica, e non può avvenire
contemporaneamente con un altro processo; Ciò
significa, che la cpu in un singolo istante esegue
un processo, ma in un arco di tempo maggiore
passa da un processo all'altro dando all'utente
l'impressione di calcolare più processi
contemporaneamente. Tale condizione si chiama
"pseudo-parallelismo" e si riferisce al modo in
cui la cpu alterna l'elaborazione di più processi.
Ma nel caso io avessi a
disposizione due o più cpu in
grado di calcolare
contemporaneamente più cicli
di istruzioni, cosa
succederebbe?
In teoria, potrei raddoppiare la
velocità di esecuzione dei
programmi, poichè il sistema
sarebbe in grado di calcolare
due o più processi nello stesso
arco di tempo. Quindi, nello
stesso istante potrei eseguire il
"PROCESSO 1", il
"PROCESSO 2" e il "PROCESSO
3". In questo caso saremmo in
presenza di un sistema
multiprocessore.
Il modelo Hypep Threading
La tecnologia Hyper-Threading fu realizzata per la
prima volta sulle CPU Intel Xeon MP (Foster MP), ed
allora era nota con il nome di Jackson Technology.
Essa consiste nell'ottenere due processori logici da
una CPU fisica singola; Ciò significa, che le due CPU
virtuali ottenute dalla divisione delle risorse di un
processore singolo, potranno elaborare un maggior
quantitativo di istruzioni in parallelo, aumentando
notevolmente le prestazioni del sistema hardware.
Quando viene utilizzata la funzionalità
Hyper threading siamo in presenza di una
forma di tecnologia SMT (Simultaneous
Multi Threading), e di processori logici, a
differenza dei sistemi SMP (Symmetric
Multi Processing) caratterizzati da due cpu
reali. Naturalmente, non si può
dimenticare che per poter sfruttare i due
processori "virtuali" bisogna utilizzare un
sistema operativo capace di supportarli.
Windows 98SE, Windows Millenium
Edition, e Windows 2000 Professional
non sono stati progettati per poter
utilizzare la tecnologia Hyper-Threading,
mentre Windows XP (nelle versioni
Professional e Home) la supportarno
completamente (A tal proprosito vedi
tabella B). A quest'ultimi sistemi
operativi aggiungiamo Linux, BeOS, Unix
e altri ancora.
Versioni di Windows.
Limite CPU fisiche.
Limite CPU logiche.
Windows Xp Home edition.
1
2
Windows Xp Professional
2
4
Windows 2003 Standard
Server
4
8
Windows 2003 Enterprise
Server
8
16
Windows 2003 Datacenter
Server
32
32
Putroppo, non basta la compatibilità del
sistema operativo con i due o più
processori virtuali, ma bisogna che il
software utilizzi tale capacità. Quindi,
un Word o un Excel sfrutteranno
un'unica CPU, e in un sistema dualprocessor le prestazioni non
aumenteranno di molto.
Ma, il processo di rilevazione della
tecnologia Hyper-Threading, come
avviene?
Durante la fase di "boot" del sistema hardware, il BIOS,
determina il numero di processori logici disponibili in quel
momento, e registra solo il primo dei due (nel caso il sistema
fosse composto da due CPU fisiche, quindi quattro processori
logici) nella tabella MPS (Multi-processors Specifications) per
garantire la compatibilità con i sistemi "legacy" (x esempio
Windows NT). Quest'ultimi rilevano la tabella MPS, e non
riconoscono il secondo processore logico, e la tecnologia HyperThreading. Successivamente, il Bios registra nella tabella ACPI
(Advanced Configuration Power Interface) le informazioni
riguardanti i processori logici presenti, e i sistemi che la
utilizzano possono usufruire della tecnologia Hyper-Threading (x
esempio Windows Xp professional).
COME FUNZIONA L'HYPER THREADING?
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.
In pratica possiamo visualizzarne così il funzionamento :
(Colore bianco = unità non operative; Colore rosso = primo
processo; Colore giallo = secondo processo)
Guardando la figura precedente si può 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 HyperThreading, 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?
Analizziamo il caso di un
architettura superscalare dualprocessor proposto dalla figura
qui accanto, e il caso mostrato
dalla figuraseguente, 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.
Questa figura dimostra
come una CPU fisica
possa elaborare
contemporaneamente
due processi (rosso, e
giallo) con l'adozione
della tecnologia HyperThreading, mentre
l'altra CPU esegue
parallelamente altri due
processi (verde, e blu).
Si può 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.


Così, un processore fisico
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.
LE MODALITA' DI ESECUZIONE DELLA CPU HYPERTHREADING
per ottimizzare l'utilizzo delle risorse, il
processore H.T. (Hyper-Threading) dispone di
ben quattro modalità di esecuzione:
1) Modalità ST0. In questa modalità solo il
processore logico ST0 è attivo, e utilizza
completamente le risorse disponibili. L'altra
CPU logica è disabilitata dall'istruzione HALT.
2) Modalità ST1. In
questa modalità solo
il processore logico
ST1 è attivo, e
utilizza
completamente le
risorse disponibili.
L'altra CPU logica è
disabilitata
dall'istruzione HALT.
3) Modalità MT. Quando un
applicazione richiede
l'esecuzione alla seconda
CPU logica (con una richiesta o
interrupt), quest'ultima diventa
subito operativa, e la
CPU fisica cambia la modalità
di esecuzione in MT (multithreading) utilizzando sia la
CPU ST0, che quella ST1.
4) Modalità Lower Power (L.P).
In questa modalità tutti e due i
processori logici vengono posti
in "idle" dall'istruzione HALT, e
il sistema entra in modalità
Lower Power.

NB: la somma delle due CPU logiche
ST0 e ST1 costituiscono insieme la
vostra CPU fisica.
L'Hyper Threading è simile alla
tecnologia complementare SMP
(Symmetric Multi Processing), ma le
risorse disponibili di una CPU fisica,
sono fruibili contemporaneamente dai
due processori logici; Così le prestazioni
del sistema H.T. non saranno mai uguali
a quelle ottenute con un sistema dual o
multi-processore, poichè in quest'ultimi
casi, ogni CPU ha una quantità di
risorse fruibili ben maggiori
L'abilitazione della tecnologia H.T. in un
sistema SMP (due processori ) può
aumentare le prestazioni complessive
del PC (come evidenziato da alcuni
benchmark). Infatti a rigor di logica, la
tecnologia Hyper-Threading non
ottimizza solo le prestazioni dei sistemi
"single-processor", ma può essere
utilizzata anche per incrementare le
prestazioni dei sistemi multi-processore
(SMP).
Tutto questo quanto costa in
termini di dimensioni del core?
La dimensione del core della CPU aumenta
di circa il 5% con l'implementazione della
tecnologia Hyper-Threading: per far
procedere indipendentemente in parallelo i
processi, le pipeline devono essere in
grado di gestirli separatamente, e per far
ciò all'interno del core della CPU devono
essere aggiunti nuovi transistors.
Come cambia l'architettura Netburst con
l'utilizzo della tecnologia HyperThreading?
Con l'utilizzo della tecnologia Hyper-Threading alcune
unità dell' in order front end vengono condivise dai
due processori logici, è il caso della Trace Cache, del
Microcode ROM, del BTB, e del IA-32 Instruction
Decoder; Altre unità vengono duplicate, come l'IA-32
Instruction TLB, e il BTB. Nella fase "out-of-order
Execution logic" le unità Allocator e Rename logic
sono duplicate, vi sono due RAT (Register Alias
Table), una per ognuno dei processori logici. Dopo
l'allocazione (unità Allocator), e l'operazione di
reindirizzamento (unità Rename logic) fisico, i
processi vengono posti nelle Uop Queues partizionate
opportunamente per ognuno dei due processori logic
Inoltre....
Lo scheduler è condiviso tra i processori
logici, ed è l'unità che invia alla unità di
calcolo (fase di esecuzione) le micro
operazioni quando tutti i dati richiesti sono
disponibili, e soprattutto quando le unità di
esecuzione sono libere. Durante la fase di
esecuzione le unità di calcolo vere e proprie
sono condivise dalle due CPU virtuali. Infine,
nell'ultima fase retirement le risorse
disponibili sono condivise dai processori logici.
In definitiva....
Il concetto di base dell'Hyper Threading
è l'elaborazione indipendente di due
processi all'interno delle pipeline,
ottimizzando l'utilizzo delle risorse, e
aumentando le prestazioni complessive
del sistema.
QUALI PIATTAFORME SUPPORTANO LA TECNOLOGIA HYPERTHREADING?
Quasi tutti i Chipset
Intel disponibili
attualmente nel
mercato supportano
la tecnologia HyperThreading di Intel.
Chipset
Caratteristiche
850E
Supporto memorie
RDRAM PC 1066
845GE
Scheda video integrata
Intel Extreme Graphics,
e supporto memorie
DDR 333/266
845PE
Supporto memorie DDR
333/266
845GV
Scheda video integrata
Intel Extreme Graphics
845G
Supporto memorie DDR
266.
845E
Supporto memorie DDR
200/266
E7205
Supporto memorie DDR
E7501
Supporto memorie
E7505
Supporto memorie
E7500
Supporto memorie
via
Al momento, l'unico Chipset VIA in
grado di supportare la tecnologia
Hyper-Threading è il VIA Apollo P4X400
(Northbridge P4X400, Southbridge
VT8235) con supporto delle memorie
DDR a 400 Mhz.
SIS
Anche SIS
Technology supporta
con i suoi Chipset la
nuova tecnologia
Hyper-Threading e
la seguente tabella
vi mostra quali fra
quelli attuali.
SIS
Chip
set
655
R65
8
648
645
DX
651
M65
0
Versi
one
del
Chip
set
B
B
B
B
B
B
Hyp
er
Thre
adin
g
SI
SI
SI
SI
SI
SI