Architetture dei processori/Processore superscalare: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Diablo (discussione | contributi)
Nessun oggetto della modifica
Hellisp (discussione | contributi)
mNessun oggetto della modifica
Riga 2:
{{Architettura dei processori}}
 
[[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.]]
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 un elevato numero di transistor allo svolgimento di questo compito, 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 l'unità di decodifica delle istruzioni non mantiene occupate tutte le unità funzionali del processore, le prestazioni ne soffrono grandemente.