Architetture dei processori/Processore superscalare: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Hellisp (discussione | contributi)
mNessun oggetto della modifica
Hellisp (discussione | contributi)
mNessun oggetto della modifica
Riga 9:
 
[[Image:Dual Core Generic.png|thumb|250px|right|Schema generico di una CPU dual core]]
Un'altra evoluzione dei processori superscalari è l'integrazione di più processori indipendenti (core) in un singolo processoriprocessore. Questi processori non sono solo dotati di più pipeline lama le varie pipeline sono totalmente separate e quindi sono in grado di eseguire programmi diversi, cosa non possibile nelle cpu classiche. I processori [[w:Core Duo|Core Duo]] dell'[[w:intel|Intel]] per esempio sono di questo tipo. Un'approccio intermedio prevede una separazione logica e non fisica delle pipeline con le pipeline separate ma i circuiti di controllo e gestione ancora in comune. Questo permette di eseguire più [[w:Processo (informatica)|tread]] in parallelo senza dover duplicare tutte le unità funzionali di un processore e quindi risparmiando molti transistor rispetto a una soluzione pura. esempi di questa soluzione sono la tecnologia [[w:Hyper-Threading|Hyper-Threading]]. Il già citato Core Duo è dotato di due core con supporto dell'Hiper_threading e quindi è in grado di eseguire fino a quattro tread simultaneamente.
 
La realizzazione di processori con più core è una soluzione migliore rispetto alla semplice aggiunta di nuove unità pipeline dato che ogni nuova pipeline aumenta la possibilità di eseguire istruzioni che siano in conflitto con altre e quindi spingersi oltre quattro pipeline risulta spesso sconveniente. Eseguendo più tread in parallelo si eliminano i problemi dati che i tread sono separati e quindi le varie pipeline non possono entrare in conflitto tra di loro. Questi processori però costringono i programmatori a realizzare programmi paralleli per fruttare al meglio i processori moderni e la realizzazione di programmi paralleli non è semplice ed per alcuni algoritmi non esistono nemmeno metodi per renderli paralleli in modo efficiente.