Architettura della CPU

Fonte: Architettura dei calcolatori Pearson editore

Schema semplificato di una CPU

Schema CPU

Figura 1

Architettura della CPU

La CPU, o Central Processing Unit, costituisce il cervello del computer. La sua funzione primaria è eseguire i programmi memorizzati nella memoria principale, prelevando le istruzioni, esaminandole ed eseguendole sequenzialmente. I componenti della CPU sono interconnessi tramite un bus, che è sia interno che esterno alla CPU per collegare la memoria e i dispositivi di input/output. (figura 1)

Componenti Fondamentali

La CPU è composta da diverse parti distinte, tra cui l’unità di controllo e l’unità aritmetica logica. L’unità di controllo si occupa di prelevare le istruzioni dalla memoria principale e di determinarne il tipo, mentre l’unità aritmetica logica esegue le operazioni necessarie per completare l’esecuzione delle istruzioni, come l’addizione e l’AND.

Memoria Interna della CPU

Oltre alle sue funzioni principali, la CPU contiene anche una piccola memoria ad alta velocità utilizzata per memorizzare risultati temporanei e informazioni di controllo. Questa memoria è costituita da un numero di registri, ciascuno con una funzione e una dimensione predefinita. Tra i registri più importanti vi è il contatore di istruzioni PC, che punta alla successiva istruzione da prelevare per l’esecuzione, e il registro istruzione corrente IR, che contiene l’istruzione in fase di esecuzione.

Organizzazione Interna della CPU

L’organizzazione interna della CPU è essenzialmente costituita da un intricato sistema di componenti che cooperano tra loro per eseguire le operazioni necessarie. Questo sistema include il percorso dati, che è composto da un insieme di registri ad alta velocità, l’unità aritmetica e logica (ALU) e una rete di bus che collega queste varie parti tra loro. Durante il processo di esecuzione delle istruzioni, l’ALU svolge un ruolo centrale nel calcolo, ricevendo dati dai registri di input A e B e quindi eseguendo una serie di operazioni, come ad esempio addizioni e sottrazioni. Il risultato di queste operazioni viene quindi immagazzinato nel registro di output appropriato, pronto per essere utilizzato in fasi successive dell’elaborazione. (vedi figura 2)

Architetture della CPU

Figura 2

Ciclo del Percorso Dati e Velocità del Calcolatore

La distinzione tra istruzioni registro-memoria e registro-registro è fondamentale per la comprensione interna della CPU. Le prime coinvolgono il trasferimento di dati tra la memoria principale e i registri interni, mentre le seconde riguardano operazioni dirette tra i registri stessi. Questo dualismo riflette il modo in cui la CPU gestisce i dati durante l’esecuzione delle istruzioni. Il ciclo del percorso dati è il nucleo delle operazioni di calcolo della CPU, coinvolgendo fasi di accesso ai dati, elaborazione e trasferimento dei risultati. Le ALU specializzate e la loro capacità di operare in parallelo hanno rivoluzionato le prestazioni dei calcolatori moderni, ottimizzando il ciclo del percorso dati per una maggiore efficienza e velocità di elaborazione.

Sequenza di Esecuzione delle Istruzioni

Le istruzioni vengono eseguite seguendo una precisa sequenza di passaggi:

  1. Si preleva la successiva istruzione dalla memoria principale per portarla nell’IR (registro istruzione corrente).
  2. Si modifica il PC (contatore di istruzioni) per farlo puntare all’istruzione seguente.
  3. Si determina il tipo di istruzione appena prelevata.
  4. Se l’istruzione utilizza dati in memoria, si determina la loro posizione.
  5. Se necessario, si preleva la parola di memoria per portarla in un registro della CPU.
  6. Si esegue l’istruzione.
  7. Si torna al punto 1.

Architettura della CPU RISC e CISC

RISC (Reduced Instruction Set Computer) e CISC (Complex Instruction Set Computer) rappresentano due approcci diversi all’architettura della CPU. I sostenitori di RISC sostenevano che un calcolatore dovrebbe avere poche istruzioni semplici, eseguite in un ciclo del percorso dati. Tuttavia, anche se le macchine CISC richiedono più istruzioni per compiere determinate operazioni, Intel è riuscita a implementare concetti simili all’interno dell’architettura CISC, portando a CPU come il processore 486, che incorporava un nucleo RISC per eseguire istruzioni più semplici durante un ciclo del percorso dati.

Principi di Progettazione dei Calcolatori Moderni

Esistono principi di progettazione, talvolta chiamati principi RISC, che i progettisti delle CPU cercano di seguire. Questi principi mirano a eseguire la maggior parte delle istruzioni direttamente tramite hardware, evitando interpretazioni tramite microistruzioni. Questo approccio, insieme a trucchi per massimizzare le prestazioni, come il parallelismo a livello di istruzione, contribuisce a migliorare le prestazioni dei calcolatori moderni.

Pipeline e Ottimizzazione delle Prestazioni

Il concetto di pipeline è fondamentale per l’ottimizzazione delle prestazioni della CPU. Dividendo l’esecuzione di un’istruzione in diverse fasi, che possono essere eseguite in parallelo, si riduce la latenza e si migliora la larghezza di banda del processore. Questo modello permette di bilanciare la latenza con la velocità di esecuzione delle istruzioni, aumentando l’efficienza complessiva del sistema. (Guarda la figura 3)

Pipeline

Figura 3

Durante il primo ciclo di clock, lo stadio S1 sta lavorando all’istruzione 1, prelevandola dalla memoria. Durante il ciclo di clock 2, lo stadio S2 decodifica l’istruzione mentre lo stadio S1 preleva l’istruzione 2. Durante il ciclo 3, lo stadio S3 preleva gli operandi per l’istruzione 1, lo stadio S2 decodifica l’istruzione e lo stadio S1 preleva una terza istruzione. Durante il quarto ciclo di clock, lo stadio S4 esegue l’istruzione, lo stadio S3 preleva gli operandi dell’istruzione due, lo stadio S2 decodifica l’istruzione centrale e si preleva l’istruzione 4. Infine, durante l’ultimo ciclo di clock, lo stadio S5 scrive il risultato dell’istruzione. Mentre gli altri componenti lavorano sulle istruzioni successive, l’uso delle pipeline permette di bilanciare la latenza, ovvero il tempo che un’istruzione impiega per essere elaborata, e  a larghezza di banda del processore.