L’unità di controllo microprogrammata ha una maggiore flessibilità di progetto, al prezzo di un maggiore costo hardware e di una minore velocità. L’unità di controllo cablata è modellata come una Macchina a Stati Finiti (Finite State Machine o FSM). La microprogrammazione fu proposta per la prima volta da M.V. Wilkes nel 1951 (articolo “The Best Way to Design an Automatic Calculating Machine”).
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
- Come funziona una CPU: architettura base di una CPU #0.4.1
- Come funziona una CPU: operazioni fondamentali CPU #0.4.2
- Come funziona una CPU: operazioni sulla ALU #0.4.3
- Come funziona una CPU: accesso in memoria (MAR ed MDR) #0.4.4
- Come funziona una CPU: esecuzione di un’istruzione logica o artitmetica #0.4.5
- Come funziona una CPU: progetto dell’unità di controllo #0.4.6
- Come funziona una CPU: progetto dell’unità di controllo cablata #0.4.6.1
L’insieme di segnali di controllo prodotti dalla UC ad un certo istante viene denominato parola di controllo (Control Word, CW), o microistruzione.
Ciascuna istruzione corrisponde ad una sequenza di microistruzioni.
L’insieme delle microistruzioni (microprogramma) è memorizzato in una Memoria apposita (Memoria di microcodice) in un formato prefissato.
Moltissimi processori CISC includono un’UC microprogrammata.
Architettura e funzionamento
Ecco qui la struttura (semplificata) dell’unità di controllo microprogrammata.
Si esegue una lettura dalla Memoria di microcodice (la quale è una ROM), utilizzando il contenuto del Micro Program Counter (µPC) come indirizzo. Il µPC contiene infatti l’indirizzo della parola (cioè la stringa di bit situata all’interno della Memoria di microcodice) costituita dai bit che devono fungere da segnali di controllo per l’unità di elaborazione (e/o per i moduli esterni alla CPU) in quello specifico stato (nonché periodo di Clock). Ogni parola è costituita da tanti bit quanti sono i segnali di controllo che l’UC deve pilotare. La Memoria di microcodice contiene tante parole quante sono le righe della tabella degli stati dell’UC. È opportuno notare, anche sulla base dell’esempio riportato in figura, che il µPC non sempre s’incrementa ad ogni periodo di Clock! L’UC potrebbe infatti rimanere in uno stesso stato (nell’esempio appena citato tale stato è il 2) per diversi periodi di Clock, magari in attesa di ricevere determinati segnali dall’esterno (come il segnale MFC).
La parola corrispondente viene caricata nel Micro Instruction Register (µIR).
Il contenuto del µIR pilota i segnali di controllo per l’unità di elaborazione e per la logica di generazione dell’indirizzo della successiva microistruzione.
Tale logica genera un nuovo indirizzo, sulla base anche dei segnali provenienti dall’esterno (ad esempio dall’Instruction Register), e fa in modo che tale indirizzo sia corretto (ovvero che corrisponda all’indirizzo della parola i cui bit, nello stato corrente, vanno inviati all’unità di elaborazione come segnali di controllo).
Tutte queste operazioni vengono eseguite in un solo colpo di Clock.
Generazione dell’indirizzo della microistruzione successiva
L’indirizzo della microistruzione successiva può essere (a seconda delle microistruzioni):
- quello successivo;
- un indirizzo fornito dall’esterno (ad esempio l’inizio del microcodice dell’esecuzione di una nuova istruzione);
- un indirizzo di salto (condizionato o incondizionato);
Se non si hanno microistruzioni di salto, l’indirizzo è dato da quello della microistruzione corrente, opportunamente incrementato.
Nel caso generale può essere specificato in vari modi:
- ogni microistruzione ha un campo aggiuntivo, che viene utilizzato dalle microistruzioni di salto per
contenere l’indirizzo di salto; - le microistruzioni di salto hanno un formato diverso da quello delle microistruzioni normali;
Caratteristiche dell’unità di controllo microprogrammata
- Flessibilità:
- modificare un’istruzione o aggiungerne di nuove comporta semplicemente la modifica del contenuto della Memoria di microprogramma. Questo tipo di UC risulta quindi anche più facile da progettare;
- Velocità:
- l’esecuzione di un’istruzione richiede una serie di accessi alla Memoria di microprogramma. Un’UC microprogrammata è quindi in genere più lenta di un’UC cablata (per via della ridotta frequenza del Clock);
- Costo:
- la presenza della Memoria di microprogramma e della relativa logica fa crescere il costo in termini di hardware;
Iscriviti ai nostri gruppi Telegram
Link utili