La microprogrammazione è una tecnica utilizzata per l’implementazione dell’unità di controllo della CPU, il dispositivo in grado di controllare l’esecuzione di istruzioni in linguaggio macchina, di interpretare ogni istruzione in linguaggio macchina tramite una sequenza di micro-operazioni eseguite direttamente dall’hardware, e di generare nella giusta sequenza i segnali di controllo che provocano l’esecuzione di ogni operazione elementare.
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
- Come funziona una CPU: progetto dell’unità di controllo microprogrammata #0.4.6.2
Nel caso più semplice (microprogrammazione orizzontale), le microistruzioni contengono un bit per ogni segnale di controllo.
Si ottiene così massima velocità di esecuzione: i segnali di controllo sono pilotati direttamente, senza bisogno di manipolazioni.
Esistono tuttavia alcune controindicazioni:
- la lunghezza delle microistruzioni può divenire eccessiva;
- talune combinazioni di valori dei segnali di controllo possono non verificarsi mai;
La microprogrammazione orizzontale viene utilizzata quando le microistruzioni sono composte da un numero elevato di bit e quindi possono essere svolti molti compiti in parallelo, generando svariati segnali di controllo contemporaneamente;
In questo caso ogni microistruzione memorizza in maniera codificata le informazioni da inviare ai segnali di controllo.
I segnali di controllo sono suddivisi in gruppi in base alla loro compatibilità. Due segnali si dicono compatibili se non vengono mai attivati insieme.
Ogni gruppo di segnali di controllo corrisponde ad un gruppo di bit (Control Field) della singola microistruzione, il cui valore è codificato.
Il valore di ciascun segnale di controllo viene quindi prodotto dalle uscite di un Decoder, pilotato dai bit della microistruzione.
In questo modo le microistruzioni hanno quindi una lunghezza più ridotta, in quanto per l’i-esimo gruppo (composto da ni segnali) si memorizzano log2 n_i bit. Ne risulta un’unità di controllo di dimensioni ridotte (per via delle ridotte dimensioni della Memoria di microcodice) ma più lenta (per via del ritardo associato a ciascun Decoder). Questa soluzione progettistica è adottata di frequente!
La microprogrammazione verticale si utilizza quando le microistruzioni presentano un numero limitato di bit. La microprogrammazione verticale conduce ad una minore velocità di funzionamento, in quanto, diminuendo il numero di bit, si ha bisogno di più microistruzioni per specificare tutte le operazioni svolte con una sola microistruzione “orizzontale”.
Iscriviti ai nostri gruppi Telegram
Link utili