Architetture dei processori/Processore superscalare: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Hellisp (discussione | contributi)
Nessun oggetto della modifica
Hellisp (discussione | contributi)
Nessun oggetto della modifica
Riga 1:
[[Image:Schema generale processore superscalare.png|thumb|400px|right|Schema generico di un processore superscalare. Il programma viene caricato come istruzioni seriali, le istruzioni vengono analizzate, riordinate tenendo conto delle dipendenze, eseguite in parallelo, ed riordinate prima di provvedere al salvataggio dei dati in memoria.]]
[[Image:Dual Core Generic.png|thumb|300px|right|Schema generico di una CPU dual core]]
In un processore superscalare sono presenti diverse unità funzionali dello stesso tipo, con dispositivi addizionali per distribuire le istruzioni alle varie unità. Per esempio, sono generalmente presenti numerose unità per il calcolo intero (ALU). Le unità di controllo stabiliscono quali istruzioni possono essere eseguite in parallelo e le inviano alle rispettive unità. Questo compito non è semplice, dato che un'istruzione può richiedere il risultato della precedente come proprio operando, oppure può dover impiegare il dato conservato in un registro usato anche dall'altra istruzione; il risultato può quindi cambiare secondo l'ordine d'esecuzione delle istruzioni. La maggior parte delle CPU moderne dedica moltaun potenzaelevato pernumero svolgeredi questotransistor compitoallo consvolgimento ladi massimaquesto precisione possibilecompito, per permettere al processore di funzionare a pieno regime in modo costante; compito che si è reso sempre più importante con l'aumento del numero delle unità. Mentre le prime CPU superscalari possedevano due ALU ed una FPU, un processore attuale come ad esempio il [[w:PowerPC G5|PowerPC 970]] possiede quattro ALU, due FPU e due unità SIMD. Se il sistemal'unità di distribuzionedecodifica delle istruzioni non mantiene occupate tutte le unità funzionali del processore, le sue prestazioni ne soffrono grandemente.
 
Le architetture superscalari ebbero origine nell'ambiente RISC, dato che questo tipo di design richiede unità funzionali semplici, che possono essere incluse in più esemplari in una unica CPU. Questa è la ragione per cui questi processori erano più veloci dei CISC tra gli anni '80 e gli anni '90. Tuttavia, col progresso della tecnologia, anche design ingombranti come l'[[w:IA-32|IA-32]] poterono essere progettati in modo superscalare.
Riga 6:
Attualmente è impensabile un futuro miglioramento sensibile del sistema di controllo, ponendo di fatto un limite ai miglioramenti prestazionali dei processori superscalari. Il progetto VLIW (very long instruction word) cerca una soluzione scaricando parte del processo di controllo delle istruzioni in fase di scrittura del programma e di compilazione, evitando al processore di doverlo ripetere ad ogni esecuzione del programma.
 
[[Image:Dual Core Generic.png|thumb|300px200px|right|Schema generico di una CPU dual core]]
Un'altra evoluzione dei processori superscalari è l'integrazione di più processori indipendenti (core) in un singolo processori. Questi processori non sono solo dotati di più pipeline la 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.