Che cos'è l'hyper-threading e come funziona?


Risposte:


38

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.


6
+1 dovrebbe aggiungere che l'hyper-threading è specifico per l'implementazione di SMT di Intel, ad esempio il processore SPARC ha una diversa forma di SMT implementata ma con obiettivi simili.
sybreon,

@Earlz stai suggerendo che il processore sta eseguendo due thread dividendo i core in due? o sembra che il parallelismo fatto nella realtà l'hyperthreading stia facendo passare il processore da un thread a un altro?
Doopy Doo,

4
@DoopyDoo neanche. Fondamentalmente il processore ha due "core di esecuzione", che è la pipeline per le istruzioni e simili e ha anche due serie di registri e altre cose essenziali. La differenza tra hyper-threading e dual-core normale è che alcune cose NON sono duplicato. Ad esempio, potrebbe esserci solo un ALU. Quindi, ciò significherebbe che un processore dual-core può aggiungere contemporaneamente due serie separate di numeri, poiché un processore hyper-threading dovrà far attendere uno dei core virtuali fino a quando non viene attivato con ALU. ovviamente, questo è un esempio semplificato
Earlz,

12

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 ...


95% corretto. Se un core normale = A + B, un core hyper-threading è più simile a A + 2 x B. POSSONO eseguire due thread contemporaneamente purché entrambi i thread non abbiano bisogno di A.
Vincent Vancalbergh,

5

Quando un singolo core può fungere da doppio core

è Hyperthreading

In dettaglio

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

Funzione principale

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

inserisci qui la descrizione dell'immagine

Intel Image


3

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.