Nell’articolo di oggi analizzeremo l’architettura base di una CPU.
Negli articoli precedenti abbiamo visto:
- Come funziona una CPU: progetto di circuiti logici #0
- Come funziona una CPU: Flip-Flop SR asincrono #0.1
- Come funziona una CPU: Flip-Flop sincrono #0.1.1
- Come funziona una CPU: Flip-Flop D #0.1.2
- Come funziona una CPU: Flip-Flop Master-Slave #0.1.3
- Come funziona una CPU: Modello di Huffman #0.2
- Come funziona una CPU: progetto di circuiti sequenziali sincroni #0.2.1
- Come funziona una CPU: progetto dei circuiti logici #0.3
- Come funziona una CPU: porte logiche operanti su parole #0.3.1
- Come funziona una CPU: multiplexer #0.3.2
- Come funziona una CPU: decodificatore #0.3.3
- Come funziona una CPU: codificatore (encoder) #0.3.4
- Come funziona una CPU: codificatore prioritario (priority encoder) #0.3.4.1
- Come funziona una CPU: sommatore full-adder #0.3.5
- Come funziona una CPU: sommatore Ripple Carry Adder #0.3.5.1
- Come funziona una CPU: sommatore seriale #0.3.5.2
- Come funziona una CPU: Sommatore con carry-lookahead #0.3.5.3
- Come funziona una CPU: ALU spiegata in modo semplice #0.3.5.4
- Come funziona una CPU: comparatore #0.3.5.5
- Come funziona una CPU: registro a m-bit #0.3.6
- Come funziona una CPU: registro a scalamento (Shift Register) #0.3.6.1
- Come funziona una CPU: contatore semplice #0.3.7
- Come funziona una CPU: contatore asincrono (ripple counter) #0.3.7.1
- Come funziona una CPU: contatore sincrono #0.3.7.2
- Come funziona una CPU: bus spiegato in modo semplice #0.3.8
- Come funziona una CPU: introduzione alla cpu #0.4
Da cosa è composta questa architettura?
Contiene dei registri che non appartengono né alla categoria dei registri utenti né a quella dei registri speciali, sono più che altro dei registri di supporto. L’UC pilota tutti questi moduli (i registri, la ALU e l’unità di elaborazione) facendo in modo che la singola istruzione venga eseguita correttamente. L’unità di controllo deve attivare i registri in modo da eseguire l’istruzione che in tal momento è stata caricata, quindi riceve in ingresso alcune informazioni, ad esempio dall’Instruction Register, per sapere qual è l’istruzione in corso di esecuzione.
L’UC è quindi in grado di generare dei segnali all’esterno che vanno verso vari componenti (anche al di fuori della CPU), per consentire agli altri moduli di riconoscere il tipo d’istruzione da eseguire. Il segnale Zero, prodotto in output dalla ALU, fornisce informazioni circa il risultato di un’operazione di sottrazione tra 2 registri. Esso è pari ad 1 se tale risultato è nullo, il ché corrisponde ad aver operato con 2 registri uguali.
Qui in basso vi è uno schema di una architettura base per la CPU:
Questo segnale risulta particolarmente utile a seguito della richiesta di esecuzione di un’istruzione di salto condizionato come la ”bne”(branch on not equal) e la ”beq” (branch on equal). Infatti, questo genere di istruzioni richiede che venga effettuato un confronto tra i due registri operandi e che si salti ad un dato indirizzo in Memoria solo se tali registri risultano diversi (bne) o uguali (beq).
Pertanto il segnale Zero, una volta prodotto, giunge agli ingressi dell’UC la quale valuta se occorre aggiornare il Program Counter (PC) per saltare ad un nuovo indirizzo o meno. Nel caso in cui l’istruzione di salto possa essere eseguita, l’UC deve anche reperire dall’Instruction Register (IR) il valore dell’immediato (della costante) che, sommato al corrente valore del PC, consente di saltare all’indirizzo richiesto.
N.B. Il Program Counter è un registro contenente l’indirizzo in Memoria dell’istruzione in attuale corso d’esecuzione. Prima di poter eseguire una qualsiasi istruzione, bisogna reperirne l’indirizzo aggiornando il contenuto del PC.
Iscriviti ai nostri gruppi Telegram
Link utili