Ho sentito i termini hyper-threading e multi-threading, ma qual è esattamente la differenza tra loro? Che tipo di processore Intel li utilizza?
Ho sentito i termini hyper-threading e multi-threading, ma qual è esattamente la differenza tra loro? Che tipo di processore Intel li utilizza?
Risposte:
Il multithreading si riferisce all'attività generale di eseguire più di un thread di esecuzione all'interno di un sistema operativo. Il multithreading è più genericamente chiamato "multiprocessing", che può includere più processi di sistema (un semplice esempio su Windows potrebbe essere, ad esempio, l'esecuzione di Internet Explorer e Microsoft Word contemporaneamente), oppure può consistere in un processo che ha più thread all'interno esso.
Il multithreading (o dovrei dire multiprocessing) è un concetto di software . Praticamente qualsiasi CPU completa di Turing può eseguire il multithreading, anche se il computer ha un solo core CPU e quel core non supporta l'hyperthreading. Al fine di supportare il multiprocessing, la CPU intercalerà l' esecuzione di diversi thread di esecuzione, eseguendo uno, quindi un altro, quindi un altro, in cui il sistema operativo suddividerà il tempo disponibile in "sezioni" e fornirà un tempo approssimativamente uguale a ogni thread (il tempo non deve essere uguale, ma in genere è così che viene fatto a meno che un processo non richieda una priorità più alta).
Si noti che, ogni volta che ci sono più thread di esecuzione del software che tentano di eseguire in un dato momento di quanti siano i thread di esecuzione hardware (simultanei) disponibili , questi thread del software saranno "interfogliati" tra i core disponibili. Nel caso di un "uniprocessore" (un core della CPU senza hyperthreading), se hai più di un thread software, saranno sempreessere intercalato. Se si dispone di una CPU a 4 core con hyperthreading, si tratta di 8 "thread hardware", il che significa che la CPU può eseguire 8 thread di esecuzione simultanei nello stesso istante, quindi se si avessero 8 thread di software che cercavano di funzionare, potevano essere eseguiti contemporaneamente ; ma se avessi 9 thread software, uno dei thread hardware dovrebbe intercalare una coppia di thread (la coppia esatta di thread scelti dipenderà dall'implementazione dello scheduler del sistema operativo).
L'hyperthreading, d'altra parte, si riferisce a una tecnologia hardware molto specifica creata da Intel, che consente a un singolo core del processore di intercalare più thread di esecuzione in modo più efficiente. In altre parole, una CPU con hyperthreading fornirà prestazioni leggermente superiori a una CPU che è altrimenti uguale ma senza hyperthreading, poiché la CPU hyperthreaded sarà in grado di bilanciare contemporaneamente due (a volte di più, ma l'hyperthreading è in genere 2- modo) thread di esecuzione su un dato core.
Tuttavia, l'hyperthreading è strettamente più lento rispetto ad avere core fisici completamente separati, perché ci sono alcuni tipi di operazioni che possono interrompere i vantaggi prestazionali dell'hyperthreading, mentre ci sono meno operazioni che possono causare un tale evento con core completamente separati.
Prendi l'esempio seguente, in cui si presume che "1 core" esegua esattamente lo stesso in tutti gli esempi:
Esempio 1: 2 core, nessun hyperthreading.
Esempio 2: 4 core, nessun hyperthreading.
Esempio 3: 2 core con hyperthreading.
Esempio 4: 4 core con hyperthreading.
In questo caso, l'esempio 4 sarà sempre il più veloce. L'Esempio 2 a volte potrebbe essere più veloce dell'esempio 4, su carichi di lavoro estremamente scarsi per sfruttare le ottimizzazioni dell'hyperthreading.
L'Esempio 3, d'altra parte, a volte potrebbe, sui carichi di lavoro in cui l'hyperthreading è più vantaggioso, essere quasi altrettanto veloce dell'Esempio 2, anche se ha la metà del numero di core fisici.
L'esempio 1 ovviamente, sarà il più lento di tutti gli esempi, ma a volte potrebbe essere più veloce dell'esempio 3, quando si esegue un carico di lavoro scarsamente adatto all'hyperthreading.
Nei benchmark del mondo reale con le moderne CPU Intel, in genere troviamo che l'hyperthreading comporta, in termini molto generali, un miglioramento delle prestazioni dal 20% al 40% rispetto a nessun hyperthreading (con il caso "no hyperthreading" confrontato disabilitando la funzionalità hyperthreading nella BIOS). Occasionalmente ci saranno carichi di lavoro in cui la disabilitazione dell'hyperthreading mostra un vantaggio in termini di prestazioni , ma questi carichi di lavoro possono essere rari nell'uso effettivo. Ma, se potessi scegliere tra 4 core con hyperthreading o 8 core, supponendo che ogni core stesso abbia le stesse prestazioni, sceglierei sempre la CPU 8 core.
Multithreading è un termine per l'elaborazione parallela a livello di sistema operativo. Il processore non ha nulla a che fare con il multithreading.
L'hyperthreading è un concetto Intel che implementa l'elaborazione "simultanea" di più thread in un singolo core del processore. Il sistema operativo vede due core del processore, sebbene sia presente un solo core fisico.