Unità di controllo (informatica): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m ortografia |
No2 (discussione | contributi) m →Micro-linguaggio: typo |
||
Riga 15:
=== Micro-linguaggio ===
Guardando più attentamente è possibile osservare che il compito dell'unità di controllo è simile a quello di un microprocessore ovvero effettuare delle scelte a seconda degli input e reagire di conseguenza (sequenzializzare le micro-operazioni ecc). È possibile quindi costruire un '''linguaggio di micro-programmazione'''. Sostanzialmente un segnale di controllo è una linea che varia tra 0 e 1 a seconda se il segnale deve essere spento o attivo. Ogni microistruzione deve quindi associare il valore 1 ai segnali di controllo richiesti dalle micro-operazioni la cui esecuzione è prevista in tale microistruzione. Per ogni codice operativo previsto si deve definire una sequenza di micro-operazioni, ossia un micro-programma. I micro-programmi prendono il nome di [[firmware]], sottolineando la loro appartenenza sia all'hardware sia al software. Il ''firmware'' è memorizzato in una memoria interna chiamata ''memoria di controllo''. Ovviamente anche in questo caso occorre effettuare delle scelte rivolte all'efficienza e al numero di microprogrammi richiesti. Nei moderni microprocessori vi sono molti registri e controlli da eseguire, per cui l'unica soluzione è quella di implementare microistruzioni composte da molti [[
* la ''microprogrammazione verticale'' dove ogni microistruzione specifica poche microoperazioni da eseguire. In questo caso le microistruzioni hanno pochi bit, dove n segnali di controllo sono rappresentati da log2 n bit, ed è quindi necessaria una decodifica successiva dell'istruzione per generare i segnali di controllo
* o una ''microprogrammazione orizzontale'' dove si possono specificare molti segnali di controllo in parallelo e avere tanti bit quanti sono i segnali di controllo da generare. In questo caso è possibile effettuare un elevato parallelismo, e la codifica dei segnali è nulla o limitata.
Si può tuttavia implementare una via di mezzo, dividendo le microistruzioni in gruppi disgiunti, ottenendo quindi un ragionevole parallelismo con un numero non enorme di bit.
== CAR e CBR ==
Si definisce ''CAR'' il registro indirizzi di controllo (''Control Address register''), e ''CBR'' il registro buffer di controllo (''Control Buffer Register''). Un'unità di controllo microprogrammata deve effettuare due operazioni fondamentali nell'unità temporale di riferimento che è il clock. Prelievo di una microistruzione attraverso la determinazione dell’indirizzo della memoria di controllo al quale si deve accedere (e quindi sequenzializzazione delle microistruzioni) e l'esecuzione della microistruzione. L'unità di controllo opera quindi nel seguente modo:
|