Ho sentito di recente il termine hyper-threading, che cos'è esattamente l'hyper-threading e perché è importante?
Ho sentito di recente il termine hyper-threading, che cos'è esattamente l'hyper-threading e perché è importante?
Risposte:
L'hyper-threading è il punto in cui il tuo processore finge di avere 2 core del processore fisico, ma ne ha solo 1 e qualche junk extra.
Il punto di hyperthreading è che molte volte quando si esegue codice nel processore, ci sono parti del processore che sono inattive. Includendo un set aggiuntivo di registri CPU, il processore può agire come se avesse due core e quindi utilizzare tutte le parti del processore in parallelo. Quando i 2 core devono entrambi utilizzare un componente del processore, ovviamente un core finisce in attesa. Questo è il motivo per cui non può sostituire i processori dual-core e di questo tipo.
L'hyper-threading è dove due thread possono essere eseguiti su un core a thread singolo. Quando un thread sul core in questione è in stallo o in uno stato di arresto, l'hyper-threading consente invece al core di lavorare su un secondo thread.
L'hyper-threading fa pensare al sistema operativo che il processore abbia il doppio del numero di core e spesso produce un miglioramento delle prestazioni, ma solo nella regione del 15-30% complessivo - sebbene in alcune circostanze, potrebbe effettivamente esserci un impatto sulle prestazioni (= <20%).
Attualmente, la maggior parte dei chip Atom e tutti i7 (e chip equivalenti a Xeon) hanno l'hyper-threading, così come alcuni vecchi P4. Nel caso degli Atomi, è un tentativo disperato di migliorare le prestazioni senza aumentare molto il consumo di energia; nel caso di i7, li differenzia dalla gamma di chip i5.
Le complesse attività di elaborazione non trarranno molto beneficio dall'HT, ma alcune attività (semplici, altamente multi-thread), come la codifica video, traggono vantaggio dall'HT. In realtà, non c'è molto in esso ...
Quando un singolo core può fungere da doppio core
L'implementazione di Intel del multi-threading simultaneo è nota come tecnologia Hyper-Threading o tecnologia HT.
La tecnologia HT fa apparire un singolo processore, dal
punto di vista del software , come più processori logici. Ciò consente ai sistemi operativi e alle applicazioni di pianificare più thread per processori logici come
su sistemi multiprocessore.
L'hyperthreading consente a un singolo processore di eseguire due thread contemporaneamente, ma non in tutte le condizioni.
L'hyperthreading non raddoppia le prestazioni di un sistema, ma può aumentare le prestazioni utilizzando meglio le risorse inattive portando a un throughput maggiore per alcuni importanti tipi di carichi di lavoro. Un'applicazione in esecuzione su un processore logico di un core occupato può aspettarsi poco più della metà del throughput che ottiene durante l'esecuzione da sola su un processore non hyperthreaded. I miglioramenti delle prestazioni dell'hyperthreading dipendono fortemente dall'applicazione e alcune applicazioni potrebbero riscontrare un peggioramento delle prestazioni con l'hyperthreading poiché molte risorse del processore (come la cache) sono condivise tra processori logici.
La tecnologia Intel Hyper-Threading rende ogni core può avere due processori logici che condividono la maggior parte delle risorse del core, come cache di memoria e unità funzionali
di Hyperthreading è aumentare il numero di istruzioni indipendenti nella pipeline; sfrutta l'architettura superscalare, in cui più istruzioni operano su dati separati in parallelo
Intel afferma che l'hyper-threading è altamente efficiente perché utilizza risorse che altrimenti sarebbero inattive o sottoutilizzate.
link:
Programmazione multi-core
StackOverflow di Wikipedia
Digital_Edition pg # 8
Per espandere ciò che è già stato detto, l'hyperthreading significa che un singolo core della CPU può mantenere due contesti di esecuzione separati e passare rapidamente da uno all'altro, emulando efficacemente due core a livello hardware.
Ottenete un modesto vantaggio in termini di velocità per carichi di lavoro multi-thread rispetto a un normale core singolo. Tuttavia, non è affatto vicino al vantaggio di avere due core indipendenti. In termini di prestazioni, è meglio pensarlo come un piccolo aumento delle prestazioni multi-thread su un singolo core piuttosto che avere prestazioni che si avvicinano a due core. La dimensione dell'aumento di velocità varia in base al carico di lavoro - in effetti per alcuni carichi di lavoro l'incremento di prestazioni è abbastanza decente.
Il core hyperthreaded ha solo un'unità di esecuzione principale, ma alcune altre parti di una CPU associate alle istruzioni di preparazione per l'elaborazione e il mantenimento di uno stato di esecuzione sono duplicate.
I core del processore hanno una pipeline di istruzioni: una coda di istruzioni future da eseguire, che viene costantemente aggiornata, pronta per la CPU per eseguire l'istruzione in testa a quella coda. Le CPU li usano per ottimizzare la velocità di esecuzione osservando queste istruzioni future e eseguendo alcune semplici pre-elaborazioni di basso livello su di esse, ove possibile (tali ottimizzazioni includono "esecuzione fuori ordine" e "previsione delle filiali").
I core hyperthreaded hanno una doppia pipeline di istruzioni e questo, insieme a un secondo set di registri, è il vantaggio della velocità per i carichi di lavoro multithread. Il passaggio da un contesto di thread all'altro non elimina la pipeline o i registri e la pipeline e i registri per l'altro thread rimangono pronti e "caldi", in modo che possano essere commutati e utilizzati immediatamente.