2009-05-27 20 views

risposta

10

Sì, Nehalem-based processori implementare Hyper-threading.

Il nuovo Nehalem-EX a cui si fa riferimento dispone di 8 core fisici in cui ogni core può essere visto come 2 core logici per un totale di 16 core logici, consentendo l'esecuzione di 16 thread dell'applicazione su un singolo processore.

Questa è la stessa tecnologia utilizzata nei processori Pentium 4 abilitati per Hyper-threading e, più recentemente, nei processori Atom. My Eee PC ha un processore Atom single-core che ha due core logici: il Task Manager di Windows mostrerà due grafici della CPU; uno per ogni nucleo logico.

di UltraSPARC T2 (e T1) anche consentire simultaneous multithreading (di cui implementazione Intel è chiamato diFilettatura - un marchio di Intel) Sun che permette che un singolo nucleo di apparire come più core logici per eseguire più thread una singola nucleo.

L'idea alla base del multithreading simultaneo è di avere più registri per memorizzare lo stato del processore, quindi sembra che ci siano più core in un singolo core, perché ha più set completi di registri hardware.

Mentre le strutture fisiche come ALU e FPU potrebbero non aumentare, disporre di più set di registri per eseguire più thread su un core fisico può portare a un migliore utilizzo delle risorse del processore disponibili. Il core potrebbe non essere stato saturato durante l'esecuzione di un singolo thread, ma l'esecuzione di più potrebbe saturare tutte le unità al massimo potenziale.

Quindi cosa significa per i programmatori?

Significa che avremo ancora bisogno di scrivere software multi-thread: avere un programma che ha solo un singolo thread sarà in grado di utilizzare un solo core logico. Solo avendo un codice multi-threaded ben scritto siamo in grado di sfruttare l'enorme numero di core logici offerti da questi processori.

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

1

L'hyperthreading (marchio INTEL) consente a ogni thread di essere eseguito contemporaneamente. Quindi in questo caso è possibile eseguire i thread delle applicazioni 8X2 contemporaneamente.

Dalla brochure ...

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

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

confrontare questo a singola CPU, sistemi unipolari cui ogni filo must essere programmato e al massimo sarà attivo solo un thread, ovvero uno che esegue l'attività associata alla CPU e gli altri in attesa di un trasferimento I/O.

Inizialmente il threading veniva utilizzato per modellare un insieme di attività simultanee (non un modello non effettivamente eseguito in parallelo) o per produrre l'aspetto di un sistema che era reattivo anche durante l'esecuzione dell'I/O. Ad esempio senza thread, il tuo word processor sembrerebbe stallo durante il salvataggio di un documento.

Per molti anni ho resistito all'idea di avere più thread nelle mie applicazioni desktop - ha complicato il codice e potenzialmente ridotto le prestazioni - pensiamo a tutte quelle operazioni mutex che richiedono il coinvolgimento del kernel del sistema operativo. Con l'avvento dell'esecuzione parallela dei thread, le mie obiezioni sono ridotte, ma credo ancora che più processi piuttosto che più thread in un singolo processo sia un approccio migliore.

Chris

+2

Intendi 8 volte 16 quando scrivi 8X16? Se è così, immagino che sia, come le vecchie CPU HT, due thread per core, cioè 16 thread in totale, non 128. – OregonGhost

+1

Sì. Secondo INTEL significa veramente 16 thread in ogni core. Per ottenere ciò di cui hanno bisogno per garantire che ci sia un sacco di duplicazione della logica sul dado. –

+2

Ovviamente, non lo intendono. Hai citato tu stesso la parte: 16 thread per ** processore **. – MSalters

2

Non si tratta di hyper-threading rinominato, si tratta di hyper-threading (è scritto su questa pagina Web a cui è stato dato il collegamento).

Semplicemente, il processore dice al sistema operativo che ha 16 core, quindi può bilanciare le attività su un numero doppio di core. La tecnologia Hyper-Threading offre alcuni vantaggi perché in alcuni casi due istruzioni diverse da due diversi programmi/thread possono essere eseguite contemporaneamente su un core. Ma di sicuro non darà velocità al 200%. Non ho lavorato su questo processore, ma penso che tu possa ottenere circa il 10% -20% di tempo di CPU aggiuntivo.

1

Spetta al modello di threading di ciascun sistema operativo mappare i thread a livello di sistema operativo a thread a livello di hardware come quelli descritti nella domanda.

I thread logici generati dai linguaggi di programmazione di alto livello utilizzati dai programmatori di applicazioni sono ancora a livello di sistema operativo rimosso dall'hardware, a meno che, naturalmente, non si stia parlando del codice del sistema operativo che esegue la mappatura.

4

Un estremo di un processore multi-thread è il processore di canna. Questa è una forma di SMT in cui il processore divide gli slot tra i vari thread in modo uniforme in modo round robin. Per fare ciò, ha bisogno solo delle copie dei vari registri mentre usa lo stesso insieme di unità di esecuzione. Quindi, in 4 cicli di clock avrebbe inserito il codice da Thread 0-3 nella pipeline.

Si può pensare al resto di questi processori che funzionano in modo simile, più o meno. Anziché distribuire equamente gli slot, è possibile utilizzare solo slot vuoti a causa di rischi di controllo o di dati nel processore.

Ad esempio, quando viene prelevato un ramo, potrebbe essere necessario lavare le istruzioni nella tubazione. Invece di svuotare completamente tutto, alcuni degli slot possono essere utilizzati per altri thread. L'idea è di migliorare le prestazioni non sprecando i cicli della CPU.

Ecco come funzionano più thread nell'hardware.

Problemi correlati