Domanda

Sono stato vedere in letteratura per alcune delle più recenti CPU, come la Intel Xeon "Nehalem-EX" come aventi 8 core e 16 thread. Che cosa stanno parlando? Ho visto menzione di questo in riferimento in modo SPARCS troppo, sicuramente questo non è il tipo di fili logici generati da codice? E 'questo l'hyperthreading ri-chiamato?

È stato utile?

Soluzione

Sì, href="http://en.wikipedia.org/wiki/Intel_Nehalem_(microarchitecture)" rel="nofollow noreferrer"> implementano Hyper-threading .

Il nuovo Nehalem-EX che si riferiscono a ha 8 core fisici dove ciascun core può essere visto come 2 core logici per un totale di 16 core logici, permettendo l'esecuzione di 16 thread dell'applicazione su un singolo processore.

Questa è la stessa tecnologia utilizzata nei processori Pentium 4 Hyper-threading abilitato, e, più recentemente, sui processori Atom. Mio Eee PC ha un processore single-core atomo che ha due core logici - Windows Task Manager mostrerà due grafici CPU; uno per ogni core logico.

UltraSPARC T2 (e T1) permettono anche per multithreading simultaneo (di cui implementazione di Intel si chiama Hyper-Threading - un marchio di Intel), che consente a un singolo nucleo di apparire come più core logici per eseguire più thread su un singolo nucleo.

L'idea approssimativa dietro multithreading simultaneo è di avere più registri per memorizzare lo stato del processore, così sembra che in realtà ci sono nuclei multipli in un singolo nucleo, perché ha più completi insiemi di registri hardware.

Mentre le strutture fisiche come l'ALU e FPU non possono aumentare, con più insiemi di registri per eseguire più thread su un nucleo fisico può portare ad una migliore utilizzazione delle risorse del processore disponibili. Il nucleo può non essere stato saturato quando si esegue un singolo filo, ma eseguendo multipli potrebbe saturare tutte le unità al massimo potenziale.

Quindi, che cosa significa per i programmatori?

Ciò significa che abbiamo ancora bisogno di scrivere software multi-threaded - avente un programma che ha solo un unico filo sarà solo in grado di utilizzare un singolo core logico. Solo avendo codice multi-threaded ben scritto siamo in grado di sfruttare l'enorme numero di core logici questi processori offrono.

Anche con multithreading simultaneo, il codice viene eseguito in un thread per core logico.

Altri suggerimenti

Un estremo di un processore multi-thread è il processore barile. Questa è una forma di SMT il trasformatore divide fessure tra le più thread ugualmente in modo round robin. Per fare questo, è necessario solo copie di vari registri utilizzando la stessa serie di unità di esecuzione. Così, in 4 cicli di clock che sarebbe mettere il codice da Fili 0-3 in cantiere.

Si può pensare di tutto il resto di questi processori che lavorano in modo simile, in misura maggiore o minore. Invece di distribuire slot attorno ugualmente, può solo utilizzare gli slot che sono vuoti a causa di controllo o dati pericoli nel processore.

Per esempio, quando è preso un ramo, possono avere bisogno di essere svuotati istruzioni in cantiere. Invece di vampate di calore completamente tutto, alcuni degli slot possono essere utilizzati per altri thread. L'idea è quella di migliorare le prestazioni non sprecare cicli di CPU.

E 'così che le discussioni più lavorare in hardware.

Non è iper-threading ribattezzata - è hyper-threading (che è scritto su questo Web hai dato link)

.

Semplicemente, processore dice sistema operativo che dispone di 16 core, in modo che possa bilanciare le attività sul numero raddoppiato di core. La tecnologia Hyper-threading dare qualche beneficio siccome in alcuni casi due diverse istruzioni da due diversi programmi / thread possono essere eseguiti su un nucleo simultaneamente. Ma di sicuro non darà il 200% di velocità in su. Non ho lavorato su tale processore, ma penso che si può ottenere circa il 10% -20% di tempo CPU aggiuntiva.

E 'fino a modello di threading di ciascun sistema operativo per mappare le discussioni a livello di sistema operativo per i thread a livello hardware, come quelli descritti nella questione.

I fili logici generati da linguaggi di programmazione di alto livello utilizzati dalle applicazioni programmatori sono ancora un livello di sistema operativo rimosso dal hardware, a meno che naturalmente si sta parlando il codice del sistema operativo che fa la mappatura.

Hyperthreading (marchio di INTEL proposito) permette ad ogni filo di eseguire effettivamente simultaneamente. Quindi, in questo caso è possibile eseguire thread delle applicazioni 8x2, allo stesso tempo.

Dalla brochure ...

Intel Nehalem Architettura costruito sulla tecnologia di processo a 45 nm di Intel unico high-k metal gate

 Up to **8 cores** per processor
 Up to **16 threads per processor** with Intel® Hyper-threading
 2.3 billion transistors

Confronto ciò singola CPU, sistemi unipolari in cui ogni filo deve essere pianificata e al massimo solo filo sarà attivo -. Che si esegue compito CPU bound e gli altri in attesa sul trasferimento I / O

In origine filettatura è stato utilizzato sia per modellare una serie di attività concorrenti (non soggetto non effettivamente eseguito in parallelo) o per produrre l'aspetto di un sistema che è stato sensibile anche mentre si fa di I / O. Per esempio, senza filettatura, il vostro word-processor sembrerebbe in stallo durante il salvataggio di un documento.

Per molti anni ho resistito l'idea di avere più thread in applicazioni desktop - è complicato il codice e potenzialmente riduzione delle prestazioni - pensare a tutte quelle operazioni che richiedono mutex il kernel del sistema operativo di mettersi in gioco. Con l'avvento di esecuzione effettivamente parallela di fili, le obiezioni sono ridotti ma ancora che più processi anziché thread multipli in un singolo processo è un approccio migliore.

Chris

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top