Cosa sono i thread e cosa fanno nel processore?


27

Stavo guardando le statistiche per la CPU Intel Pentium e5700 .

Ha due core e due thread. Cosa fanno i thread per il processore? C'è qualche relazione tra il numero di core e il numero di thread? A quale scopo servono i thread per il sistema in generale?


È il numero di thread che la CPU è in grado di gestire contemporaneamente o alcune statistiche false inventate da Intel.
digitxp

3
Votato per chiudere come IMO questo è troppo generale - mentre sono sempre molto titubante nel dire "solo Google it", lo scopo di Super User (e siti simili) è di rispondere a domande reali, non di essere un dizionario per termini tecnici che possono essere facilmente cercati con risorse più appropriate.
Shinrai,

3
@Shinrai L'ho modificato per renderlo meno generale
Simon Sheehan,

Risposte:


21

Il conteggio dei core è il numero fisico dei core sulla CPU stessa, mentre il conteggio dei thread è il numero di thread delle singole applicazioni che possono essere eseguiti simultaneamente sulla CPU stessa. Senza hardware aggiuntivo o speciale, questo equivale al conteggio dei core. Alcuni processori, tuttavia, avranno più thread di quanti ne abbiano i core.

Alcune CPU Intel hanno una funzione chiamata hyperthreading , che consente a un sistema operativo di vedere il doppio della quantità di core logici per core fisico. Ciò consente al sistema operativo di pianificare ed eseguire il doppio della quantità di thread contemporaneamente, quindi nel caso della CPU a cui ho collegato sopra, ci sono quattro core fisici, ma otto logici (quindi è possibile eseguire otto thread contemporaneamente).

Ogni singola applicazione in esecuzione nel sistema operativo è a thread singolo o multi-thread (considera ogni thread come una "sotto-applicazione"). Le applicazioni a thread singolo richiedono un solo thread per essere eseguite sulla CPU, mentre le applicazioni multi-thread hanno molti sub-thread in esecuzione contemporaneamente. I core aggiuntivi o hyper-threading consentono l'esecuzione simultanea di più thread di applicazioni contemporaneamente.

Ciò consente alle applicazioni multi-thread ( non single-thread) di funzionare molto più velocemente, poiché più di un thread può essere eseguito contemporaneamente sulla CPU.


Solo un'ultima nota, l'hyperthreading migliora le prestazioni di alcune applicazioni multithread appositamente ottimizzate per esso (poiché esiste ancora solo la metà del numero di core fisici in quanto logici). In alcuni casi, le applicazioni possono essere eseguite più velocemente con l'hyperthreading disabilitato (sebbene molte applicazioni ne traggano beneficio). Indipendentemente dall'hyperthreading, un aumento del numero di core fisici andrà sempre a beneficio delle applicazioni multithread.


1
Potresti forse spiegare cosa fanno i thread per il processore? +1 per menzionare l'hyperthreading, tuttavia, poiché è molto comune ora (sembra essere in tutti gli i3)
Simon Sheehan,

Ogni processo ha almeno un thread. Quando il processo inizia a girare sulla CPU, il thread principale viene eseguito fino a quando non viene attivato il suo giro di CPU. Un processo può generare un altro thread e ora due parti dello stesso processo saranno in esecuzione e richiederanno turni di CPU. Tutti i processi sono programmi e con questo meccanismo possono essere eseguite contemporaneamente due cose nello stesso programma. È più veloce rispetto alla creazione di un nuovo processo (ovvero il fork o il caricamento di un nuovo programma) ma meno sicuro. I processi sono isolati l'uno dall'altro, i thread di un processo no.
LawrenceC,

E se avessi creato un programma Java multithread con 50 thread simultanei in esecuzione e lo avessi eseguito su Intel i7-4790K, che ha 4 core e 8 thread. Ciò significa che solo 8 di quei 50 thread nell'applicazione java sono effettivamente in esecuzione contemporaneamente e il resto è in coda? Come funziona
Donato,

@Donato il sistema operativo interrompe qualsiasi thread in esecuzione per consentire agli altri un po 'di tempo per completare il loro lavoro. In un dato momento sulla CPU sono in esecuzione solo 8 thread e ciascun core passa costantemente da un thread all'altro; è utile pensarli come "lavori" (tenendo presente che è possibile assegnare una priorità anche ai lavori). Ogni core farà un po 'di lavoro per un dato thread, e quindi verrà interrotto dall'utilità di pianificazione del sistema operativo per passare a un lavoro diverso, fare un po' di lavoro su quel lavoro, e così via e così quarto, fino al completamento del lavoro.
Breakthrough

@Breakthrough, Re " così puoi eseguire simultaneamente otto thread ", Quali sono i limiti di tale simultaneità rispetto alla vera simultaneità offerta dai singoli core reali? Inoltre, come è possibile che "le applicazioni possano essere eseguite più velocemente con l'hyperthreading disabilitato "?
Pacerier,

9

Un "core" rappresenta un sottoinsieme fisico effettivo di un processore che può da solo gestire l'elaborazione, mentre un "thread" è il numero di processi effettivi che il processore può gestire contemporaneamente. Intel ha sviluppato una tecnologia che chiamano "hyper-threading" questa tecnica consente a un core fisico (che normalmente sarebbe in grado di gestire solo un thread alla volta) per essere ora in grado di gestire due thread contemporaneamente.

Un thread è un'attività che il processore deve gestire, per una semplice spiegazione, puoi presumere che ogni applicazione che apri (come paint, blocco note, media player) abbia il suo thread ... ora questo non significa che puoi solo aprire 2 applicazioni contemporaneamente, semplicemente perché il processore e il sistema operativo funzionano così velocemente nel "passare da un thread" all'altro per gestire le esigenze di ogni applicazione aperta. Sperimenterai prestazioni migliori con più core perché ora puoi distribuire tutto il lavoro a più processori core.

Ad esempio, il mio computer di lavoro ha un i7 in esso. L'i7 ha 4 core fisici, ma ogni core può fare 'hyper-threading' che consente a questo processore di gestire 8 thread contemporaneamente. Quindi, se apro il task manager, vedrò 8 caselle per la scala delle prestazioni del processore.

Una regola generale è che più core fisici sono meglio di più thread. Quindi, se stavi confrontando un processore con 4 core e 4 thread, sarebbe meglio di 2 core 4 thread. Ma più thread può gestire il tuo processore, migliore sarà il suo rendimento durante il multitasking e per alcune applicazioni molto intense (editing video, CAD, CAM, Compressione, Crittografia, ecc.) Utilizzerà di per sé più di un core alla volta.


Cosa intendi con "scatole"?
Pacerier,


-1

facendo clic sui collegamenti in un articolo in IE o Chrome, ogni volta che fai clic su fai una discussione. più fai clic sui link più discussioni. avere una CPU a 4 core hai fino a 8 thread, puoi aprire 8 collegamenti prima di iniziare a riscontrare un problema. ignorando la tua connessione Internet. quindi ogni core copre due di quei collegamenti (thread) che hai aperto. questa è l'idea IMO. se questo ha un senso per nessuno.


No, questo non è ciò che i thread sono nel contesto delle CPU o la domanda che è stata posta.
music2myear il
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.