Microprocessore superscalare

Da Wikipedia, l'enciclopedia libera.

Un microprocessore con architettura superscalare supporta il calcolo parallelo su un singolo chip, permettendo prestazioni molto superiori a parità di clock rispetto ad una CPU ordinaria. Questa caratteristica è posseduta più o meno da tutte le CPU general purpose prodotte dal 1998.

I microprocessori più semplici sono scalari: compiono una operazione alla volta sul numero di operandi di questa. Invece, in un processore vettoriale, una singola istruzione viene applicata su di un vettore, formato da più dati raggruppati. In questo modo, una applicazione che deve eseguire una certa operazione su una grande quantità di dati viene svolta con molta più rapidità. Un processore superscalare è una forma intermedia tra i due: istruzioni diverse trattano i propri operandi contemporaneamente, su diverse unità hardware all'interno dello stesso chip. In questo modo più istruzioni possono essere eseguite nello stesso ciclo di clock.

Il semplice fatto di eseguire più istruzioni nello stesso ciclo di clock non rende una CPU superscalare: una CPU con una pipeline 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 ai 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 (definite ALU). 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, 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 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 ed una FPU, un processore attuale 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 una 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 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.

Voci correlate[modifica | modifica sorgente]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica