computer,hardware,software,gaming,notebook,portatile,home theater,htpc,windows,overclock
    Ricerca avanzata
 
pecora nera
 

 categorie categorie del sito
 Schede madri separatore
 Processori separatore
 Bios separatore
 Schede video e monitor separatore
 Chipset separatore
 Memorie RAM separatore
 Storage separatore
 Dissipazione separatore
 Accessori, case e sistemi separatore
 HTPC e alta definizione separatore
 Notebook, netbook e phone separatore
 Sicurezza e reti separatore
 Software e videogame separatore
 Web e gossip separatore
 Overclock e modding separatore
 HowTo separatore
 Elettronica e informatica separatore
 
 Guida al bios separatore
 FAQs separatore
 Windows Vista FAQ & Tips separatore
||
 servizi servizi del sito
 Iscrizione ai servizi separatore
 Iscrizione a Daily Dinox's separatore
 Informazioni newsletter separatore
 Pubblicità su Dinox PC separatore
Tool ricerca per Firefox 2 Tool ricerca per Firefox 2 separatore
Tool ricerca per IE7 Tool ricerca per IE7 separatore
Preferiti Dinox PC nei preferiti separatore
Imposta come homepage Dinox PC come homepage separatore
Links utili
 Aziende ITC separatore
 Partners di Dinox PC separatore
 Mr.Webmaster separatore
 Neo Hardware separatore
 DevSpy.com separatore
 MPEGX.com separatore

www.aruba.it
www.
Intel Pentium 4 3.06 GHz con HyperThreading
Prodotta da Dino Fratelli il 10.12.2002

Problemi dell'HT

Vai a 

Ma purtroppo la tecnologia HyperThreading non significa per forza guadagno di prestazioni. Si pensi, ad esempio, se i due thread, in un determinato istante, richiedono l'uso delle stesse unità. In questo caso le prestazioni possono subire un decremento compreso fra 0 e 10%. Per essere più chiari possiamo fare un esempio concreto: supponiamo di avere un thread che richiede il caricamento di due dati dalla memoria, ne fa la somma e mette il risultato in memoria. Le unità di esecuzione coinvolte sono visibili nella seguente tabella dove in verde abbiamo le unità occupate in un determinato ciclo di clock ed in nero le stesse unità che sono "a spasso".

Unità\Clock 1 2 3 4
ALU        
Load/Store        

Se prendiamo, ora, un altro thread che fa le stesse cose del precedente ma ha già caricato i dati dalla memoria e lo facciamo girare assieme al precedente, il grafico diventa (in giallo l'occupazione delle unità da parte del secondo thread):

Unità\Clock 1 2 3 4
ALU        
Load/Store        

Si vede subito una maggiore occupazione delle unità di esecuzione della CPU con un notevole incremento delle prestazioni. Ma cosa accade se i due thread eseguono le stesse azioni nello stesso istante di clock? Supponiamo di avere un thread esattamente identico al precedente che inizia nello stesso istante di clock (in rosso le collisioni nella richiesta di risorse):

Unità\Clock 1 2 3 4
ALU        
Load/Store        

Adesso i problemi sono nella soluzione delle collisioni. Questo fatto implica spesso di dover svuotare le pipeline per cercare di terminare un thread e poi procedere con il successivo. Dunque la CPU viene costretta ad un lavoro extra con una conseguente perdita di prestazioni.

Queste considerazioni fanno anche capire perché sinora questa tecnologia è stata resa disponibile solo su Server e Workstation e non su sistemi Desktop. Infatti nei sistemi professionali è molto più probabile che la CPU si trovi ad eseguire threads di varia natura che si prestano bene ad essere gestiti da una CPU con HyperThreading.

L'architettura NetBurst del Pentium 4, comunque, cerca di risolvere, almeno in parte i problemi di collisione nella richiesta di una data risorsa di CPU da parte di thread diversi. Questa funzionalità è resa possibile dal fatto che il Pentium 4 è stato dotato di ben tre unità di calcolo intero: due ALU ed una unità per le operazioni di Shift e Rotate.

Unità\Clock 1 2 3 4
ALU 2        
ALU 1        
Load/Store        

A questo punto si potrebbe pensare che aumentando il numero di unità di esecuzione della CPU tutti i problemi possano essere risolti. La cosa è vera in parte dato che questo approccio risulta il più costoso di tutti in termini di dimensioni e costi del die. Altro approccio potrebbe essere quello dell'ottimizzazione del software per l'architettura HyperThreading. Intel sta incoraggiando questo secondo modo di procedere anche rilasciando nuove versioni dei suoi compilatori: qualche giorno fa, infatti, è stata messa online la versione 7 del compilatore C++ di Intel, integrabile nel pacchetto Visual Studio di Microsoft.

Indietro
HyperThreading

Avanti
Sistema di test