# Microprocessore superscalare

L'architettura neo-scalare contemporanea (in ambiente anglosassone si utilizza il prefisso super-) permette il calcolo parallelo su un singolo chip. Ha prestazioni molto superiori a parità di frequenza di clock. Le unità centrali di elaborazione più versatili prodotte dal 1998 hanno in effetti proprio questa architettura.

## Descrizione

I processori più semplici, come lo Z80 sono scalari: compiono un'operazione alla volta sul numero di operandi di questa. In un processore vettoriale invece, una singola istruzione era applicata su di un vettore, formato da più dati raggruppati. In questo modo, un'applicazione che deve eseguire un'operazione su una grande quantità di dati è svolta con molta più rapidità. Un processore superscalare è una forma intermedia: istruzioni diverse trattano i propri operandi contemporaneamente, su diverse unità hardware all'interno dello stesso chip. In questo modo nello stesso ciclo di clock possono essere eseguite più istruzioni.
Questa caratteristica però non è sufficiente perché una CPU sia superscalare: una CPU con una pipeline dati semplice, come quella del 6502, che può quindi caricare un'istruzione, eseguirne un'altra e immagazzinare il risultato di quella ancora precedente non è necessariamente superscalare, pur accelerando la CPU rispetto a sistemi puramente seriali.
In una CPU 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 (unità aritmetica e logica). Le unità di controllo stabiliscono quali istruzioni possono essere eseguite in parallelo e le inviano alle rispettive unità. Questo compito non è facile, dato che un'istruzione può richiedere il risultato della precedente come proprio operando, o 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 molta potenza per svolgere questo compito con la massima precisione possibile, 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 e una FPU, sui processori più moderni come ad esempio il PowerPC 970 possiede quattro ALU, due FPU e due unità SIMD. Se il sistema di distribuzione 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 un'unica CPU. Questa è la ragione per cui questi processori erano più veloci dei CISC tra gli anni ottanta e gli anni novanta. Tuttavia, col progresso della tecnologia, anche design ingombranti come l'IA-32 poterono essere progettati in modo superscalare.
Attualmente è impensabile un futuro miglioramento sensibile del sistema di controllo, ponendo di fatto un limite ai miglioramenti di prestazione dei processori superscalari. Il progetto VLIW (Very Long Istruction 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.